Container Runtime Interface (CRI)
Kubernetesのkubeletがコンテナランタイムと通信するための標準化されたインターフェース(gRPC API)。CRIのおかげで、実装さえあればcontainerdやCRI-Oなど任意のランタイム上でKubernetesが動く。
背景として、初期のKubernetesは内部の「シム」を通じてDockerと密結合していた。2016年のCRIがそれを抽象化し、kubeletはCRIを話し、CRIを実装したランタイムなら何でも差し込めるようになった。これがDocker離れを可能にし、Kubernetes 1.24での悪名高い「dockershim」削除につながった。騒ぎにはなったが、実際に影響を受けた人は少なく、Dockerイメージはcontainerd経由で問題なく動く。現在最も一般的なCRIランタイムはcontainerd(事実上の標準)とCRI-O(Red Hat)で、その下で実際にコンテナを起動するのが低レベルランタイムのruncである。利点はKubernetesがランタイムに依存しないことで、Kubernetes自体を変えずに、gVisorやKataのようなより安全なランタイムへ切り替えられる。クラウドネイティブの基盤となる抽象化である。