「コンテナオーケストレーション」は、情報システムの基盤技術として注目される「コンテナ」を管理する技術である。

 コンテナは、OS上のアプリケーションの動作環境を仮想的に区切る技術だ。1台の物理サーバー上で動作する複数のコンテナを、それぞれ独立したサーバー環境のように利用できる。機能単位の小さなアプリケーション(サービス)を組み合わせてシステムを実現する設計手法であるマイクロサービスとの相性も良い。

 ただし、コンテナは手軽に開発・実行環境を構築できる半面、管理対象のコンテナの数が増えると、その運用・管理が複雑で手間がかかるという課題がある。

 この問題を解決するのが、コンテナオーケストレーションだ。コンテナ化されたアプリケーションのデプロイやスケーリング、管理などが自動的にできる。これらの機能を備えるコンテナオーケストレーションツールがOSS(オープンソースソフトウエア)や商用製品として提供されている。

 コンテナオーケストレーションツールを利用することで、ユーザー企業は、コンテナをデプロイしたり、コンテナの稼働状況を監視したりする面倒な作業から解放され、アプリケーションの開発に専念できるようになる。

コンテナの管理を自動化するコンテナオーケストレーションツール
[画像のクリックで拡大表示]

 コンテナオーケストレーションツールとして、事実上の本命といえるのが、「Kubernetes」だ。Kubernetesは米グーグル(Google)が社内で利用していたコンテナ管理ツールを汎用化してOSSにしたものだ。2015年にCloud Native Computing Foundation(CNCF)に寄贈する形でバージョン1.0がリリースされた。

設定ファイルで指定した状態に近づける

 Kubernetesの特徴は、「宣言的アーキテクチャー」を採用していること。これは、ユーザーがCPUやメモリーの利用率などを設定ファイルで指定すると、Kubernetes側でその状態に近づけてくれるというもの。CPU利用率が高まれば、自動的にスケーリングして利用率を下げられる。

 Kubernetesは、マスターノードとワーカーノードで構成される。マスターノードがKubernetesの運用・管理を担うコンポーネント群で、ワーカーノードがコンテナクラスターのデプロイ先になる。開発者や運用管理者がコマンドを使ってマスターノードに命令すると、マスターノードの運用・管理に関連するAPIによって、ワーカーノードにPod(1つ以上のアプリケーションコンテナのグループ)を割り当てたり、Podの状態を管理したりできる。

Kubernetesの仕組み
[画像のクリックで拡大表示]

 ワーカーノードは必要に応じて複数作成されて稼働する。ワーカーノードはPodの他、プロキシーやロードバランサーの役割を担うコンポーネント、マスターノードと連携してワーカーノードで運用管理するコンポーネントなどで構成される。