請先熟悉 vSphere 雲端原生儲存區 環境的數個基本概念。

Kubernetes 叢集
Kubernetes 控制平面和 Worker 服務執行所在的虛擬機器叢集。您可以在 Kubernetes 叢集上方部署您的容器化應用程式。應用程式可以是可設定狀態,也可以是無狀態。
網繭
網繭為共用這類資源做為儲存區和網路的一或多個 Container 的群組。網繭內的 Container 會啟動、停止,以及以群組形式複寫。
Container Orchestrator
開放原始碼平台 (例如 Kubernetes),用於在主機的叢集間容器化應用程式的部署、擴充和管理。此類平台提供以 Container 為中心的基礎結構。
可設定狀態應用程式
由於容器化應用程式會從無狀態發展為可設定狀態,因此它們需要持續性儲存區。可設定狀態應用程式與不會在工作階段之間儲存資料的無狀態應用程式不同,前者會將資料儲存至持續性儲存區。保留的資料稱為應用程式的狀態。您之後可以擷取該資料,並在下一個工作階段中使用資料。大部分應用程式為可設定狀態。資料庫即為可設定狀態應用程式的範例。
PersistentVolume
可設定狀態應用程式使用 PersistentVolume 來儲存其資料。PersistentVolume 為一種 Kubernetes 磁碟區,能夠保留其狀態和資料。它獨立於網繭之外,即使在網繭已刪除或重新設定的情況下,也能繼續存在。在 vSphere 環境中,PersistentVolume 物件會使用虛擬磁碟 (VMDK) 做為其支援儲存區。
StorageClass
Kubernetes 使用 StorageClass 來定義不同的儲存區層級,並說明用於支援 PersistentVolume 的儲存區的不同類型需求。在 vSphere 環境中,您可以將儲存區類別連結至儲存區原則。身為 vSphere 管理員,您可以建立說明不同儲存區需求的儲存區原則。虛擬機器儲存區原則可用作動態磁碟區佈建的 StorageClass 定義的一部分。

下列範例 YAML 檔案參考您稍早使用 vSphere Client 建立的金級儲存區原則。產生的持續性磁碟區 VMDK 會放置於可滿足金級儲存區原則需求的相容資料存放區上。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: gold-sc
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: csi.vsphere.vmware.com
parameters:
  storagepolicyname: "Gold"
  
PersistentVolumeClaim
一般來說,應用程式或網繭可透過 PersistentVolumeClaim 要求持續性儲存區。PersistentVolumeClaim 會指定儲存區的類型和類別、存取模式 (ReadWriteOnce 或 ReadWriteMany),以及 PersistentVolume 的其他參數。然後,此要求可在 vSphere 環境中動態佈建對應的 PersistentVolume 物件以及基礎虛擬磁碟。
一旦建立宣告,PersistentVolume 即會自動繫結至宣告。網繭會使用該宣告來掛接 PersistentVolume 和存取儲存區。
刪除此宣告時,會刪除對應的 PersistentVolume 物件和基礎儲存區。
kind: PersistentVolumeClaim
metadata:
 name: persistent-VMDK
spec:
 accessModes:
 - ReadWriteOnce
 resources:
 requests:
 storage: 5Gi
 storageClassName: gold-sc
StatefulSet
StatefulSet 會管理您可設定狀態應用程式的部署和擴充。StatefulSet 對於需要穩定的識別碼或穩定的持續性儲存區的應用程式來說很重要。您可以設定 StatefulSet 以包含會自動產生 PersistentVolumeClaim 物件的 volumeClaimTemplates 項目。