2018年3月9日金曜日

Kubernetesとは

 Kubernetesはオープンソースの「コンテナオーケストレーション」ツールです。公式サイトのトップページにおいてもそう明示されていますが、「コンテナオーケストレーション」には明確な定義がまだありません。そこで本連載では、コンテナオーケストレーションを「コンテナ型仮想化を本番環境で活用するために必要な機能を提供すること」と定義します。

 
5 Kubernetes公式サイトのトップページ

 実際Kubernetesには、コンテナ型仮想化を本番環境で活用する際の課題に対応するさまざまな機能があります。

 一方でコンテナオーケストレーションツールはKubernetesだけではなく、Docker社が開発した「SwarmKit」や、「Apache Mesos」、Rancher Labsの「Cattle」、既に開発は停止していますがCoreOSの「fleet」などの競合が存在します。では、なぜKubernetesに注目が集まっているのでしょうか。

 それには2つの大きな理由が存在します。1つはKubernetesの起源、もう1つは現時点でKubernetesを取り巻く現状です。

Kubernetesの起源

 Kubernetesの起源をたどる際には、Googleのエンジニアが執筆したサービス管理に関する有名な論文が参考になります。この論文では、「Googleのサービスは、クラスタマネジャー『Borg』上で動作するコンテナを用いて提供されており、Borgと同様の仕組み(+Borgにおける反省を踏まえた対応策)を備えたオープンソースソフトウェアとしてKubernetesを開発した」旨が記載されています。

 Googleのサービスを支えている基盤と同様の仕組みを備えていることから、「KubernetesGoogleで既にその有効性を実証済みである」という意味で大きな注目を浴びたといえるでしょう。

Kubernetesを取り巻く現状

 しかし事例があるのみでは、活用はなかなか広まりづらいものです。Kuberenetesを本格的に活用しようという機運が2017年から急速に高まっている理由は、主に次に挙げるようなものと思われます。

1.     パブリッククラウドによるKubernetesのマネージドサービス提供

2.     DockerKubernetesの統合

3.     CNCFCloud Native Computing Foundation)を中心としたベンダー中立な開発体制

・パブリッククラウドによるKubernetesのマネージドサービス提供

 20182月時点で、既に世界でのシェアが多いパブリッククラウドサービス(Amazon Web ServiceAWS)、Microsoft AzureGoogle Cloud Platformなど)が相次いでKubernetesのマネージドサービスをリリースしています(プレビューを含む)。これまでは「Kubernetesは環境の構築・維持の手間が大きい」という問題がありましたが、パブリッククラウドでマネージドサービスが提供されたことで以前と比較すると容易に利用を開始できるようになりました。

DockerKubernetesの統合

 Kubernetesについては、概念の理解などの点で非常に学習コストが高いことも問題でした。また、先に述べたように環境構築の手間が大きいことが、知識習得に向けたハードルを上げてしまっていました(ローカルでの学習用に「minikube」などのツールは提供されていましたが)。

 しかし、現在は「Docker for Mac with Kubernetes」「Docker for Windows Desktop with Kubernetes」という形で、DockerKubernetesの統合が進んでいます。これによってKubernetesについて学習、理解するためのハードルが大幅に下がり、今後一挙に多くのエンジニアが活用できるようになる可能性が出てきています。

CNCFを中心としたベンダー中立な開発体制

 KubernetesCNCFによって開発が主導されています。CNCFでは、AWSMicrosoftGoogleといった大手クラウドベンダーだけではなく、競合となるコンテナオーケストレーションツールの開発元(DockerMesosphereなど)も参加しています。特定のベンダーのみに依存せずにオープンな形での議論と開発が進められており、開発元の都合で突然利用できなくなるといったリスクが少なくなっています。

 

0 件のコメント:

コメントを投稿