CSI 基础
CSI 只支持 PV,PVC 方式, 不支持 Volume 方式;
官方资料: https://kubernetes-csi.github.io/docs/
How to Write CSI Plugin: https://arslan.io/2018/06/21/how-to-write-a-container-storage-interface-csi-plugin/
目前版本信息:
Kubernetes | CSI Version | CSI Status |
---|---|---|
v1.9 | v0.1 | Alpha |
v1.10 | v0.2 | Beta |
v1.11 | v0.3 | Beta |
v1.12 | v0.3 | Beta |
v1.13 | v1.0.0 | GA |
CSI 基础架构:
下图是典型的数据卷生命周期流程图, 一般块存储都是按照这个流程执行;
PV-Controller
Controller Manager 的一部分, 主要做卷的 provision/delete,pv,pvc 绑定;
PV Controller 通过监听 API Server 中的 PV,PVC,SC 三类资源更新, 当监听到这些资源的创建, 删除, 修改时, PV Controller 做创建, 删除, 绑定, 回收.
PV Controller 会调用注册的 Provisioner 完成存储卷的创建, 然后创建 PV 对象, 并与 PVC 进行绑定;
AD-Controller
Controller Manager 的一部分, 主要从事块设备的 attach/detach(例如: rbd,ebs 块设备需要在 mount 之前先 attach 到主机上)
非必选: attach/detach 可以通过 kubelet 的 volume manager 驱动, Controller Manager 提供配置可以禁用.
通过在 kubelet 中 --enable-controller-attach-detach, 设置是否通过 AD Controller 来管理分配到本节点的 pod volume AD;
--enable-controller-attach-detach=true: 通过 AD-Controller 做 AD,kubelet 禁用;
--enable-controller-attach-detach=false: 通过 kubelet 做 AD,AD-Controller 对本节点禁用;
作用: 当 API Server 中 pod(配置了 pvc) 与 node 间的关系发生变化时, 通过调用存储插件将这个 pod 关联的 PV Attach/Detach 到对应 node 上. 完成后通知其它关联组件 (kubelet).
Volume Manager
运行在 kubelet 里, 主要完成 attach/detach/mount/unmount;
mount/unmount 操作是可选的, 通过 kubelet 配置的 enable-controller-attach-detach 参数确定;
当 pod 调度到这个 node 上后才会有卷的相应操作, 所以它的触发端是: kubelet 根据 Pod Manager 里 pod spec 里的存储配置来触发卷的挂载操作;
Kubelet 会监听到调度到该节点上的 pod, 把 pod 缓存到 Pod Manager 中;
VolumeManager 通过 Pod Manager 获取 PV/PVC 的状态, 并分析出具体的 attach/detach,mount/umount 操作, 然后调用 plugin 进行相应的业务处理;
External-Provisioner
监听 Kubernetes PVC 对象, 并触发对 CSI Plugin 的 CreateVolume 和 DeleteVolume 操作;
CreateVolume 成功后, 创建 PV 对象;
External-Attacher
监听 VolumeAttachment 对象, 触发 ControllerPublish 和 ControllerUnPublish 操作, 通过 CSI endpoint 触发;
Driver-Register
向 Kubelet 注册 CSI Plugin 程序, 并将 NodeId 添加到 Kubernetes Node 对象的 annotation 里面.
Volume Plugin
存储提供的扩展接口, 包含了各类存储提供者的 plugin 实现;
会调用 CSI Plugin 的 NodeStageVolume,NodePublishVolume 接口实现格式化, 挂载等功能.
来源: https://yq.aliyun.com/articles/705632