CRI容器运行时接口

2026-04-03 105 阅读 1 分钟 admin

CRI 是 Container Runtime Interface(容器运行时接口)的缩写。它在 Kubernetes 中是一个极其关键的概念

简单理解:CRI 是 kubelet 和容器运行时之间沟通的“标准普通话”。

下面从“为什么需要它”、“它是什么”、“怎么工作”三个角度帮你彻底搞懂。

  1. 为什么需要 CRI?(解决什么问题)
    在 Kubernetes 早期,kubelet 要直接支持各种容器运行时(Docker、rkt、容器等)。每增加一个新的运行时,kubelet 的代码就要改一遍,非常臃肿且难以维护。

CRI 的目的就是解耦:

kubelet 不需要关心底层用的是 Docker 还是 containerd。

容器运行时 只要实现了 CRI 规定的接口,就能被 Kubernetes 使用。

这就像电脑的 USB 接口:只要设备符合 USB 标准,电脑就能识别并使用,不需要为每个设备定制接口。

  1. CRI 具体是什么?(从规范层面)
    CRI 是一套基于 gRPC 的 API 接口定义。它规定了 kubelet 可以调用哪些方法来管理容器和 Pod。

主要包含两类服务:

RuntimeService:管理 Pod 和容器的生命周期(创建、启动、停止、删除等)。

ImageService:管理镜像(拉取、查看、删除等)。

任何实现了这些 gRPC 接口的程序,都可以作为 Kubernetes 的容器运行时。