k8s CSI 插件注册原理

打印 上一主题 下一主题

主题 939|帖子 939|积分 2817

目次

一、CSI Driver 怎样注册到 kubelet 的


1、启动 CSI Node Server


  • CSI Node Server 启动,CSI plugin(CSI driver)创建 Unix Domain Socket (csi-driver.sock)。
  • 位置 : 通常位于 /var/lib/kubelet/plugins//csi.sock。
  • 用途 : 用于后续 kubelet 与 CSI Node Server 之间的通信。
2、启动 Node Driver Registrar


  • Node Driver Registrar 启动,并创建 Unix Domain Socket (reg.sock)。
  • 位置 : 通常位于 /var/lib/kubelet/plugins_registry/-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 协议。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

风雨同行

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表