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

相关推荐
G皮T5 小时前
【Kubernetes】K8s 的鉴权管理(二):基于属性 / 节点 / Webhook 的访问控制
kubernetes·k8s·鉴权·rbac·webhook·访问控制·abac
Eliauk &5 小时前
【docker】通过云服务器安转Docker
java·运维·服务器·spring cloud·docker·容器
ly14356786195 小时前
92、K8s之ingress下集
云原生·容器·kubernetes
晚妍5 小时前
Kubernetes (k8s)v1.27.1版本安装步骤
云原生·容器·kubernetes
Flying_Fish_roe7 小时前
Kubernetes 与 springboot集成
spring boot·容器·kubernetes
一直奔跑在路上8 小时前
【kubernetes】Ingress和Ingress-Controller介绍,高可用应用案例
云原生·容器·kubernetes
摇曳的精灵8 小时前
单机docker-compose部署minio
运维·docker·容器·文件·minio·compose
Hai9902189 小时前
ingress对外服务
容器·kubernetes
Q行天下10 小时前
x86的Docker环境下载ARM版容器镜像
arm开发·docker·容器
无休居士11 小时前
你天天用微服务还不知道心跳检测机制是什么?
微服务·zookeeper·云原生·eureka·架构·etcd·consul