在 GDC 的 VM 執行階段中建立及使用儲存空間類別

StorageClass可讓您定義量身打造的儲存空間設定,滿足 GDC VM 執行階段中虛擬機器 (VM) 的特定需求。您可以為虛擬磁碟設定預設儲存空間級別、為磁碟指派特定級別,以及設定儲存空間設定檔,以便管理存取權和磁碟區模式。

事前準備

如要完成這份文件,您必須具備 Google Distributed Cloud 1.12.0 版 (anthosBareMetalVersion: 1.12.0) 以上叢集的存取權。您可以使用任何能執行工作負載的叢集類型。如有需要,請在 Compute Engine 上試用 Google Distributed Cloud,或參閱叢集建立總覽。

儲存空間級別總覽

您可以使用 StorageClass 定義要提供給 VM 的儲存空間類型。不同的儲存空間類別可能會對應至不同類型的儲存硬體、檔案系統或效能。您可以建立及使用儲存空間級別,支援 VM Runtime on GDC 中的運算工作負載。詳情請參閱「儲存空間級別」。

您可以在 GDC VM 執行階段的自訂資源中,定義預設 StorageClass。建立 VirtualMachineDisks, 時,如未定義特定類別,系統會使用這個預設 StorageClass。未設定初始 StorageClass,並設為預設值。在下一節中,您將瞭解如何設定或更新這個預設 StorageClass。

設定或更新預設 StorageClass

一開始,Google Distributed Cloud 搭配 GDC 上的 VM 執行階段時,並未設定預設 StorageClass。如要在不指定 StorageClass 的情況下建立 VirtualMachineDisk,您必須先建立 StorageClass,然後將其設為預設值。

如要一開始就設定或更新 GDC VM 執行階段在您建立 VirtualMachineDisk 時使用的預設 StorageClass,請更新 VMRuntime 自訂資源。

  1. 編輯 VMRuntime 自訂資源:

    kubectl edit vmruntime
    
  2. 新增或更新 spec.storage 區段,指定要使用的預設 StorageClass:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: true
      storage:
        defaultStorageClass: STORAGE_CLASS_NAME
    ...
    

    將 STORAGE_CLASS_NAME 編輯為要使用的預設 StorageClass 名稱。如需先建立 StorageClass,請參閱「建立 StorageClass」。

  3. 在編輯器中儲存並關閉 VMRuntime 自訂資源。

    現在,當您建立虛擬機器磁碟且未指定 StorageClass 時,系統會使用您指定的 StorageClass。下一節將說明如何建立磁碟並使用特定 StorageClass。

    現有的 VirtualMachineDisk 資源不會更新為使用新指定的 StorageClass。

使用特定 StorageClass

建立 VirtualMachineDisk 時,如果不想使用預設的 StorageClass,請使用 storageClassName 欄位指定其他 StorageClass。

如要在建立 VirtualMachineDisk 時使用特定且已定義的 StorageClass,請完成下列步驟:

  1. 在您選擇的編輯器中建立 VirtualMachineDisk 資訊清單,例如 my-disk.yaml:

    nano my-disk.yaml
    
  2. 複製並貼上下列 YAML 資訊清單:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: DISK_NAME
    spec:
      size: 10Gi
      storageClassName: STORAGE_CLASS_NAME
    

    替換下列值:

    • DISK_NAME:磁碟名稱。
    • STORAGE_CLASS_NAME:磁碟要使用的 StorageClass。這個 StorageClass 必須已存在。如需先建立 StorageClass,請參閱「建立 StorageClass」。
  3. 儲存並關閉編輯器中的磁碟資訊清單。

  4. 使用 kubectl 建立磁碟:

    kubectl apply -f my-disk.yaml
    

設定儲存空間設定檔

儲存空間設定檔提供與每個 StorageClass 相關聯的額外設定選項。這些設定選項包括要為使用 StorageClass 的 VirtualMachineDisks 採用哪種存取模式和磁碟區模式。

如果未設定儲存空間設定檔,磁碟會預設為 ReadWriteOnce 存取模式。這個存取模式不適用於正式環境工作負載,因為即時遷移等功能無法運作。如果未設定儲存空間設定檔,預設磁碟區模式為 Filesystem。

VM Runtime on GDC 會自動為叢集中的每個 StorageClass 產生一個儲存空間設定檔。儲存空間設定檔的名稱與相關聯的 StorageClass 相同。以下輸出內容範例顯示叢集有四個儲存空間類別和相關聯的設定檔:

  $ kubectl get storageprofiles

  NAME            AGE
  anthos-system   11d
  node-disk       11d
  standard        11d
  nfs             11d

如要編輯儲存空間設定檔,並變更存取模式或磁碟區模式,請完成下列步驟:

  1. 編輯 StorageProfile 自訂資源:

    kubectl edit storageprofile STORAGE_PROFILE_NAME
    

    將 STORAGE_PROFILE_NAME 替換為要編輯的StorageProfile。

  2. 在 StorageProfile 的 spec.claimPropertySets 清單中新增單一項目:

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: StorageProfile
    metadata:
      name: nfs
    spec:
      claimPropertySets:
      - accessModes:
        - ACCESS_MODE
        volumeMode: VOLUME_MODE
    

    accessMode 和 volumeMode 使用基礎 Kubernetes 元件。設定的值取決於您使用的儲存空間驅動程式。請根據您使用的儲存空間,適當替換下列值:

    • ACCESS_MODE:要使用的存取模式。如果相關聯的 StorageClass 支援,建議使用 ReadWriteMany 存取模式。
      • 可接受的值包括 ReadWriteOnce、ReadOnlyMany、ReadWriteMany 和 ReadWriteOncePod。如未指定,系統會根據 GDC 預設的 VM 執行階段使用 ReadWriteOnce。詳情請參閱「存取模式」。
    • VOLUME_MODE:要使用的磁碟區模式。
      • 可接受的值包括 Filesystem 和 Block。如未指定,系統會根據 Kubernetes 預設值使用 Filesystem。詳情請參閱「磁碟區模式」。
  3. 在編輯器中儲存並關閉 StorageProfile 自訂資源。

    現在建立任何虛擬磁碟時,系統都會使用您定義的儲存空間設定檔。現有的 VirtualMachineDisk 資源不會更新為使用定義的儲存空間設定檔。

後續步驟