コンテナオーケストレーション
複数のコンテナの配置、スケーリング、ネットワーキング、ライフサイクル管理を自動化する仕組み。
なぜ必要か
単一のコンテナを手動で実行するのは簡単だが、本番環境では以下の課題が生じる:
- 可用性: コンテナが落ちたら自動で再起動したい
- スケーリング: 負荷に応じてコンテナ数を増減したい
- 配置: 複数のホストにコンテナを分散配置したい
- ネットワーク: コンテナ間、外部との通信を管理したい
- デプロイ: ダウンタイムなくアプリケーションを更新したい
これらを手動で管理するのは現実的ではなく、オーケストレーションツールが必要になる。
主要なツール
| ツール | 特徴 |
|---|---|
| Kubernetes | 業界標準。機能が豊富だが学習コストが高い |
| AWS ECS | AWSネイティブ。Kubernetesより簡潔 |
| Docker Swarm | Docker社製。シンプルだが機能は限定的 |
| Nomad | HashiCorp製。コンテナ以外も扱える |
基本概念
多くのオーケストレーターに共通する概念:
- タスク/Pod: 実行単位。1つ以上のコンテナをまとめたもの
- サービス: タスクを維持・スケールする抽象化
- クラスター: リソースをプールした論理的なグループ
- スケジューラー: どのホストでタスクを実行するか決定
Fargateとの関係
AWS ECS Fargateはコンテナオーケストレーションをサーバーレスで提供する。従来のEC2起動タイプと異なり、ホストマシンの管理が不要。
詳細はECS Fargateで必要なリソースの全体像を参照。
関連
- Infrastructure as Code - オーケストレーション環境の構築に使う
- コンテナ分離 - コンテナ技術の基礎