クラウドとコンテナの基礎
Kubernetesで、replicas: 3 を指定したDeploymentのPodが3つ動いている。このうち1つのPodを kubectl delete pod で削除したときに起きることとして、正しいものはどれか。
- ADeploymentの設定も replicas: 2 に書き換わり、Podは2つのまま動き続ける
- B実際の数が指定した3に足りなくなったことをコントローラが検知し、新しいPodを1つ作る
- CDeploymentに属するほかの2つのPodも削除され、Deployment全体が停止する
答えと解説を見る
正解:B. 実際の数が指定した3に足りなくなったことをコントローラが検知し、新しいPodを1つ作る
Kubernetesでは、利用者は「Podを3つ動かす」というあるべき状態を宣言し、コントローラが実際の状態をくり返し観察して、違いがあれば宣言に近づけるように操作します(リコンサイル)。Podを1つ削除すると実際の数が2になるので、ReplicaSetのコントローラが新しいPodを作って3に戻します。ノードの故障でPodが失われた場合も、同じ仕組みでほかのノードにPodが作り直されます。Podの数を本当に減らしたいときは、Podを消すのではなく、Deploymentの replicas を変更します。
- A. Podを削除しても、Deploymentに宣言した replicas は変わりません。宣言との違いを埋めるようにPodが作られます。
- B. 正しい。宣言した状態と実際の状態の違いを、コントローラが埋めます。
- C. 削除したPod以外には影響しません。Deploymentを削除しない限り、ほかのPodは動き続けます。