深究Kubernetes源码-Kubelet-2 CRI框架分析
基于kubernetes1.26
CRI协议 https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto, 核心是RuntimeService和ImageService,即实现多Sandbox、Container和Image的操作。
其基本架构如下,Kubelet通过RuntimeService/ImageService作为gRPC Client与CRI-Server进行交互,目前主流实现CRI Server的项目包括Containerd和CRI-O

详细展开类图分析,kubelet主要通过kubeGenericRuntimeManager结构模块实现对运行时的操作。

初始化时通过RemoteRuntimeEndpoint(--container-runtime-endpoint)参数确定CRI Service gRPC endpoint,例如对接Containerd '--container-runtime-endpoint=unix:///var/run/containerd/containerd.sock'