Kubernetes 【K8s】
概要
Kubernetes(K8s)とは、「コンテナオーケストレーションツール」と呼ばれる、データセンターにおけるコンテナ管理を自動化・効率化するソフトウェアの一つ。大規模環境でのコンテナ管理に適している。コンテナは仮想化技術の一つで、稼働中のオペレーティングシステム(OS)上で隔離された専用のエリアを生成し、その内部でソフトウェアを動作させる手法である。この隔離された区画がコンテナで、他の仮想化技術に比べ生成や破棄が迅速で実行速度も高速という特徴がある。
通常はコンテナの作成や廃棄、コンテナ上でのアプリケーションの起動、アプリケーションのコンテナ間の移動などは人間が操作して個別に指示を出すが、大量のコンピュータを並行して動作させる大規模な環境では管理作業が煩雑になってしまう。
そのような場合に管理を効率化するのがKubernetesの役割で、管理者は中央システム(マスター)で設定や操作を行い、マスターからの指示でコンテナが稼働する個々のサーバ(ノード)が制御される。マスターはノードやコンテナの状態を常に監視(ヘルスチェック)しており、障害が発生したコンテナを停止して他のノードに移し替える(フェイルオーバー)といった制御を自動的に行なってくれる。
アプリケーションはコンテナ化されて展開される。管理下にあるノード群へ開発したアプリケーションを投入したり、更新を反映したり、展開するノードの規模(スケール)を拡大あるいは縮小するといった制御もマスターから集中的に、一部の操作は設定に従って自動的に行うことができる。
Kubernetes自体はコンテナ仮想化を提供するわけではなく、コンテナ化のためのシステム(コンテナランタイム)が別途必要になる。著名なランタイムの「Docker」と共に使われることが多いが、containerdやCRI-Oなど他のランタイムでも利用できる。「CRI」(Container Runtime Interface)というコンテナ制御のための標準APIを定義しており、これに準拠していればこれら以外の製品を使うこともできる。
Kubernetesの初版は2014年に米グーグル(Google)社によって発表された。その後、同社を中心に設立された非営利団体「CNCF」(Cloud Native Computing Foundation)に移管され、Apacheライセンスに基づいてオープンソースソフトウェアとして公開されている。
企業などが自社データセンターなどで利用できるほか、クラウドサービスでもGoogle社の「Google Cloud Platform」(GCP)における「Google Kubernetes Engine」(GKE)や、米アマゾンドットコム(Amazon.com)社の「Amazon Web Services」(AWS)における「Amazon Elastic Kubernetes Service」(Amazon EKS)などの形で利用することができる。