深究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的適配層。主要邏輯是關(guān)注VolumeAttachment,然后通過gRPC調(diào)用CSI Plugin執(zhí)行Volume的 Attach/Detach。類圖如下,核心是csiHandler。

其核心流程如下,主要在三個協(xié)程中:syncPV/syncVA/ReconcileVA

syncPV為同步PersistenVolume,為其設(shè)置Finializer。ReconcileVA主要同步VolumeAttachment,若VA狀態(tài)不符合預(yù)期,將VA加入到vaQueue,由syncVA進行進一步處理。核心流程為syncVA,處理VolumeAttachment,根據(jù)情況調(diào)用CSI ControllerPlugin,并更新VA狀態(tài)到預(yù)期狀態(tài)。

syncAttach/syncDetach核心流程是通過gRPC調(diào)用CSI Controller Plugin ControllerPublishVolume/ControllerUnpublishVolume,并同步VolumeAttachment狀態(tài)
標(biāo)簽: