Kubernetes
Kubernetesは、オブジェクトの管理、選択、操作を可能にするメカニズムを提供している。
Kubernetesは、マスター・スレーブアーキテクチャで構成される。Kubernetesのコンポーネントは、各ノードを管理するノード(node)と、コントロールプレーンであるマスター(master)の2つに分けられる。
マスターがクラスターの管理を行い、コンテナ(実際にはPodと呼ばれる単位で管理される)は各ノード上にデプロイされる。マスターやノードを構成するコンポーネントは下記のようになっている。
“Kubernetes”(希: κυβερνήτης、koo-ber-nay'-tace、クベルネテス)は、ギリシャ語で航海長または水先案内人を意味し、サイバネティクス(人工頭脳学)の語源でもある。Kubernetesは、当初Joe Beda、Brendan Burns、Craig McLuckieの3人によって開発が始まり、すぐにBrian GrantやTim Hockinなど、他のGoogleのエンジニアも参加するようになり、2014年中ごろにGoogleから初めて発表された。Kubernetesの開発や設計はGoogleのBorgシステムから強い影響を受けており、Borgのトップコントリビュータの多くが開発に参加している。Google内でのKubernetesのもともとのコードネームはProject Sevenであり、スター・トレックのキャラクターで、優しいBorgである、セブン・オブ・ナインの名前に由来する。Kubernetesのロゴの輪にある7つのスポークは、このコードネームに由来している。
Kubernetes v1.0は2015年7月21日にリリースされた。Kubernetes v1.0のリリースと同時に、GoogleはLinux Foundationと共同でCloud Native Computing Foundation(CNCF)を設立し、Kubernetesを種となる技術として提供した。2018年3月6日には、KubernetesプロジェクトはGitHubにおけるコミット数で第9位に到達し、コントリビューター数とissue数では、Linuxカーネルプロジェクトに次いで第2位となった。
containerはポッドの中に置かれる。containerは最も低レベルなマイクロサービスであり、実行中のアプリケーション、ライブラリ、およびその依存関係が格納される。containerは外部IPアドレスを割り当てて世界に対して公開することもできる。Kubernetesは最初のバージョン以来Dockerコンテナをサポートしており、2016年7月には、rktコンテナエンジンが追加された。
2018年初頭の時点で、Kubernetesはコンテナオーケストレーションにおいてデファクトスタンダードと呼べる存在になっているが、短期間でこうなった理由には、以下の3点が挙げられる。
定期的なメジャーアップデート 3ヵ月ごとにアップデートを繰り返し、エンタープライズからのフィードバックを反映しており、本番稼働に耐えうるソフトウェアとして信頼を勝ち得た。
Kubernetesの普及とCNCFの活性化がリンクしている マイクロソフトがMicrosoft AzureでのKubernetesのサポートを発表して以降、オラクルやVMwareといった企業もCNCFに参加を表明し、Amazon Web Servicesも参加するなど、競合の垣根を越えて多くの企業がKubernetesへ参加したことで、コンテナオーケストレーションツールの中でのKubernetesの存在感が高まった。
Dockerの限界 コンテナ機能としては優秀なDockerであるが、オーケストレーション機能が十分でなく、Kubernetesをはじめとするオーケストレーションツールにより、高度な管理が出来るようになった。