Kubernetes

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動
Kubernetes
Kubernetes logo.svg
作者 Google
開発元 Cloud Native Computing Foundation
初版 2014年6月7日(4年前) (2014-06-07[1]
最新版 1.10.3[2] / 2018年5月21日(6か月前) (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を含む多数のコンテナツールと連携して動作する。

歴史[編集]

Google Cloud SummitでのGoogle Container Engineに関するトーク

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 HatOpenShift英語版製品[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社であるが、その存在感が薄れてきている。

出典[編集]

  1. ^ First GitHub commit for Kubernetes”. github.com (2014年6月7日). 2017年3月1日時点のオリジナルよりアーカイブ。2018年6月5日閲覧。
  2. ^ GitHub Releases page”. github.com (2018年5月26日). 2018年6月5日閲覧。
  3. ^ 阿久津良和 (2017年10月25日). “MS、KubernetesをサポートするAzure Container Serviceの改善を発表”. マイナビニュース. 2018年1月24日閲覧。
  4. ^ メモ:Google製DockerクラスタツールKubernetes”. qiita.com. 2018年5月26日閲覧。
  5. ^ Tenable (2017-07-20), How Do You Pronounce Kubernetes? And What Is It?, https://www.youtube.com/watch?v=uMA7qqXIXBk 2018年5月26日閲覧。 
  6. ^ a b What is Kubernetes?”. Kubernetes. 2017年3月31日閲覧。
  7. ^ kubernetes/kubernetes” (英語). GitHub. 2017年4月21日時点のオリジナルよりアーカイブ。2017年3月28日閲覧。
  8. ^ What is the correct pronunciation of Kubernetes in English?”. kubernetes/kubernetes:Issues. GitHub. 2018年2月5日閲覧。
  9. ^ Kubernetes - New Testament Greek Lexicon - New American Standard”. New Testament Greek Lexicon. JupiterImages Co.. 2018年2月5日閲覧。
  10. ^ What is Kubernetes?”. Kubernetes. 2017年3月31日閲覧。
  11. ^ Google Made Its Secret Blueprint Public to Boost Its Cloud” (英語). 2016年7月1日時点のオリジナルよりアーカイブ。2016年6月27日閲覧。
  12. ^ Google Open Sources Its Secret Weapon in Cloud Computing”. Wired. 2015年9月10日時点のオリジナルよりアーカイブ。2015年9月24日閲覧。
  13. ^ 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. 
  14. ^ Borg, Omega, and Kubernetes - ACM Queue”. queue.acm.org. 2016年7月9日時点のオリジナルよりアーカイブ。2016年6月27日閲覧。
  15. ^ “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日閲覧。 
  16. ^ As Kubernetes Hits 1.0, Google Donates Technology To Newly Formed Cloud Native Computing Foundation”. TechCrunch. 2015年9月23日時点のオリジナルよりアーカイブ。2015年9月24日閲覧。
  17. ^ a b 五味明子 (2018年1月5日). ““コンテナネイティブ”の時代が本格到来 ―2018年のクラウドはKubernetesとGoogleに注目”. 技術評論社. 2018年1月24日閲覧。
  18. ^ Azure, Microsoft (2018年5月14日). “Azure Kubernetes Service (AKS)” (英語). azure.com. 2018年5月14日閲覧。
  19. ^ “Announcing: Kubernetes on DC/OS - Mesosphere” (英語). Mesosphere. (2017年9月6日). https://mesosphere.com/blog/kubernetes-dcos/ 2018年4月13日閲覧。 
  20. ^ “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日閲覧。 
  21. ^ Software, Pivotal (2017年1月17日). “Pivotal Container Service (PKS)” (英語). pivotal.io. 2018年2月14日閲覧。
  22. ^ OpenShift v3 Platform Combines Docker, Kubernetes”. blog.openshift.com. 2015年7月6日時点のオリジナルよりアーカイブ。2014年8月14日閲覧。
  23. ^ Why Red Hat Chose Kubernetes for OpenShift”. blog.openshift.com. 2017年2月21日時点のオリジナルよりアーカイブ。2016年11月7日閲覧。
  24. ^ 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/ 
  25. ^ IBM Cloud Container Service is now IBM Cloud Kubernetes Service” (英語). ibm.com. 2018年5月22日閲覧。
  26. ^ IBM Cloud Kubernetes Service” (英語). ibm.com. 2018年5月22日閲覧。
  27. ^ “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日閲覧。 
  28. ^ IBM Announces IBM Cloud Private” (英語). ibm.com. 2017年11月1日時点のオリジナルよりアーカイブ。2017年11月1日閲覧。
  29. ^ IBM Cloud Private brings cloud native computing to your data center” (英語). techcrunch.com. 2017年11月3日時点のオリジナルよりアーカイブ。2017年11月2日閲覧。
  30. ^ a b Boepple, Felix. “Giant Swarm Managed Kubernetes” (英語). Microsoft. 2018年5月17日時点のオリジナルよりアーカイブ。2018年1月9日閲覧。
  31. ^ “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日閲覧。 
  32. ^ Kubernetes Components”. Documentation - Concepts. kubernetes.io. 2018年2月5日閲覧。