Kubernetes 入門コース 解説

Deploymentで理解する、望む状態を保つ仕組み

DeploymentはPodを直接操作する道具ではありません。利用者が宣言した状態と実際の状態の差を、コントローラが繰り返し埋めるための入口です。

TL;DR

  1. DeploymentはPodテンプレートと望む台数を宣言する。
  2. ReplicaSetが台数を維持し、Deploymentが更新世代を管理する。
  3. 更新や障害時はPodを手で直す前に、宣言と状態差を確認する。

01宣言した状態が出発点

宣言ファイル→API Server→コントローラ→実際のPodの循環

宣言ファイル→API Server→コントローラ→実際のPodの循環
宣言した状態が出発点を図解

DeploymentのspecにはPodテンプレートと必要な状態を置きます。Kubernetesは一度の命令を実行して終わりではなく、望む状態と実際の状態を継続して照合します。

押さえること:DeploymentはPodテンプレートと望む台数を宣言する。

02ReplicaSetが台数を守る

目標3台・実際2台を検知して補充するReplicaSet

目標3台・実際2台を検知して補充するReplicaSet
ReplicaSetが台数を守るを図解

Deploymentの配下にはReplicaSetがあり、Podが落ちれば不足分を作ろうとします。利用者は通常ReplicaSetを単体で操作せず、Deploymentという上位の意図を更新します。

押さえること:ReplicaSetが台数を維持し、Deploymentが更新世代を管理する。

03更新は世代を切り替える

旧ReplicaSetと新ReplicaSetが入れ替わるローリング更新

旧ReplicaSetと新ReplicaSetが入れ替わるローリング更新
更新は世代を切り替えるを図解

イメージなどPodテンプレートが変わると、Deploymentは新しいReplicaSetを作り、古いReplicaSetから新しいReplicaSetへ段階的に移します。ロールバックは以前の世代へ戻す操作です。

押さえること:更新や障害時はPodを手で直す前に、宣言と状態差を確認する。

結論

  1. DeploymentはPodテンプレートと望む台数を宣言する。
  2. ReplicaSetが台数を維持し、Deploymentが更新世代を管理する。
  3. 更新や障害時はPodを手で直す前に、宣言と状態差を確認する。