導入
Kubernetes の核心は「あるべき状態(desired state)を宣言すると、Kubernetes が現実をそこへ合わせ続けてくれる」という考え方にあります。手順を細かく命令するのではなく、結果だけを伝えるのが特徴です。
説明
Kubernetes は Google が社内の大規模コンテナ運用の経験をもとに公開し、いまは中立団体 CNCF(Cloud Native Computing Foundation) が管理するオープンソースソフトウェアです。
その中心思想が 宣言的(declarative) な運用です。ふつうの操作は 命令的(imperative)、つまり「手順」を1つずつ指示します。Kubernetes では逆に、結果(あるべき状態) を YAML というテキストで宣言します。
| 命令的(手順を指示) | 宣言的(結果を宣言) | |
|---|---|---|
| 言い方 | 「コンテナを起動せよ→次にこれを…」 | 「Web を3個動かした状態にして」 |
| 例え | 料理の作り方を逐一指示 | 「完成写真」を渡す |
| ずれたら | 人間が気づいて直す | Kubernetes が自動で直す |
宣言された「あるべき状態」と「現実」を突き合わせ、差があれば埋めにいく――この繰り返しを リコンサイル(reconcile/調整)ループ と呼びます。
flowchart LR
D["あるべき状態<br/>(YAMLで宣言)<br/>例: Webを3個"] --> C{現実と一致?}
A["現実の状態<br/>例: いまWebは2個"] --> C
C -- ずれている --> F[差を埋める<br/>1個追加で起動]
F --> A
C -- 一致 --> W[そのまま維持<br/>監視を続ける]
W --> C
この仕組みから、Kubernetes の代表的な性質が生まれます。
- 自己修復(self-healing) … コンテナやサーバーが落ちて数が減れば、自動で立て直して数を戻す。
- 水平スケール(scaling) … 宣言する個数を変えるだけで、コンテナを増減できる。
- 無停止デプロイ(rolling update) … 新旧を少しずつ入れ替え、サービスを止めずに更新する。
- サービスディスカバリ(service discovery) … 個々のコンテナの居場所(IP)が変わっても、名前で相手を見つけて通信できる。
「手順」ではなく「あるべき姿」を預ける――これが Kubernetes の一貫した考え方です。