Kubernetes
![]() | |
作者 | |
---|---|
開発元 | Cloud Native Computing Foundation |
初版 | 2014年6月7日[1] |
最新版 |
1.10.3[2]
/ 2018年5月21日 |
リポジトリ | https://github.com/kubernetes/kubernetes |
プログラミング 言語 | Go |
使用エンジン | Docker |
サポート状況 | 開発中 |
種別 | クラスター管理ソフトウェア・コンテナオーケストレーション |
ライセンス | Apache License 2.0 |
公式サイト | kubernetes.io |
Kubernetes(クーベネティス[3]/クーベルネイテス[4][5]、よくK8sと略記される)[6]は、コンテナ化したアプリケーションのデプロイ、スケーリング、および管理を行うための、オープンソースのコンテナオーケストレーションシステムである[7]。元々Googleが設計したシステムであるが、現在はCloud Native Computing Foundationがメンテナンスを行っている。Kubernetesの目的は、「ホストのクラスターを横断してアプリケーションコンテナを自動デプロイ、スケーリング、操作するためのプラットフォーム」を提供することとされている[6]。Dockerを含む多数のコンテナツールと連携して動作する。
歴史
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Kubernetes_talk_at_Google_Cloud_Summit.jpg/220px-Kubernetes_talk_at_Google_Cloud_Summit.jpg)
Kubernetes(κυβερνήτης、koo-ber-nay'-tace[8][9]、ギリシャ語で航海長またはパイロットを意味する[10])は、当初Joe Beda、Brendan Burns、Craig McLuckieの3人によって開発が始まり[11]、すぐにBrian GrantやTim Hockinなど、他のGoogleのエンジニアも参加するようになり、2014年中ごろにGoogleから初めて発表された[12]。Kubernetesの開発や設計はGoogleのBorgシステムから強い影響を受けており[13][14]、Borgのトップコントリビュータの多くが開発に参加している。Google内でのKubernetesのもともとのコードネームはProject Sevenであり、スター・トレックのキャラクターで、優しいBorgである、セブン・オブ・ナインの名前に由来する[15]。Kubernetesのロゴの輪にある7つのスポークは、このコードネームに対応している。
Kubernetes v1.0は2015年7月21日にリリースされた[16]。Kubernetes v1.0のリリースと同時に、GoogleはLinux Foundationと共同でCloud Native Computing Foundation(CNCF)を設立し、Kubernetesを種となる技術として提供した。
2017年初頭にKubernetesをサポートするパブリッククラウドはGoogle Cloud Platformのみであったが[17]、現在では多数のベンダーのソリューションで使用されるようになってきている。ソリューションの例としては、MicrosoftのAzure Kubernetes Service (AKS)[18]、MesosphereのDatacenter Operating System製品[19]、Rancher_Labsのcontainer management platform[20]、Pivotal SoftwareのPKS製品[21]、Red HatのOpenShift製品[22][23]、CoreOSのTectonic製品、MirantisのMirantis Cloud Platform[24]、IBMのIBM Cloud Kubernetes Service (IKS)[25][26]およびIBM Cloud Private製品、Rackspaceのmanaged Kubernetes as a Service[27]、Giant Swarmのmanaged Kubernetes[28][29][30][30]などがある。Oracleは2017年9月13日にCloud Native Computing Foundationにプラチナメンバーとして参加し、Kubernetes installer for Oracle Cloud Infrastructureをオープンソースとして公開するとともに、Kubernetes on Oracle Linux[31]という製品をリリースした。
アーキテクチャ
Kubernetesは、ネットワークで接続された複数のLinux上にクラスタを構築することで動作する。 クラスタは主に複数のマスター (master) とノード (node) から構成され、マスターがクラスターの管理を行い、コンテナ(実際にはPodと呼ばれる単位で管理される)は各ノード上にデプロイされる。 マスターやノードを構成するコンポーネントは下記のようになっている[32]。
- マスター (master)
-
- kube-apiserver
- Kubernetes APIを外部に公開するためのコンポーネント。
- etcd
- Kubernetesクラスタの情報を保存する分散キーバリューストア。
- kube-scheduler
- Podをどのノードに対してデプロイするかを選択するコンポーネント。
- kube-controller-manager
- Kubernetesクラスタの各種コントローラを実行するコンポーネント。
- cloud-controller-manager
- Kubernetesとプラットフォームとなっているクラウドプロバイダとの相互作用を担うコンポーネント。各クラウドプロバイダに特化した機能を提供し、パフォーマンスを向上する。
- その他アドオン
- Kubernetesクラスタ内での名前解決を行うDNSサーバ、各種Web UIやクラスタ単位でロギングを行うコンポーネント(fluentd, etc.)など。
- ノード (node)
-
- kubelet
- ノード上に常駐し、ノードの生存をクラスタに対して通知する。また自身に対するPodの割り当てが行われたかどうかを監視してボリュームのマウント、コンテナのダウンロード/デプロイ、Podの生存確認などを行い、クラスタに通知する機能も担う。
- kube-proxy
- 外部やapiserverからのアクセスをノード上の各Podに対して転送し、Podへのアクセスを抽象化するコンポーネント。
- Docker
- 実際にコンテナを動作させるバックエンドに利用される。2018年2月現在、実験的実装として rkt もコンテナバックエンドとして利用出来る。
- supervisord
- kubeletとdockerが正しく動作し続けるように監視及び管理するコンポーネント。
- fluentd
- クラスタレベルでのロギングを補助する。
マスターとノードのコンポーネントは同一のマシン上に存在してもよく、最小の構成では1台(マスターかつノード)からなるKubernetesクラスタが構築出来る。
主な動向
- 2017年3月 - スケーラビリティを強化したKubernetes 1.6がリリース
- 2017年6月 - 管理機能が増加し、セキュリティが強化されたKubernetes 1.7がリリース
- 2017年9月 - Kubernetes 1.8がリリース
- 2017年10月 - DockerがKubernetesサポートすることを発表
- 2017年12月 - Kubernetes 1.9がリリース
普及の理由
2018年初頭の時点で、Kubernetesはコンテナオーケストレーションにおいてデファクトスタンダードと呼べる存在になっているが、短期間でこうなった理由には、以下の3点が挙げられる[17]。
- 定期的なメジャーアップデート
- 3ヵ月ごとにアップデートを繰り返し、エンタープライズからのフィードバックを反映しており、本番稼働に耐えうるソフトウェアとして信頼を勝ち得た。
- Kubernetesの普及とCNCFの活性化がリンクしている
- マイクロソフトがKubernetesのサポートを発表して以降、オラクルやVMwareといった企業もCNCFに参加を表明し、GoogleやMicrosoft Azureとは競合関係にあるAmazon Web Servicesも参加している。このため、「Kubernetesがデファクトスタンダード」という認識がより強まった。
- Docker社の凋落
- コンテナエンジンとしてのDockerを開発してきたDocker社であるが、その存在感が薄れてきている。
出典
- ^ “First GitHub commit for Kubernetes”. github.com (2014年6月7日). 2017年3月1日時点のオリジナルよりアーカイブ。2018年6月5日閲覧。
- ^ “GitHub Releases page”. github.com (2018年5月26日). 2018年6月5日閲覧。
- ^ 阿久津良和 (2017年10月25日). “MS、KubernetesをサポートするAzure Container Serviceの改善を発表”. マイナビニュース. 2018年1月24日閲覧。
- ^ “メモ:Google製DockerクラスタツールKubernetes”. qiita.com. 2018年5月26日閲覧。
- ^ Tenable (2017-07-20), How Do You Pronounce Kubernetes? And What Is It? 2018年5月26日閲覧。
- ^ a b “What is Kubernetes?”. Kubernetes. 2017年3月31日閲覧。
- ^ “kubernetes/kubernetes” (英語). GitHub. 2017年4月21日時点のオリジナルよりアーカイブ。2017年3月28日閲覧。
- ^ “What is the correct pronunciation of Kubernetes in English?”. kubernetes/kubernetes:Issues. GitHub. 2018年2月5日閲覧。
- ^ “Kubernetes - New Testament Greek Lexicon - New American Standard”. New Testament Greek Lexicon. JupiterImages Co.. 2018年2月5日閲覧。
- ^ “What is Kubernetes?”. Kubernetes. 2017年3月31日閲覧。
- ^ “Google Made Its Secret Blueprint Public to Boost Its Cloud” (英語). 2016年7月1日時点のオリジナルよりアーカイブ。2016年6月27日閲覧。
- ^ “Google Open Sources Its Secret Weapon in Cloud Computing”. Wired. 10 September 2015時点のオリジナルよりアーカイブ。24 September 2015閲覧。
- ^ Abhishek Verma; Luis Pedrosa; Madhukar R. Korupolu; David Oppenheimer; Eric Tune; John Wilkes (April 21–24, 2015). “Large-scale cluster management at Google with Borg”. Proceedings of the European Conference on Computer Systems (EuroSys). オリジナルの2017-07-27時点におけるアーカイブ。 .
- ^ “Borg, Omega, and Kubernetes - ACM Queue”. queue.acm.org. 2016年7月9日時点のオリジナルよりアーカイブ。2016年6月27日閲覧。
- ^ “Early Stage Startup Heptio Aims to Make Kubernetes Friendly” 2016年12月6日閲覧。
- ^ “As Kubernetes Hits 1.0, Google Donates Technology To Newly Formed Cloud Native Computing Foundation”. TechCrunch. 23 September 2015時点のオリジナルよりアーカイブ。24 September 2015閲覧。
- ^ a b 五味明子 (2018年1月5日). ““コンテナネイティブ”の時代が本格到来 ―2018年のクラウドはKubernetesとGoogleに注目”. 技術評論社. 2018年1月24日閲覧。
- ^ Azure, Microsoft (2018年5月14日). “Azure Kubernetes Service (AKS)” (英語). azure.com. 2018年5月14日閲覧。
- ^ “Announcing: Kubernetes on DC/OS - Mesosphere” (英語). Mesosphere. (2017年9月6日) 2018年4月13日閲覧。
- ^ “Deploy and Manage Kubernetes Clusters | Rancher Labs” (英語). Rancher Labs. オリジナルの2017年4月16日時点におけるアーカイブ。 2017年4月15日閲覧。
- ^ Software, Pivotal (2017年1月17日). “Pivotal Container Service (PKS)” (英語). pivotal.io. 2018年2月14日閲覧。
- ^ “OpenShift v3 Platform Combines Docker, Kubernetes”. blog.openshift.com. 6 July 2015時点のオリジナルよりアーカイブ。14 August 2014閲覧。
- ^ “Why Red Hat Chose Kubernetes for OpenShift”. blog.openshift.com. 21 February 2017時点のオリジナルよりアーカイブ。7 November 2016閲覧。
- ^ Vaughan-Nichols, Steven (September 26, 2017). “Mirantis launches multi-cloud Kubernetes with AWS Support”. ZDNet
- ^ “IBM Cloud Container Service is now IBM Cloud Kubernetes Service” (英語). ibm.com. 2018年5月22日閲覧。
- ^ “IBM Cloud Kubernetes Service” (英語). ibm.com. 2018年5月22日閲覧。
- ^ “Rackspace Launches Comprehensive Kubernetes-as-a-Service Solution with Fully Managed Operations” (英語). The Official Rackspace Blog. (2018年5月16日) 2018年5月31日閲覧。
- ^ “IBM Announces IBM Cloud Private” (英語). ibm.com. 2017年11月1日時点のオリジナルよりアーカイブ。2017年11月1日閲覧。
- ^ “IBM Cloud Private brings cloud native computing to your data center” (英語). techcrunch.com. 2017年11月3日時点のオリジナルよりアーカイブ。2017年11月2日閲覧。
- ^ a b Boepple, Felix. “Giant Swarm Managed Kubernetes” (英語). Microsoft. 17 May 2018時点のオリジナルよりアーカイブ。9 January 2018閲覧。
- ^ “Oracle Joins Cloud Native Computing Foundation as Platinum Member - Cloud Native Computing Foundation” (英語). Cloud Native Computing Foundation. (2017年9月13日) 2017年11月29日閲覧。
- ^ “Kubernetes Components”. Documentation - Concepts. kubernetes.io. 2018年2月5日閲覧。