DockerCon Europe 2017でDockerは、Docker PlatformおよびMoby ProjectにKubernetesを統合すると発表した。Docker EE(2017年末にベータ版が予定されている)の次期バージョンでは、SwarmとKubernetesのワークロードを同じクラスタ上で実行することが可能になる。ベータプログラムの一環として、MacおよびWindows用のDockerにもKubernetes統合“オプション”が用意される予定だ。
中央管理型のコントロールプレーン、プライベートレジストリによるサプライチェーン管理を備え、セキュリティ機能を拡張した“エンタープライズグレード”のコンテナプラットフォームであるDocker Enterprise Edition (EE)では近々、同一Linuxクラスタ上でのSwarmとKubernetesオーケストレータの稼働がサポートされるようになる。
SwarmとKubernetesを使用したDocker EEオーケストレーション(Docker Blogから引用)
2016年にDockerは、SwarmKitプロジェクトの成果を利用した“Swarm Mode”オーケストレーションをプラットフォームに加えた。その1年前にリリースされたKubernetesオーケストレーションプラットフォームは、シードプロジェクトとして、GoogleからCloud Native Computing Foundation (CNCF)に寄贈されている。DockerブログにはDockerが、複数のオーケストレーションテクノロジをサポートすることの必要性について、ユーザからのフィードバックを受けていることが記されている。
一部のユーザからは、エンドツーエンドのコンテナ管理に統合されたDockerプラットフォームを高く評価しながらも、コンテナスケジューリングにKubernetesなど他のオーケストレーションを使用したいというフィードバックを頂いています。Kubernetes上で動作するサービスをすでに設計しているから、あるいは自分たちの必要としている特別な機能をKubernetesが持っているから、というのがその理由です。
さらにDockerは、MacおよびWindows版のDocker Community Edition (CE)にも“Kubernetesオプション”を追加すると発表した。これらは2017年末のベータプログラムで提供される予定である(興味のある読者は、beta.docker.comにサインイン可能)。
次期バージョンのDockerプラットフォームでは、開発者自身のワークステーションで、プロダクション向けのアプリケーションをKubernetes上で開発およびテスト可能になります。運用担当者は、Docker Enterprise Editionのメリット – セキュアなマルチテナンシ、イメージスキャン、ロールベースのアクセス管理 – をすべて享受しながら、KubernetesあるいはSwarmのいずれかによってオーケストレーションされた運用環境上で、アプリを実行することができます。
Kubernetesコミュニティにはminikubeプロジェクトのように、ローカルワークステーション上のKubernetes開発セットアップをインストールするための“確立したソリューション”が構築されているが、“dockerの構築、実行、テストのイテレーションを安定してできるような構成は難しい”、とDockerブログでは述べられている。MacおよびWindows用のDockerにKubernetesサポートが追加されることにより、Docker ComposeとSwarmベースのアプリケーションとKubernetesアプリケーションを、同じ開発システムを使って構築することが可能になる。
Dockerではさらに、カスタムリソースとAPIサーバ集約レイヤを使用したKubernetesコンポーネントも開発しており、Docker ComposeアプリケーションをKubernetesネイティブなPodおよびServiceとして簡単にデプロイすることができる。Docker Blogでは、Docker Inc.の創業者でCTOであるSolomon Hykes氏が、Dockerに組み込まれるKubernetesのバージョンは“CNCF[Cloud Native Computing Foundation]が直接提供し、誰もが習熟しているvanilla Kubernetes”である、と述べている。“フォークでも、旧バージョンでもなく、ラップや制限もありません。” このようにKubernetesへの多大な投資を明らかにする一方で、Hykes氏は、Dockerが今後もSwarmにコミットすることも強調している。
オーケストレーションオプションとしてKubernetesをDockerに追加しましたが、SwarmとDockerを使って重要なアプリケーションを大規模に運用している顧客とユーザのために、今後も引き続きSwarmにコミットしていきます。
注目すべきなのは、Kubernetesプラットフォームがこの取り組みと並行して、2016年12月からContainer Runtime Interface (CRI)を導入することによって、Dockerコンテナランタイムとの結合性を低減する作業を続けていることだ。CRIを使用してコンテナランタイムをKubernetesに統合すべく、開発の進められているプロジェクトがいくつかある(運用レベルに達していないものもある)。Open Containers Initiative (OCI)に準拠したランタイムのcrio、CoreOSのrktコンテナランタイムであるrktlet、ハイパーバイザベースのコンテナランタイムであるfrakti、Dockerを動作させるコンテナ化実装のcri-containerdなどはその例だ。
Moby Projectを通じて、Dockerは昨年1年間、Kubernetesの採用とコントリビューションに取り組んできた。前述のContainerdやcri-containerdなどのコンテナランタイム開発プロジェクト、コンテナ運用のためのセキュアでポータブルでリーンなオペレーティングシステムを構築するLinuxKit、宣言的自己修復型インフラストラクチャの作成と維持のためのInfraKit、オーバーレイネットワーク用のlibnetwork、Dockerその他のコンテナプロジェクトがコンテナの署名と検証を行なうためのNotaryなどがある。
間もなく登場するKubernetesのDocker EEおよびCEへの統合の発表に関する追加情報は、Dockerのブログで確認することができる。ベータプログラムやbeta.docker.comへのサインアップも可能だ。
この記事を評価
- 編集者評
- 編集長アクション