深究Kubernetes源码-存储-7 Extenal Attacher机制流程分析
分析基于kubernetes v1.26
同ProvisionerController,CSIAttachController属于kubernetes-csi/external-attacher项目https://github.com/kubernetes-csi/external-attacher,作为CSI Controller Plugin SideCar运行,是Kubernetes与CSI Plugin的适配层。主要逻辑是关注VolumeAttachment,然后通过gRPC调用CSI Plugin执行Volume的 Attach/Detach。类图如下,核心是csiHandler。

其核心流程如下,主要在三个协程中:syncPV/syncVA/ReconcileVA

syncPV为同步PersistenVolume,为其设置Finializer。ReconcileVA主要同步VolumeAttachment,若VA状态不符合预期,将VA加入到vaQueue,由syncVA进行进一步处理。核心流程为syncVA,处理VolumeAttachment,根据情况调用CSI ControllerPlugin,并更新VA状态到预期状态。

syncAttach/syncDetach核心流程是通过gRPC调用CSI Controller Plugin ControllerPublishVolume/ControllerUnpublishVolume,并同步VolumeAttachment状态

