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

相关推荐
广州中轴线19 小时前
OpenStack on Kubernetes 生产部署实战(十三)
容器·kubernetes·openstack
晚霞的不甘20 小时前
Flutter for OpenHarmony天气卡片应用:用枚举与动画打造沉浸式多城市天气浏览体验
前端·flutter·云原生·前端框架
Tadas-Gao20 小时前
TCP粘包现象的深度解析:从协议本质到工程实践
网络·网络协议·云原生·架构·tcp
礼拜天没时间.21 小时前
深入Docker架构——C/S模式解析
linux·docker·容器·架构·centos
切糕师学AI21 小时前
Helm Chart 是什么?
云原生·kubernetes·helm chart
猫头虎21 小时前
如何使用Docker部署OpenClaw汉化中文版?
运维·人工智能·docker·容器·langchain·开源·aigc
会周易的程序员21 小时前
openplc runtimev4 Docker 部署
运维·c++·物联网·docker·容器·软件工程·iot
陈桴浮海21 小时前
【Linux&Ansible】学习笔记合集三
linux·运维·云原生·ansible
小Pawn爷21 小时前
1.Docker基础
运维·docker·容器
chinesegf21 小时前
清理docker残留镜像images
运维·docker·容器