クラウドとコンテナの基礎
KubernetesのDeploymentで、Podのテンプレートのコンテナイメージを新しい版に変更した。既定の更新方式(RollingUpdate)で起きることとして、正しいものはどれか。
- A新しいReplicaSetを作り、新しい版のPodを増やしながら古い版のPodを減らす。古いReplicaSetは、ロールバック用にPodが0で残る
- B動いているPodの中のコンテナイメージが、Podを作り直さずにその場で新しい版に入れ替えられるので、PodのIPアドレスも名前も変わらない
- C古い版のPodをすべて同時に削除してから、新しい版のPodをまとめて作るので、更新の間は一時的にサービスが止まる
答えと解説を見る
正解:A. 新しいReplicaSetを作り、新しい版のPodを増やしながら古い版のPodを減らす。古いReplicaSetは、ロールバック用にPodが0で残る
Deploymentは、Podのテンプレートが変わると、新しいテンプレートのReplicaSetを作り、新しいPodが準備できたことを確かめながら、古いReplicaSetのPodを少しずつ減らします。そのため、更新の間も一定の数のPodが要求を処理し続けます。古いReplicaSetはPodが0の状態で残されるので、kubectl rollout undo で前の版に戻せます。全部のPodを先に消してから作り直す方式は Recreate で、明示的に指定したときに使われます。
- A. 正しい。ReplicaSetを切り替えながら、Podを少しずつ入れ替えます。
- B. Podの中のコンテナイメージをその場で入れ替えることはありません。新しいPodが作られ、IPアドレスも変わります。
- C. これは Recreate という方式の動作です。既定の RollingUpdate では、Podを少しずつ入れ替えます。