本文へスキップ
BecomeCoder

Kubernetesコース · 第1章 コンテナからKubernetesへ ― 全体像をつかむ · レッスン1

なぜオーケストレーションが必要か ― Dockerだけでは足りない

ローカル実施

導入

コンテナを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 を学ぶ出発点です。