この記事はKubernetes Advent Calendar 2017の10日目の記事です。
この記事では、cri-oの今について書いていきたいと思います。
cri-oとは
まず初めにcri-oの概要を。
cri-oはKubernetes専用に開発が進められているコンテナランタイムです。
サービスとしてシステム上に常駐し、kubeletがcri-oを操作、cri-oがコンテナランタイムを操作するという橋渡し的な役割を果たします。
間に立っていい感じに動いてくれます。
そのcri-oは2つの標準に準拠しています。
1つはコンテナランタイムとコンテナイメージの標準仕様を規定しているOCI(Open Container Initiative)
もう1つはKubernetesとコンテナランタイムの間でのAPI仕様であるCRI(Kubernetes Container Runtime Interface)です。
OCIに準拠していることにより、Dockerイメージ等のOCI準拠のイメージをそのまま利用でき、また、CRIに準拠していることによりKubernetesから操作ができるようになっています。
Kubernetesとcri-oのバージョンの対応関係
Kubernets-incubator/cri-oにも記載がありますが、Kubernetesとcri-oのバージョンの関係は下記のようになります。
| Version - Branch | Kubernetes branch/version | Maintenance status | 
|---|---|---|
| CRI-O 1.0.x - release-1.0 | Kubernetes 1.7 branch, v1.7.x | Maintenance is manual, only bugs will be patched | 
| CRI-O 1.8.x - release-1.8 | Kubernetes 1.8 branch, v1.8.x | Maintenance is manual, only bugs will be patched | 
| CRI-O HEAD - master | Kubernetes master branch | Changes in main Kubernetes repo about CRI are actively implemented in CRI-O | 
cri-oのv1.0がリリースされた時のみKubernetesとのバージョンが異なっていますが、それ以外は基本的にKubernetesのバージョンと同じバージョンが作成されるようになっています。
各バージョンのメンテナンスに関しては、過去のバージョンに関してはバグの修正があればパッチが当てられ、最新のバージョン(master)はKubernetesのCRIに変更があれば随時対応されます。
Current Roadmap
cri-oのCurrent Roadmapは下記のようになっています。
- 基本的なPod/Containerのライフサイクル、基本的なイメージのpull(完了)
- ttyハンドリングと状態管理のサポート(完了)
- kubeletとの基本的な統合(完了)
- ログ管理、CNIによるネットワーク統合、プラガブルなイメージ/ストレージ管理のサポート(完了)
- exec/attachのサポート(完了)
- 完全に自動化されたkubernetesのe2eテストを失敗なしで実行する
- 
Kubernetesのリリースを追跡する
1~5は既に対応が完了しており、現在は6のKubernetesのe2eテストをすべて通す対応を行っているようです。issueを見るとe2eテストの結果は149/151と、あと2件テストが通っていない状況のようなので、もう少ししたら6の対応も終わるのかなと思います。
Tutorialに関して
cri-oのプロジェクトにも他の多くのプロジェクトと同様にTutorialが用意されており、cri-oを試す方法が提供されています。
ただ、現在(2017/12/10)Tutorialに記載されている通りに動かしても上手くいきません。
私が試した環境に問題があるのかもしれませんが、少なくとも私は
- GCPにUbuntu16.10のイメージが見つからない
- コマンドにsudoが必要なものがある
- イメージのpullに失敗する
といった現象を確認し、3が失敗することにより先に進めることができなくなってしまいました。
回避方法はあるのかもしれませんが、現状Tutorialを利用して手軽に動作確認はできないかと思います。
minikubeで作成した環境にはcri-oがインストールされているので、もしかしたら手軽にcri-oを試すことができるかもしれません。(試したわけではないですが...)
何かわかれば、また記事に書きたいと思います。
まとめ
簡単ではありますが、cri-oの今の状況を書きました。
コンテナランタイムとして基本的な機能は実装されており、現在はKubernetesとより上手く連携させることに力を入れているのかと感じました。
そのあたりの対応が終わった後にcri-oがどうなっていくのか、引き続きWatchしていきたいと思います。