CSI 插件如何注册到 kubelet 的

文章目录

  • [一、CSI Driver 如何注册到 kubelet 的](#一、CSI Driver 如何注册到 kubelet 的)
    • [1、启动 CSI Node Server](#1、启动 CSI Node Server)
    • [2、启动 Node Driver Registrar](#2、启动 Node Driver Registrar)
    • [3、Node Driver Registrar 获取 CSI Plugin 信息](#3、Node Driver Registrar 获取 CSI Plugin 信息)
    • [4、Kubelet 发现 Node Driver Registrar](#4、Kubelet 发现 Node Driver Registrar)
    • [5、Kubelet 获取 Node Server 信息](#5、Kubelet 获取 Node Server 信息)
    • [6、更新 Node 和 CSINode 对象](#6、更新 Node 和 CSINode 对象)
    • 7、通知注册状态

一、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 协议。

相关推荐
Wpa.wk8 小时前
容器编排 - 了解K8s(pod, deployment,service,lable等概念)
经验分享·测试工具·docker·云原生·容器·kubernetes
江畔何人初8 小时前
kubernet与docker的关系
linux·运维·云原生
xuefuhe9 小时前
Kubernetes基础入门4 应用的扩展与收缩
云原生·容器·kubernetes
Wpa.wk11 小时前
容器编排 - K8s - 配置文件参数说明和基础命令
经验分享·测试工具·docker·云原生·容器·kubernetes
掘根14 小时前
【即时通讯系统】项目框架与微服务拆分设计
微服务·云原生·架构
杭州杭州杭州14 小时前
Docker
运维·docker·容器
一体化运维管理平台15 小时前
容器监控难题破解:美信监控易全面支持K8s、Docker
云原生·容器·kubernetes
江畔何人初15 小时前
service发现
linux·运维·云原生
造夢先森16 小时前
Clawdbot(OpenClaw)安装部署教程
人工智能·微服务·云原生
qiubinwei16 小时前
kubeadm部署K8S集群(踩坑实录)
云原生·容器·kubernetes