【図解】コレ1枚でわかるコンテナ・オーケストレーション
コンテナ・エンジンであるDocker は、1台のサーバー上でコンテナを作成し、その実行を管理します。しかし、ネットワークにつながる複数台のサーバーで稼働するコンテナを横断的に管理する機能はありません。例えば、アプリケーションを利用するユーザーが増えて、複数台のサーバーにまたがりコンテナの数を増やさなくてはならないような場合、Dockerだけでは、この状況に対処してスケールアウト(サーバー台数を増やして処理能力を拡張すること)させることができないのです。この問題を解決してくれるのがKubernetes です。Kubernetesとは、ギリシャ語で「人生の道標」と言う意味があり「クーバネティス」と読みます。「k8s(ケーエイツ)」と略されることもあります。
Kubernetes によって、複数台のサーバーから構成される実行環境をあたかも一台の実行環境のように扱うことができます。例えば、コンテナを起動する際は、イメージと台数を指定するだけでよく、どのサーバーにどのようにコンテナを配置するかは Kubernetes に任せることができます。また、コンテナに必要とされるシステム資源(CPU、メモリ、記憶領域など)が足りなくなった場合には、既存のサービスに影響を与えることなく、自動で拡張してくれます。
また、運用管理者が、どのコンテナをいくつ起動するかといった情報をKubernetes に教えると、空いているシステム資源を見ながら、それらをどのように配置するかを決定し、それに従ってコンテナを起動します。また、仮に稼働中のコンテナに不具合があってサービスがダウンしたとしても、Kubernetes は、この事態を察知し、必要に応じてコンテナを自動的に再起動してくれます。
他にも、関連するコンテナのグルーピング、コンテナに割り振られたIPアドレスの管理、コンテナに割り当てられるストレージの管理などを行います。
Kubernetes が管理する基本単位は Pod と呼ばれるコンテナの集まりです。また、コンテナ管理システムであるDockerが稼働しているサーバーの単位をNodeと呼びます。そのNodeの集まりの単位をClusterと呼びます。
Pod、Node、Clusterを管理するのがMaster、Masterへの指示や設定をマニフェスト(Manifest)と呼んでいます。
Kubernetesは、コンテナ化したアプリケーションの配置や実行、スケーリング、およびその管理を自動化するソフトウェアです。