使用 GDC 上的 VM Runtime 建立具有特定 CPU 和記憶體資源的 VM

本文適用於執行 Google Distributed Cloud 的應用程式擁有者和平台管理員。本文說明如何建立及使用 VM 類型,或在建立使用 GDC 上 VM 執行階段的 VM 時,手動指定 CPU 和記憶體資源。

事前準備

如要完成這份文件,您必須存取下列資源:

建立 VM

建立 VM 時,您可以手動指定 CPU 和記憶體需求。這項功能可讓您建立 VM,並搭配適當的運算資源,滿足應用程式需求。

如要建立 VM 並手動指定 CPU 和記憶體需求,請按照下列步驟操作。

CLI

  • 使用 kubectl 建立 VM:

    kubectl virt create vm VM_NAME \
      --image ubuntu20.04 \
      --cpu CPU_NUMBER \
      --memory MEMORY_SIZE
    

    替換下列值:

    • VM_NAME:VM 的名稱。如要進一步瞭解名稱限制,請參閱「物件名稱和 ID」。
    • CPU_NUMBER:要指派給 VM 的虛擬 CPU (vCPU) 數量。
      • 您可以為 VM 指派 1 到 96 個 vCPU。
    • MEMORY_SIZE:要指派給 VM 的記憶體量。

資訊清單

  1. 在您選擇的編輯器中建立 VirtualMachine 資訊清單,例如 my-custom-vm.yaml

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

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      compute:
        cpu:
          vcpus: VCPU_NUMBER
        memory:
          capacity: MEMORY_SIZE
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - virtualMachineDiskName: VM_NAME-boot-dv
          boot: true
    

    在這個 YAML 檔案中,定義下列設定:

    • VM_NAME:VM 的名稱。如要進一步瞭解名稱限制,請參閱「物件名稱和 ID」。
    • VCPU_NUMBER:要指派給 VM 的 vCPU 數量。
      • 您可以為 VM 指派 1 到 96 個 vCPU。
    • MEMORY_SIZE:要指派給 VM 的記憶體量。

    VM 會連線至預設 pod-network 網路 eth0

    名為 VM_NAME-boot-dv 的開機磁碟必須已存在。詳情請參閱「建立及管理虛擬磁碟」。

  3. 在編輯器中儲存並關閉 VM 資訊清單。

  4. 使用 kubectl 建立 VM:

    kubectl apply -f my-custom-vm.yaml
    

建立及使用 VM 類型

在 GDC 上啟用 VM 執行階段時,系統會提供新的 VirtualMachineType 自訂資源定義。這個定義用於指定 VM 的 CPU 和記憶體資源。您可以為所需的不同工作負載建立 VM 類型,並根據這些類型,將一組一致的運算資源套用至 VM。

如果 Google Distributed Cloud 中已啟用 GDC 的 VM Runtime,vm-controller-manager 會安裝預先定義的 VM 類型。下列定義顯示預設 example-machinetype VM 類型:

  apiVersion: vm.cluster.gke.io/v1
  kind: VirtualMachineType
  metadata:
    name: "example-machinetype"
    labels:
      vm.cluster.gke.io/predefined-machinetype: "true"
  spec:
    cpu:
      vcpus: 2
    memory:
      capacity: 4G

您無法更新這個預先定義的 VM 類型。如果叢集中沒有這個預先定義的 VM 類型,系統會在每次啟動或重新啟動 vm-controller-manager 時重新安裝,例如您刪除 VM 類型時。

建立 VM 類型

您可以建立自己的 VM 類型,以符合工作負載的運算需求。

  1. 在您選擇的編輯器中,建立 VirtualMachineType 資訊清單,例如 my-vm-type.yaml

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

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineType
    metadata:
      name: my-vm-type
    spec:
      cpu:
        vcpus: VCPU_NUMBER
      memory:
        capacity: MEMORY_SIZE
    

    在這個 VM 類型中,您會定義下列設定:

    • VM_NAME:VM 的名稱。如要進一步瞭解名稱限制,請參閱「物件名稱和 ID」。
    • VCPU_NUMBER:要指派給 VM 的 vCPU 數量。
      • 您可以為 VM 指派 1 到 96 個 vCPU。
    • MEMORY_SIZE:要指派給 VM 的記憶體量。
  3. 在編輯器中儲存並關閉 VM 類型資訊清單。

  4. 使用 kubectl 建立 VM 類型:

    kubectl apply -f my-vm-type.yaml
    

使用 VM 類型建立 VM

VirtualMachine資訊清單compute中指定 VM 類型,即可將預先定義的設定套用至 VM。

  1. 在您選擇的編輯器中建立 VirtualMachine 資訊清單,例如 my-custom-vm.yaml

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

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      compute:
        virtualMachineTypeName: my-vm-type
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - virtualMachineDiskName: VM_NAME-boot-dv
          boot: true
    

    在這個 YAML 檔案中,將您在上一個章節中建立的自訂 VM 類型名稱 (例如 my-vm-type) 指定為 virtualMachineTypeName 的值。

    VM 會連線至預設 pod-network 網路 eth0

    名為 VM_NAME-boot-dv 的開機磁碟必須已存在。詳情請參閱「建立及管理虛擬磁碟」。

  3. 在編輯器中儲存並關閉 VM 資訊清單。

  4. 使用 kubectl 建立 VM:

    kubectl apply -f my-custom-vm.yaml
    

後續步驟