架構

DirectPV 根據 CSI 規格實作。它包含以下元件,這些元件以 Kubernetes 中的 Pod 形式執行

  • 控制器
  • 節點伺服器

當 DirectPV 包含來自 DirectCSI 的舊版磁碟區時,以下額外元件也會以 Pod 形式執行

  • 舊版控制器
  • 舊版節點伺服器

控制器

Diagram showing the flow of events from a Persistent Volume Claim through the CSI Provisioner or CSI Resizer to the Controller Server and finally to changes in either the DirectPVDrive CRD or the DirectPVVolume CRD

控制器以名為 controllerDeployment Pod 執行。DirectPV 控制器有三個複本。這些複本會選出一個執行個體來處理請求。

每個 Pod 都有下列容器

  • 控制器

    處理 CSI 建立、刪除和擴充磁碟區的請求。

  • CSI 佈建器

    將來自 Persistent Volume Claim 的磁碟區建立和刪除請求橋接至 CSI 控制器。

  • CSI 調整器

    將來自 Persistent Volume Claim 的磁碟區擴充請求橋接至 CSI 控制器。

控制器伺服器

控制器伺服器以名為 controller 的容器,在 controller Deployment Pod 中執行。

它處理下列請求

  • 建立磁碟區

    控制器伺服器會在適當的 DirectPVDrive CRD 上反轉請求的儲存空間後,建立新的 DirectPVVolume CRD。如需詳細資訊,請參閱磁碟區排程指南

  • 刪除磁碟區

    控制器伺服器會在釋放先前在 DirectPVDrive CRD 中保留的空間後,刪除未繫結磁碟區的現有 DirectPVVolume CRD。

  • 擴充磁碟區

    控制器伺服器會在 DirectPVDrive CRD 中反轉請求的儲存空間後,擴充現有的 DirectPVVolume CRD。

舊版控制器

Diagram showing the flow of events from a persistent volume claim using the legacy style direct-csi-min-io storage class through the CSI provisioner or CSI REsizer to the Controller Server and finally either the DirectPVDrive CRD or the DirectPVVolume CRD

舊版控制器以名為 legacy-controllerDeployment Pod 執行。舊版控制器在任何 Kubernetes 節點中都有三個複本。這些複本會選出一個執行個體來處理請求。

每個 Pod 都有下列容器

  • CSI 佈建器

    將來自 Persistent Volume Claim 的舊版磁碟區建立和刪除請求橋接至 CSI 控制器。

  • 控制器

    僅處理 CSI 刪除和擴充磁碟區的請求。禁止建立磁碟區的請求。舊版控制器僅適用於先前在 DirectCSI 中建立的舊版磁碟區。

  • CSI 調整器

    將來自 Persistent Volume Claim 的舊版磁碟區擴充請求橋接至 CSI 控制器。

舊版控制器伺服器

舊版控制器伺服器以容器 controller,在 legacy-controller Deployment Pod 中執行。它處理下列請求

  • 建立磁碟區

    控制器伺服器會針對此請求傳回錯誤。DirectPV 不會建立新的舊版 DirectCSI 磁碟區。

  • 刪除磁碟區

    控制器伺服器會在釋放先前在 DirectPVDrive CRD 中保留的空間後,刪除未繫結磁碟區的 DirectPVVolume CRD。

  • 擴充磁碟區

    控制器伺服器會在 DirectPVDrive CRD 中反轉請求的儲存空間後,擴充 DirectPVVolume CRD。

節點伺服器

Diagram showing the flow of events from kubelet to the Node Server, the actions taken by event type, and updating the DirectPVDrive CRD or DirectPVVolume CRD

節點伺服器以名為 node-serverDaemonSet Pod,在所有或選取的 Kubernetes 節點中執行。每個節點伺服器 Pod 都會在節點上獨立執行。

每個 Pod 都有下列容器

  • 節點驅動程式註冊器

    將節點伺服器註冊至 kubelet 以取得 CSI RPC 呼叫。

  • 節點伺服器

    處理 stageunstagepublishunpublishexpand 磁碟區 RPC 請求。

  • 節點控制器

    處理來自 DirectPVDriveDirectPVVolumeDirectPVNodeDirectPVInitRequest 的 CRD 事件。

  • 存活探測 (Liveness probe)

    公開一個 /healthz 端點,供 Kubernetes 檢查節點伺服器的存活狀態。

舊版節點伺服器

舊版節點伺服器以名為 legacy-node-serverDaemonSet Pod 形式在所有或選定的 Kubernetes 節點上運行。每個舊版節點伺服器 Pod 都獨立運行在一個節點上。

每個 Pod 都包含以下正在運行的容器

  • 節點驅動程式註冊器

    向 kubelet 註冊舊版節點伺服器以接收 CSI RPC 呼叫。

  • 節點伺服器

    處理 stageunstagepublishunpublishexpand 磁碟區 RPC 請求。

  • 存活探測 (Liveness probe)

    公開 /healthz 端點,供 Kubernetes 檢查舊版節點伺服器的存活狀態。