コンテナオーケストレーターとは?大規模なコンテナ管理
コンテナオーケストレーターとは、マシンのフリート全体にわたってコンテナをスケジューリング、スケーリング、ネットワーキング、自己修復するシステムであり、それらを手作業で行う必要をなくします。
1台のホスト上の1つのコンテナはシンプルです。多数のホスト上で多数のコンテナを動かすこと - 配置し、障害を再起動し、トラフィックを分散し、アップデートをロールアウトすること - は、困難で反復的な作業です。オーケストレーターはそのすべてを自動化し、マシンの山を、宣言的にデプロイする単一のキャパシティプールへと変えます。
オーケストレーターが担うこと
- スケジューリング - どのホストが各コンテナを実行するかを決定する。
- スケーリング - 需要に合わせて replica を追加または削除する。
- 自己修復 - 障害の起きたコンテナを再起動または再スケジュールする。
- コンテナ間のネットワーキングとサービスディスカバリ。
- ダウンタイムなしの rolling update と rollback。
宣言的な制御
あなたは望ましい状態を宣言し、オーケストレーターはそれに向かって継続的にリコンサイルします。これは script を実行するのとは根本的に異なります - マシンが故障したり負荷が移動しても、システムは収束し続けます。
一般的な選択肢
Kubernetes は事実上の標準です。他には Docker Swarm(よりシンプルで、今では利用は少なめ)、HashiCorp Nomad、そして完全な Kubernetes API なしにオーケストレーションを行う ECS のようなマネージドクラウドサービスがあります。
オーケストレーターが必要になるとき
単一の小さなサービスにはオーケストレーターは過剰です - マネージドプラットフォームか数個のコンテナで十分です。オーケストレーターは、多数のサービス、スケールの必要性、または厳格な uptime 要件が生じて初めて、その複雑さに見合う価値を発揮します。
オーケストレーターと CI/CD
CI はイメージを build し、オーケストレーターはそれらを実行します。CD の pipeline は、オーケストレーターがリコンサイルする宣言的な変更(manifest や chart)を push します。高速で信頼性の高いイメージ build - CI が担う部分 - が、そのループを引き締めます。
重要なポイント
- オーケストレーターは、コンテナのスケジューリング、スケーリング、自己修復、ネットワーキングを自動化します。
- 宣言的に動作し、望ましい状態へ継続的にリコンサイルします。
- Kubernetes が最も一般的ですが、小規模な用途にはよりシンプルな選択肢もあります。