[AI生成] k8s kubelet和csi插件交互流程

一、整体架构

Kubelet 与 CSI 插件的交互采用 gRPC 通信方式,kubelet 作为客户端主动调用 CSI 插件提供的服务接口。整体架构如下图所示:

kubelet-csi交互流程图-整体架构

图1:Kubelet 与 CSI 插件交互整体架构

二、插件注册流程

CSI 插件通过在指定目录创建 Unix Domain Socket 文件进行注册,kubelet 的 Plugin Watcher 通过文件系统事件发现并注册插件。详细流程如下:

kubelet-csi交互流程图-插件注册流程

图2:CSI 插件注册发现流程

三、卷挂载流程(NodePublishVolume)

当 Pod 需要使用 CSI 卷时,Volume Manager 协调完成卷的挂载流程。详细流程如下:

kubelet-csi交互流程图-卷挂载流程

图3:CSI 卷挂载流程

四、卷卸载流程(NodeUnpublishVolume)

当 Pod 被删除时,Volume Manager 协调完成卷的卸载流程。详细流程如下:

kubelet-csi交互流程图-卷卸载流程

图4:CSI 卷卸载流程

五、关键代码位置汇总

5.1 Kubelet 侧核心代码

  • pkg/kubelet/config/apiserver.go - Apiserver 配置源,list/watch 实现
  • pkg/kubelet/config/config.go - PodConfig 多路复用器
  • pkg/kubelet/kubelet.go - kubelet 主逻辑,makePodSourceConfig()
  • pkg/kubelet/volumemanager/volume_manager.go - Volume Manager 核心逻辑
  • pkg/kubelet/pluginmanager/plugin_manager.go - Plugin Manager
  • pkg/kubelet/pluginmanager/pluginwatcher/plugin_watcher.go - Plugin Watcher
  • pkg/volume/csi/csi_plugin.go - CSI 插件注册逻辑
  • pkg/volume/csi/csi_client.go - CSI gRPC 客户端
  • pkg/volume/csi/csi_mounter.go - 卷挂载/卸载逻辑

5.2 CSI 规范核心接口

  • Identity Service: GetPluginInfo, GetPluginCapabilities, Probe
  • Node Service: NodeStageVolume, NodeUnstageVolume, NodePublishVolume, NodeUnpublishVolume, NodeGetInfo
  • Controller Service: CreateVolume, DeleteVolume, ControllerPublishVolume, ControllerUnpublishVolume

posted on 2026-06-28 15:16  王景迁  阅读(4)  评论(0)    收藏  举报

导航