コンテナオーケストレーション

コンテナのデプロイ、スケーリング、ネットワーキングを自動管理するプラットフォーム

コンテナインフラ

コンテナオーケストレーションとは

コンテナオーケストレーションは、コンテナのデプロイ、スケーリング、ネットワーキング、ヘルスチェックを自動管理するプラットフォームである。Kubernetes と Amazon ECS が代表例。

なぜ必要か

コンテナが 1 つなら docker run で十分だが、本番環境では数十〜数百のコンテナが稼働する。どのサーバーに配置するか、障害時にどう再起動するか、負荷に応じてどうスケールするかを手動で管理するのは現実的でない。オーケストレーターがこれらを自動化する。

コンテナ 1 つ: docker run で十分
コンテナ 100 個:
  - どのサーバーに配置するか
  - 障害時にどう再起動するか
  - スケールアウトをどう制御するか
  - コンテナ間の通信をどう管理するか
  → オーケストレーターが自動管理

ECS vs EKS vs Lambda

ECS と EKS vs Lambda の違いを以下にまとめる。

観点ECS (Fargate)EKSLambda
管理負荷低い中〜高最低
スケーリングAuto ScalingHPA自動
コスト (アイドル)タスク数に比例クラスタ費用ゼロ
実行時間無制限無制限最大 15 分
用途長時間処理、Web サーバーK8s エコシステムイベント駆動

オーケストレーターの機能

オーケストレーターはコンテナをどのノードに配置するかのスケジューリング、負荷に応じたコンテナ数の増減 (スケーリング)、不健全なコンテナの自動再起動 (ヘルスチェック)、コンテナ間の名前解決 (サービスディスカバリ)、ダウンタイムなしのローリングアップデート、環境変数の安全な注入 (シークレット管理) を担う。

Lambda vs コンテナの選択基準

最初に効くのは処理時間の上限で、そこを越えなければ次に既存の資産とアイドル時の費用が決め手になる。

場面選ぶ基盤理由
キューやイベントを起点に短い処理を回すLambda起動と後片付けを基盤側が担うため、待ち受けのためにコンテナを常駐させておく必要がない
1 回の処理が 15 分を超えるECS FargateLambda は最大 15 分で打ち切られるのに対しコンテナ側は実行時間が無制限で、長時間の処理を途中で分割せずに走らせられる
すでにコンテナとして動いているアプリを移したいECS Fargate同じコンテナをそのまま動かせるため、Lambda のイベント駆動の形に合わせてアプリの入口を作り替える必要がない
Kubernetes のエコシステムに揃えたいEKSHPA によるスケーリングのように Kubernetes の仕組みを前提にした資産をそのまま使え、他の基盤では同じ役割を別の仕組みに置き換えることになる
呼び出しが日中の一部に偏り、空き時間が長いLambda実行した分だけの課金となり、常駐タスク数やクラスタに対して発生する費用を持たない

実践的な知識は関連書籍でも得られる。

この記事は役に立ちましたか?

関連用語

関連する記事