VMware vSphere 儲存
要為有狀態工作負載提供 VMware vSphere 儲存,我們建議建立一個 vSphereVolume StorageClass。此做法會在工作負載透過 PersistentVolumeClaim 請求卷時,動態佈建 vSphere 儲存。
為了在 vSphere 中動態佈建儲存,必須啟用 vSphere 提供者。請參閱以下頁面以了解更多資訊:Out-of-tree vSphere 和 in-tree vSphere。
前置條件
為了在使用 Rancher Kubernetes Engine (RKE) 建立的叢集中佈建 vSphere 卷,必須在叢集選項中明確啟用 vSphere 雲端提供者。
建立 StorageClass
以下步驟也可以使用 kubectl 指令列工具執行。詳情請參閱 Kubernetes 關於持久卷的文件。
-
按一下 ☰ > Cluster Management。
-
選擇你要提供 vSphere 儲存的叢集,然後按一下 Explore。
-
在左側導覽列中,選擇 Storage > StorageClasses。
-
按一下 Create。
-
輸入 StorageClass 的名稱。
-
在 Provisioner 下,選擇 VMWare vSphere Volume。

-
選用:在 Parameters 下為此儲存類別指定其他屬性。詳情請參閱 vSphere 儲存文件。
-
按一下 Create。
使用 VMware vSphere 卷建立工作負載
- 在左側導覽列中,按一下 Workload。
- 按一下 Create。
- 按一下 StatefulSet。
- 在 Volume Claim Templates 標籤中,按一下 Add Claim Template。
- 輸入持久卷名稱。
- 在 Storage Class 欄位中,選擇你建立的 vSphere StorageClass。
- 輸入卷所需的容量。然後按一下 Define。
- 在 Mount Point 欄位中指派路徑。這是卷將在容器檔案系統中掛載的完整路徑,例如
/persistent。 - 按一下 Create。
驗證卷的持久性
-
在左側導覽列中,按一下 Workload > Pods。
-
前往你剛建立的工作負載,然後按一下 ⋮ > Execute Shell。
-
記下卷已掛載到的根目錄(在本例中為
/persistent)。 -
透過執行指令
touch /<volumeMountPoint>/data.txt在卷中建立一個檔案。 -
關閉 Shell 視窗。
-
按一下工作負載的名稱以顯示詳細資訊。
-
按一下 ⋮ > Delete。
-
觀察 Pod 被刪除。然後會排程一個新的 Pod 來替換它,以便工作負載維持其已配置的單一有狀態 Pod 規模。
-
一旦替換的 Pod 執行後,按一下 Execute Shell。
-
透過輸入
ls -l /<volumeMountPoint>檢查掛載卷的目錄內容。請注意,你之前建立的檔案仍然存在。
為何使用 StatefulSet 而非 Deployment
你應該始終對使用 vSphere 儲存的工作負載使用 StatefulSet,因為此資源類型旨在解決 VMDK 區塊儲存的限制。
由於 vSphere 卷由 VMDK 區塊儲存支援,因此它們僅支援 ReadWriteOnce 的存取模式。此設定限制卷一次只能掛載到單一 Pod,除非使用該卷的所有 Pod 都位於同一節點上。此行為使得部署資源在使用 vSphere 卷時無法擴展到單一副本之外。
即使使用僅具有單一副本的部署資源,在更新部署時也可能導致死鎖情況。如果更新的 Pod 被排程到與現有 Pod 所在節點不同的節點,它將無法啟動,因為 VMDK 仍附加到另一個節點。