【シーアールアイオー】

CRI-O とは?

最終更新:
💡 Kubernetesの指示を、コンテナの実行につなぐ

KubernetesのCRIを実装し、OCI対応ランタイムを通してコンテナを動かすソフトウェア。ノード上でイメージやコンテナの実行を管理する。

📌 このページのポイント
Kubernetesの指示を実行につなぐkubeletKubernetesのノードCRI-Oコンテナの実行を管理CRIOCIランタイムruncなどが起動実行を依頼イメージの取得・管理ビルドは別の道具CRI-OはDockerデーモンなしで動く
kubeletのCRI呼び出しを受け、CRI-Oがイメージや実行を管理します。プロセスの起動にはOCI対応ランタイムを使います。
ひよこ ひよこ
CRI-Oは、何をする道具?
ペンギン先生 ペンギン先生
Kubernetesがコンテナを動かすために使うランタイムの一つだよ。ノードで動くkubeletから指示を受け、イメージを取得し、コンテナの起動や停止などを管理する。実際にプロセスを起動する部分では、runcなどのOCI対応ランタイムを使うんだ。
ひよこ ひよこ
CRIとOCIは、同じ規格?
ペンギン先生 ペンギン先生
役割が違うよ。CRIはKubernetesとランタイムがやり取りするためのインターフェース。OCIはコンテナのイメージや実行方法などの仕様を定めている。CRI-Oは、この二つの側をつなぐ役割を持つんだ。
ひよこ ひよこ
Dockerを使わないと、Dockerで作ったイメージは動かない?
ペンギン先生 ペンギン先生
Dockerで作ったイメージも利用できるよ。「イメージを作る道具」と「ノードで実行する道具」は分けて考えよう。ただし、Dockerの操作用ソケットなどに依存するアプリや運用スクリプトは、ランタイム変更時に確認が必要なんだ。
ひよこ ひよこ
KubernetesではDockerが使えなくなったの?
ペンギン先生 ペンギン先生
Kubernetes 1.24で削除されたのは、内蔵のdockershimという連携部分だよ。DockerそのものやDockerでの開発が禁止されたわけではない。Docker Engineをノードで使うなら、cri-dockerdのような別の連携ソフトウェアを使う方法もあるんだ。
ひよこ ひよこ
CRI-Oなら、必ず速くて安全?
ペンギン先生 ペンギン先生
Kubernetesの実行に役割を絞った設計だけれど、速度や安全性が一律に保証されるわけではないよ。Kubernetesとのバージョンの対応、設定や更新、必要な機能を確認して選ぼう。イメージのビルドや公開は、別の道具で行うんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「CRI-O」って出てきたら「Kubernetesの指示でコンテナを動かすランタイム」と思えばだいたいOK!
📖 おまけ:英語の意味
「CRI-O」 = CRIとOCIをつなぐランタイム
💬 KubernetesのContainer Runtime Interface(CRI)と、Open Container Initiative(OCI)の仕様を組み合わせる役割を表した名前だよ。

参考資料

← 用語集にもどる