管理 Kubernetes 叢集上的 pod 儲存體

已完成

雖然您想要部署至 Azure Stack HCI 上的 AKS的大部分應用程式都是無狀態的,但 Contoso 開發人員已找出一些規劃將的具狀態工作負載。 為了滿足此需求,您必須依賴 Kubernetes 的持續性磁碟區,以探索保留執行中 pod 狀態的支援。

在 Azure Stack HCI 上的 AKS 執行的持續性磁碟區

依預設,個別 pod 會以無狀態資源的形式運作。 如果屬於部署一部分的 pod 因為某些原因而失敗,Kubernetes 排程器會自動建立一個新的,以提供相符的功能,以確保容器化應用程式保持可用。 但是,如果沒有其他保留狀態的保留,則會遺失失敗 pod 可能已在處理的任何資料。

有些情況下,pod 必須能夠持續並共用其資料和狀態。 在這些情況下,您可以使用持續性磁碟區,這是可讓您儲存容器化工作負載資料超過個別 pod 存留期的叢集資源。

若要在 Kubernetes 叢集中執行磁碟區,您必須先定義永久性磁碟區宣告。 儲存類別代表基礎儲存體的特性,例如:效能或共用存取的支援。 持續性磁碟區宣告包含有關所需存取模式和磁碟區大小的資訊。 Kubernetes API 伺服器會使用持續性磁碟區宣告定義,在部署的 pod 需要時動態布建適當的儲存體磁碟區。

注意

Azure Stack HCI 上的 AKS 會提供預設的儲存類別,其會執行以 VHDX 為基礎的磁碟。

藉由在對應的資訊清單檔案中包含持續性磁碟區規格,來定義已部署 pod 的儲存體需求。 除了觸發動態布建,這也會自動將磁碟區掛接到 pod 中。

例如,下列資訊清單會針對使用預設儲存類別的 100 GB 非共用磁碟定義永久性磁碟區宣告。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
 name: pvc-akshci
spec:
 accessModes:
 - ReadWriteOnce
 resources:
  requests:
   storage: 100Gi

若要執行這個永久性磁碟區宣告,您可以將此資訊清單儲存為 YAML 檔,並執行 kubectl 命令列公用程式來建立對應的資源 (其中 pvc_definition.yaml 代表 YAML 檔案) :

kubectl create -f pvc_definition.yaml

若要為 pod 定義對應的永久性磁碟區,您可以使用下列資訊清單:

kind: Pod
apiVersion: v1
metadata:
  name: win-appserver
spec:
  containers:
    - name: win-appserver
      image: mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019 
      volumeMounts:
      - name: akshciscsi
        mountPath: "/mnt/akshciscsi"
  volumes:
    - name: akshciscsi
      persistentVolumeClaim:
        claimName: pvc-akshci
  nodeSelector:
     kubernetes.io/os: windows

若要執行這個永久性磁碟區宣告,您可以將此資訊清單儲存為 YAML 檔,並執行 kubectl 命令列公用程式來建立對應的資源(其中 pv_definition.yaml 代表 YAML 檔案):

kubectl create -f pv_definition.yaml

產生的 pod 將會有一個大小為 100 GB 的磁碟區,其裝載於元素值所指定的檔案系統路徑內 mountPath

若要刪除永久性磁碟區宣告,您必須先刪除目前正在使用它的任何 pod 和部署。 此時,若要完成此工作,您可以使用 kubectl delete PersistentVolumeClaim 命令,並在後面加上永久性磁碟區宣告的名稱。

知識檢查

1.

因為 Contoso 開發人員正在處理容器化可設定狀態的工作負載,所以您想要使用您在 Azure Stack HCI 上的 AKS 部署來測試持續性 pod 儲存體的執行。 您必須先定義什麼?