今後はコンテナーストレージの標準化が課題、CNCFのクリス・アニスジックCOO
GKE、AKS、EKSを含む54基盤でコンテナーのポータビリティを保証、CNCF
2018年04月24日 12時00分更新
「Open Container Initiative(OCI)」は、2015年当時、DockerとCoreOSがそれぞれ別に標準化を進めていたコンテナーの仕様を統一することを目的に、Docker、CoreOS、およびAWS、Google、Microsoft、IBMなど主要プラットフォームベンターが参加して2015年6月に発足した団体だ。2年後の2017年7月に、コンテナーランタイムとコンテナーイメージの最初の標準仕様「OCI v1.0」を発表。現在主要なコンテナーランタイムはすべてOCI v1.0に準拠しており、OCIが目指したコンテナーがプラットフォーム間でポータブルになるエコシステムが実現されつつある。
OCIは、コンテナーオーケストレーターKubernetesのプロジェクトを主導する団体Cloud Native Computing Foundation(CNCF)と技術連携している。CNCFはKubernetesとコンテナーとのインタフェースを「Container Runtime Interface(CRI)」として標準化しようとしており、OCI準拠かつCRI準拠のコンテナーランタイムKubernetes専用コンテナーランタイム「cri-o(クリオ)」を2017年10月に正式リリースしている。cri-oはDockerに依存しないコンテナーランタイムだが、一方で、CNCFはDockerのOCI準拠を維持しやすいようにDockerからコンテナーランタイムを切り出したCRI準拠の「containerd(コンテナーディー)」も2017年12月に正式リリースしている。
CNCFは2018年3月に、Kubernetesを最初の「卒業プロジェクト(Graduated Project)」に認定したが、これはKubernetesがCNCFを卒業するという意味ではなく、Kubernetesのプロジェクトが一定の成熟度に達したことを認定したものだ。Kubernetesの開発プロジェクトは引き続きCNCFが主導していく。
2018年4月19日に都内で開催されたKubernetes/Docker技術イベント「Japan Container Days」に合わせて来日したOCI エグゼクティブディレクター 兼 CNCF COOのクリス・アニスジック氏に、OCIによるコンテナー標準化の成功要因や、CNCFが2017年11月に発表したKubernetes適合認定プログラム「Certified Kubernetes Conformance Program」について話を聞いた。
--OCIとCNCFの現状について簡単に教えてください。
OCIは、2015年の発足当初はコンテナーランタイムの仕様の標準化のみにフォーカスした小さいプロジェクトでした。2017年7月にコンテナーランタイムとコンテナーイメージの最初の標準仕様「OCI v1.0」を発表し、現在はOCI v1.0準拠の認証や、コンテナーイメージの配布プロトコルの標準化などより活動の幅を広げています。参加メンバーも38社に増えました。
CNCFも、2014年に60社の発足メンバーでスタートしたときはKubernetesのプロジェクト1つしかありませんでした。現在は18のプロジェクトを主導しており、AWS、Google、Microsoft、IBM、Alibaba Cloud、Oracleといったトップ6のクラウドプロバイダーを含む207社がメンバーになっています。
--OCI発足から2年でコンテナーランタイムの標準仕様「OCI v1.0」が完成し、広く普及しました。OCIの標準化の取り組みは非常にうまく進んだように見えます。
OCIの標準仕様は、Dockerのコンテナーランタイム「runC」をベースに作成しています。コンテナーイメージの仕様もDockerをベースにしました。すでにDockerによって市場に広く普及していたテクノロジーをベースに、コニュニティメンバーからの意見をもらいながら標準化したので、うまく進んだのです。
OCI v1.0の仕様に対応することで、コンテナーランタイムとコンテナーイメージがポータブルであることが保証されます。
--OCIがDockerベースでコンテナーランタイムの標準化を進めた一方で、CNCFはDockerに依存しないランタイムのcri-oをリリースしています。さらにはDockerのcontainerdもリリースしています。その背景は?
cri-oもcontainerdもrunCから作ったコンテナーランタイムですが、cri-oはKubernetesに特化したもの、containerdはDockerからランタイムを分離したもので、Kubernetes以外のコンテナーオーケストレーターにも対応します。CNCFは、Kubernetesで複数のタイプのコンテナーランタイムを扱うためのインタフェース標準仕様CRIを用意しました。cri-oもcontainerdも、さらにはCoreOSのランタイムrktもCRIに準拠しており、Kubernetesで同じようにオーケストレーションできます。
cri-oとcontainerdのそれぞれの開発背景ですが、cri-oは、OCI準拠のコンテナーランタイムをKubernetesのノードコンポーネント「Kubelet」に統合することを目的に作りました。一方、containerdはDockerコンテナーのkubernetes上での動作を保証するために作りました。これまでに何度か、Dockerのエンジンが新しくなるとDockerコンテナーがKubernetesで動かなくなることがあったので、今回Dockerからコンテナーランタイムを分離して、常にKubernetesのインタフェース標準仕様CRIに対応させることでエコシステムに影響が出ないようにしました。
Kubernetesのエコシステムでは、もうコンテナーランタイムの部分で競争する必要はありません。各社は、コンテナーエンジンのセキュリティ強度や処理速度などを高まることに集中できます。
--CNCFにはトップ6のクラウドベンダーが参加し、それぞれのクラウドでKubernetesのマネージドサービス(KaaS)を提供しています。CNCFは各社のKaaSにどのように関わっているのでしょうか。
2017年11月に、各社のKaaSがKubernetesに準拠していることを認定するプログラム「Certified Kubernetes Conformance Program」を開始しました。この認定プログラムでは、Kubernetesの機能セットの一部について、各社のKaaSでE2Eテストを実施してもらい、“実用に必要十分”なレベルでKubernetesに準拠していることを確かめるものです。
テストツールはGitHubからダウンロードできるようになっており、プラットフォームベンダーは自社で実施したテスト結果をCNCFに提出して、CNCF全体で結果をレビューする体制です。
これまでに、54社のプラットフォームがCertified Kubernetes Conformance Programに合格しました。GCPのGKE、AzureのAKS、KubernetesをサポートするIBM Cloud Container ServiceやAlibaba Cloud Container Serviceなど、主要なパブリッククラウドのKaaSは認定に合格済みです。またAWSのEKSも、つい16日前(インタビューは4月19日に実施)に認定に合格しました。
--AzureのACI(Azure Container Instance)やAWSのFargateなど、Kubernetesをライトに使うタイプのKaaSはCertified Kubernetes Conformance Programの認定対象になるのでしょうか?
ACI、AWS Fargateは認定対象になりません。ACIは「Virtual Kubelet」というテクノロジーを使い、コンテナーノードに仮想的なKubernetesのエージェントを割り当てて管理する特殊なサービスです。現状、Virtual Kubeletは認定対象にしていないので、ACIも認定対象外になります。AWS Fargateの内部構造は詳細が見えていませんが、ACIと似た仕組みを採用していると思われ、同様に認定対象外です。
--「Certified Kubernetes Conformance Program」の認定は何を保証するものでしょうか?
このプログラムは、サービスがKubernetesそのものであることを認定するのではなく、サービスが実用に必要十分なKubernetesの機能を備えていることを認定します。認定されたプラットフォーム間では、コンテナーのポータビリティが保証されます。
厳密には、完全なポータビリティを提供するためには、コンテナーのネットワークとストレージについても標準化していく必要があります。コンテナーのポータビリティにおいて、ネットワークの課題はシンプルでそれほど問題でありません。CNCFはコンテナーネットワークの標準仕様「CNI」を用意しています。
一方、コンテナーストレージのポータビリティは今後の大きな検討課題です。CNCFは、コンテナーストレージの標準仕様「CSI」を策定しており、Dell EMCなどはCSI準拠のストレージを提供しています。しかし、CSIはブロックストレージに限定された仕様であり、クラウドベンダーが様々なレイヤーで提供しているストレージサービスに現状は対応しきれていないのです。