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

相关推荐
9命怪猫4 小时前
[K8S小白问题集] - Calico好在哪里?
网络·云原生·容器·kubernetes
齐潇宇4 小时前
k8s-Helm管理器
linux·运维·云原生·容器·kubernetes
容器魔方4 小时前
让Skill从执行中生长:Cloud Agent Harness的三段式Skill自进化机制
云原生·开源·资讯
叶~小兮4 小时前
K8S进阶核心综合学习笔记(持久化存储+特殊容器+调度管理)
笔记·学习·kubernetes
Zhu7585 小时前
[软件部署]在k8s环境部署alist
云原生·容器·kubernetes
2401_840192276 小时前
k8s的crd、operator、cr分别是什么?
运维·分布式·kubernetes·prometheus
Cat_Rocky7 小时前
K8S-Helm简单学习分享
学习·容器·kubernetes
ziqi5228 小时前
Docker compose 和共享数据
运维·docker·容器
安当加密9 小时前
AES-256直接加密就够了?微服务架构下的敏感数据加密:信封加密、格式保留加密和字段级加密全解析
微服务·云原生·架构