在 VM Runtime on GDC 中建立及使用儲存空間類別

本文適用於執行 Google Distributed Cloud 的應用程式擁有者和平台管理員。本文說明如何為使用 GDC 上的 VM 執行階段的 VM 建立及使用儲存空間類別。StorageClass 可讓您定義不同的儲存空間設定,滿足 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 上的 VM Runtime 沒有預設的 StorageClass 設定。如要建立 VirtualMachineDisk 但不指定 StorageClass,請先建立 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 相關聯的額外設定選項。這些設定選項包括要為使用 StorageClassVirtualMachineDisks 使用哪種存取模式和磁碟區模式。

如果沒有設定儲存空間設定檔,磁碟預設會採用 ReadWriteOnce 存取模式。這個存取模式不適合實際工作環境工作負載,因為即時遷移等功能無法運作。如果沒有設定儲存空間設定檔,預設音量模式為 Filesystem

GDC 上的 VM 執行階段會自動為叢集中的每個 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. spec.claimPropertySets 清單中新增單一項目: StorageProfile

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

    accessModevolumeMode 使用基礎 Kubernetes 元件。您設定的值取決於使用的儲存空間驅動程式。請視使用的儲存空間,將下列值替換為適當的值:

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

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

後續步驟