1. containerd 的 CRI plugin 如何实现 Kubernetes 的容器运行时接口?
请说明 containerd 的 CRI plugin 如何实现 Kubernetes 的容器运行时接口?
- CRI 是 kubelet 与运行时之间的接口
- containerd 的 CRI plugin 实现 RuntimeService/ImageService
- 与 kubelet 的 gRPC 交互
Kubernetes 的 CRI(Container Runtime Interface)定义了 kubelet 与容器运行时之间的 gRPC 接口,包含 RuntimeService(容器生命周期:创建/启动/停止/删除)与 ImageService(镜像拉取/检查)。containerd 通过内置的 CRI plugin(cri 插件)实现该接口:containerd 作为运行时,暴露 CRI 的 gRPC 服务,kubelet 通过 gRPC 调用与 containerd 交互,管理 Pod 沙箱(sandbox)与容器。containerd 负责容器创建、镜像管理、运行时(runc/gVisor)调用,CRI plugin 把 kubelet 请求转换为 containerd 内部操作。这是 K8s 使用 containerd 作为运行时(或 CRI-O)的机制。
CRI 是 kubelet 与运行时的抽象接口,containerd 的 CRI plugin 实现 RuntimeService/ImageService,kubelet 经 gRPC 调用。