導入
コンテナを1個動かすだけなら docker run で十分ですが、本番サービスは「何十個ものコンテナを複数サーバーに配り、落ちたら再起動し、混んだら増やし、無停止で更新する」までが必要で、これを人手でやり続けるのは現実的に不可能です。この面倒を機械に肩代わりさせる仕組みが オーケストレーション です。
説明
コンテナ(container) とは、アプリと必要な部品一式をひとつの箱に詰め、どのサーバーでも同じように動かせるようにした技術です(Docker が有名)。開発中は箱を1個動かせば済みます。
ところが本番では、こんな運用が待っています。
- 何十個ものコンテナを、複数台のサーバーに過不足なく配置する。
- コンテナやサーバーが落ちたら、自動で別の場所に立て直す。
- アクセスが増えたらコンテナの数を増やし、減ったら減らす。
- 新しいバージョンへ、サービスを止めずに入れ替える。
これを人間が手作業(どのサーバーが空いているか探して docker run、死活を目視、深夜に手動で入れ替え…)でやると、すぐに破綻します。オーケストレーション(orchestration) とは、オーケストラの指揮者のように、大量のコンテナの配置・再起動・増減・更新を自動で取り仕切ることです。その代表格が Kubernetes です。
graph TB
subgraph manual["手動運用(Dockerだけ)"]
H[運用担当者]
H -. どこが空いてる? .-> M1[サーバー1]
H -. 手でrun .-> M2[サーバー2]
H -. 落ちたら深夜に対応 .-> M3[サーバー3]
end
subgraph auto["自動運用(Kubernetes)"]
K[Kubernetes]
K -- 自動配置 --> A1[サーバー1]
K -- 自動再起動 --> A2[サーバー2]
K -- 自動増減 --> A3[サーバー3]
end
左の手動運用は、担当者が全部を見張り続けねばならず、台数が増えるほど回りません。右のように「あるべき状態」を Kubernetes に預ければ、配置も復旧も増減も機械が休みなく面倒を見ます。これが Kubernetes を学ぶ出発点です。