k8s CSI 插件注册原理
一、CSI Driver 如何注册到 kubelet 的
1、启动 CSI Node Server
-
CSI Node Server 启动,CSI plugin(CSI driver)创建 Unix Domain Socket (
csi-driver.sock
)。 -
位置 : 通常位于
/var/lib/kubelet/plugins/<drivername.example.com>/csi.sock
。 -
用途 : 用于后续 kubelet 与 CSI Node Server 之间的通信。
2、启动 Node Driver Registrar
-
Node Driver Registrar 启动,并创建 Unix Domain Socket (
reg.sock
)。 -
位置 : 通常位于
/var/lib/kubelet/plugins_registry/<drivername.example.com>-reg.sock
。 -
用途 : 用于 kubelet 与 Node Driver Registrar 之间的通信。
-
实现逻辑 : Node Driver Registrar 实现 GetInfo 和 NotifyRegistrationStatus 方法。
3、Node Driver Registrar 获取 CSI Plugin 信息
-
Node Driver Registrar 连接到 CSI plugin(CSI driver) 的 Unix Domain Socket (
csi-driver.sock
)。 -
Node Driver Registrar 调用 Identity Server 的 GetPluginInfo 方法以获取 获取 CSI plugin 的 driver 名称。
-
通信方式 : Unix Domain Socket 通过 gRPC 协议。
4、Kubelet 发现 Node Driver Registrar
-
Kubelet 的pluginManager 模块通过 Watcher 监控 /var/lib/kubelet/plugins_registry/ 目录。
-
Kubelet 发现 Node Driver Registrar 的 Unix Domain Socket (reg.sock)。
-
Kubelet 通过 Unix Domain Socket (reg.sock) 调用 GetInfo 方法以获取 csi plugin 类型、csi plugin 的 driver 名称、csi plugin 暴露的 grpc 服务 socket 地址以及 csi plugin 支持的版本。
-
通信方式 : Unix Domain Socket 通过 gRPC 协议。
5、Kubelet 获取 Node Server 信息
-
Kubelet 使用从 Node Driver Registrar 获取的 socket 地址 (csi-driver.sock) 连接到 CSI Node Server。
-
Kubelet 调用 Node Server 的 NodeGetInfo 方法以获取 Node Server 的详细信息,如nodeID、存储卷最大挂载数、拓扑信息。
-
通信方式 : Unix Domain Socket 通过 gRPC 协议。
6、更新 Node 和 CSINode 对象
-
Kubelet 根据从 Node Server 获取的信息更新 Node 节点的 Annotations。
-
Kubelet 创建或更新 CSINode 对象以记录 Node Server 支持的 CSI Plugin 信息。
7、通知注册状态
-
Kubelet 通过 Unix Domain Socket (reg.sock) 调用 Node-Driver-Registrar 的 NotifyRegistrationStatus 方法以通知 Node-driver-registrar 注册是否成功。
-
通信方式 : Unix Domain Socket 通过 gRPC 协议。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体