架構
DirectPV 根據 CSI 規格實作。它包含以下元件,這些元件以 Kubernetes 中的 Pod 形式執行
控制器
節點伺服器
當 DirectPV 包含來自 DirectCSI
的舊版磁碟區時,以下額外元件也會以 Pod 形式執行
舊版控制器
舊版節點伺服器
控制器
控制器以名為 controller
的 Deployment
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。
舊版控制器
舊版控制器以名為 legacy-controller
的 Deployment
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。
節點伺服器
節點伺服器以名為 node-server
的 DaemonSet
Pod,在所有或選取的 Kubernetes 節點中執行。每個節點伺服器 Pod 都會在節點上獨立執行。
每個 Pod 都有下列容器
-
節點驅動程式註冊器
將節點伺服器註冊至 kubelet 以取得 CSI RPC 呼叫。
-
節點伺服器
處理
stage
、unstage
、publish
、unpublish
和expand
磁碟區 RPC 請求。 -
節點控制器
處理來自
DirectPVDrive
、DirectPVVolume
、DirectPVNode
和DirectPVInitRequest
的 CRD 事件。 -
存活探測 (Liveness probe)
公開一個
/healthz
端點,供 Kubernetes 檢查節點伺服器的存活狀態。
舊版節點伺服器
舊版節點伺服器以名為 legacy-node-server
的 DaemonSet
Pod 形式在所有或選定的 Kubernetes 節點上運行。每個舊版節點伺服器 Pod 都獨立運行在一個節點上。
每個 Pod 都包含以下正在運行的容器
-
節點驅動程式註冊器
向 kubelet 註冊舊版節點伺服器以接收 CSI RPC 呼叫。
-
節點伺服器
處理
stage
、unstage
、publish
、unpublish
和expand
磁碟區 RPC 請求。 -
存活探測 (Liveness probe)
公開
/healthz
端點,供 Kubernetes 檢查舊版節點伺服器的存活狀態。