Skip to content

CRI-O

Kubernetes の Container Runtime Interface を実装した軽量コンテナランタイム。kubelet が runc や crun などの OCI ランタイムを通して Pod を動かせるようにする。

  • カテゴリ: Runtime
  • CNCF 成熟度: Graduated
  • 言語: Go
  • ライセンス: Apache-2.0
  • リポジトリ: cri-o/cri-o
  • ドキュメント基準コミット: 68f2617 (2026-06-22, main, バージョン行 1.37.0)

何をするものか

CRI-O は Kubernetes の Container Runtime Interface (CRI) を一点突破で実装したもの。kubelet が gRPC で CRI を話すと、CRI-O はその呼び出しを OCI ランタイム・イメージストア・ネットワークプラグインへの操作に翻訳する。吐くバイナリは crio の 1 本だけで、デーモンとして動く。エンドユーザ向けの汎用 CLI は持たない (README.md:102-107)。

CRI-O は他のランタイムが抱え込もうとする部分を委譲する。コンテナ実行は runc や crun などの OCI ランタイムへ、イメージは containers/image へ、ストレージは containers/storage へ、ネットワークは CNI へ渡す (README.md:113-119)。CRI-O 自身は kubelet とそれらの接着剤に徹する。

利用者は kubelet ただ一つに絞り、Kubernetes とバージョンを揃える。CRI-O の 1.x リリースは Kubernetes の 1.x に対応する。pinned コミットはバージョン 1.37.0 を報告し (internal/version/version.go:6)、リリース済みの v1.36.1 より上の開発線上にある。

いつ使うか

  • Kubernetes を動かしており、ランタイムをその用途ちょうどに絞りたい。守る面も運用する面も増やしたくない。
  • ランタイムのバージョンを Kubernetes のマイナーバージョンに固定したい。
  • ワークロードごとに分離方式を切り替えたい。通常の Pod は runc/crun、VM 分離が要る Pod は Kata Containers を runtime handler で選ぶ。
  • ローカルビルド用の単体コンテナエンジンや非 Kubernetes ホストが必要なら向かない。CRI-O はユーザ CLI もイメージビルダーも持たず、それは設計上スコープ外 (README.md:102-107)。

このディープダイブの構成

出典

  1. cri-o/cri-o (GitHub)
  2. ADOPTERS.md
  3. install.md
  4. CNCF Announces Graduation of CRI-O (2023-07-19)
  5. CNCF to host CRI-O (2019-04-08)
  6. Red Hat contributes CRI-O to the CNCF
  7. InfoQ: CRI-O Graduates from CNCF (2023-09)
  8. CRI-O on CNCF projects
  9. OpenShift Container Platform 4 defaults to CRI-O
  10. Oracle Linux Cloud Native Environment: CRI-O
  11. containerd
  12. opencontainers/runc