TL;DR

マルチホストで構成されたクラスタ全体のホスト OS を管理し、複数のコンテナを統合して管理する機能。

なぜ必要か

Kubernetes のドキュメントによると、本番環境では、アプリケーションを止めないようにコンテナを管理する必要がある。たとえば、コンテナが落ちたら別のコンテナを起動しなければならない。こうした動作がシステムに組み込まれていれば、管理が簡単になる。

仕組み

Kubernetes を例にとると、分散システムを弾力的に動かすための次のような機能がある。

  • サービスディスカバリと負荷分散: DNS 名や IP アドレスでコンテナを公開し、トラフィックを振り分ける
  • 自動化されたロールアウトとロールバック: コンテナのあるべき状態を宣言すると、実際の状態を制御された速さでそこに近づける
  • 自動ビンパッキング: 各コンテナに必要な CPU とメモリを宣言すると、ノードに合わせて配置する
  • 自己修復: 失敗したコンテナを再起動し、ヘルスチェックに応答しないコンテナを止める
  • 水平スケーリング: コマンドや CPU 使用率に応じて、アプリケーションをスケールイン・スケールアウトする

例

代表的なソフトウェアに Kubernetes がある。クラウドサービスでは次のものがある。

関連

出典