K8S CSI 简单理解

发布时间 2023-06-28 14:03:41作者: 夜夜漫笔

https://enix.io/en/blog/kubernetes-storage-csi-plugin/ 

定义

CSI 是一个标准,来统一本地或远程持久化卷的动态提供。CSI 是K8S 和 存储提供者之间的接口。

存储提供者主要完成一下任务(接收k8s 指令):

  • 创建指定大小的卷
  • 调整卷的大小
  • 卷的快照
  • 基于快照创建卷
  • 删除卷
  • 卷附着并挂载在主机上

CSI 插件

插件由以下三部分组成

  • 存储系统本体
  • 控制插件。这是一个grpc 服务,接受k8s指令并调用存储提供者的API来管理卷
  • 节点插件。这是一个grpc 服务,在工作节点上挂载或卸载卷

控制插件

控制插件提供的主要几个功能:

CSI command                    Description
CreateVolume                   Create a volume
DeleteVolume                   Delete a volume
ControllerPublishVolume        Map a volume on a host
ControllerUnpublishVolume      Unmap a volume from a host

节点插件

节点插件主要用来管理工作节点上的卷,每个工作节点上都有有个这样的插件。

和控制插件一样,它通过grpc接收CSI 指令。

协作关系

K8S 给控制插件和工作插件发送CSI 指令,控制节点接收指令后会调用存储提供者的API来创建并映射数据卷。工作插件挂载并附着设备到相应的主机上,随后 K8S 将数据卷挂载到容器内部。