Kubernetes
作者 | |
---|---|
開発元 | Cloud Native Computing Foundation |
初版 | 2014年6月7日 (2014-06-07)[1] |
最新版 | 1.10.3[2] / 2018年5月21日 (2018-05-21) |
リポジトリ | 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を含む多数のコンテナツールと連携して動作する。
目次
1 歴史
2 アーキテクチャ
3 主な動向
4 普及の理由
5 出典
歴史
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?, https://www.youtube.com/watch?v=uMA7qqXIXBk 2018年5月26日閲覧。
- ^ ab“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. 2015年9月10日時点のオリジナルよりアーカイブ。2015年9月24日閲覧。
^ 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時点によるアーカイブ。. https://research.google.com/pubs/pub43438.html.
^ “Borg, Omega, and Kubernetes - ACM Queue”. queue.acm.org. 2016年7月9日時点のオリジナルよりアーカイブ。2016年6月27日閲覧。
^ “Early Stage Startup Heptio Aims to Make Kubernetes Friendly”. http://www.eweek.com/cloud/early-stage-startup-heptio-aims-to-make-kubernetes-friendly.html 2016年12月6日閲覧。
^ “As Kubernetes Hits 1.0, Google Donates Technology To Newly Formed Cloud Native Computing Foundation”. TechCrunch. 2015年9月23日時点のオリジナルよりアーカイブ。2015年9月24日閲覧。
- ^ ab五味明子 (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日). https://mesosphere.com/blog/kubernetes-dcos/ 2018年4月13日閲覧。
^ “Deploy and Manage Kubernetes Clusters | Rancher Labs” (英語). Rancher Labs. オリジナルの2017年4月16日時点によるアーカイブ。. https://web.archive.org/web/20170416125621/http://rancher.com/kubernetes/ 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. 2015年7月6日時点のオリジナルよりアーカイブ。2014年8月14日閲覧。
^ “Why Red Hat Chose Kubernetes for OpenShift”. blog.openshift.com. 2017年2月21日時点のオリジナルよりアーカイブ。2016年11月7日閲覧。
^ Vaughan-Nichols, Steven (2017年9月26日). “Mirantis launches multi-cloud Kubernetes with AWS Support”. ZDNet. http://www.zdnet.com/article/mirantis-launches-multi-cloud-kubernetes-with-aws-support/
^ “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日). https://blog.rackspace.com/rackspace-launches-kubernetes-as-a-service 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日閲覧。
- ^ abBoepple, Felix. “Giant Swarm Managed Kubernetes” (英語). Microsoft. 2018年5月17日時点のオリジナルよりアーカイブ。2018年1月9日閲覧。
^ “Oracle Joins Cloud Native Computing Foundation as Platinum Member - Cloud Native Computing Foundation” (英語). Cloud Native Computing Foundation. (2017年9月13日). https://www.cncf.io/announcement/2017/09/13/oracle-joins-cloud-native-computing-foundation-platinum-member/ 2017年11月29日閲覧。
^ “Kubernetes Components”. Documentation - Concepts. kubernetes.io. 2018年2月5日閲覧。