欢迎光临散文网 会员登陆 & 注册

深究Kubernetes源码-存储-6 Extenal Provisioner机制流程分析

2022-09-13 14:51 作者:黑暗光影DIY  | 我要投稿

分析基于kubernetes v1.26 

ProvisionController属于kubernetes-csi/external-provisioner项目https://github.com/kubernetes-csi/external-provisioner,核心功能是处理CSI Volume  Plugin PV Create/Delete,是Kubernetes到CSI Plugin之间的适配层,Kubernetes ControllerManager没有类似于Kubelet一样的DevicePlugin注册机制,因此需要以SideCar方式,从Kubeapiserver获取PV/PVC,然后公共gPRC调用CSI Plugin。

首先看下核心类图模块:

主要通过csiProvisioner实现Provisioner接口完成PV的Provision和Delete,主要流程如下,主要启动协程同步PV和PVC。

syncClaim判断PVC是否需要动态创建PV,若需要则调用csiClient通过gRPC CreateVolume调用CSI Plugin创建Volume,并生成PV

Provision的基本条件是PVC包含"volume.kubernetes.io/storage-provisioner: {driverName}"或"volume.beta.kubernetes.io/storage-provisioner: {driverName}" Annotation的 PVC,例如OpenStack Cinder CSI则处理包含volume.beta.kubernetes.io/storage-provisioner: cinder.csi.openstack.org Annotation  的PVC。

syncVolume判断Volume是否需要释放删除,如需要释放则只需删除操作。


深究Kubernetes源码-存储-6 Extenal Provisioner机制流程分析的评论 (共 条)

分享到微博请遵守国家法律