建立具備特定 CPU 和記憶體資源的 VM

使用 Google Distributed Cloud 的 VM Runtime 建立 VM 時,您可以透過兩種方式設定運算資源:

  • 手動指定 CPU 和記憶體:直接在 VirtualMachine 資訊清單中定義運算資源。這種方法適用於一次性 VM,或需要獨特資源分配的自訂工作負載。
  • 建立及使用 VM 類型:定義可重複使用的VirtualMachineType自訂資源,將 CPU 和記憶體分配作業標準化。這種做法有助於管理 VM 叢集、確保叢集運算一致性,以及簡化開發人員的 VM 佈建作業。

事前準備

如要手動指定 CPU 和記憶體資源,以及建立及使用 VM 類型,您必須存取下列資源:

  • Distributed Cloud 連線叢集,版本 1.9.0 以上。
  • Kubernetes 指令列工具 kubectl 已安裝並設定為存取叢集。詳情請參閱安裝 kubectl
  • 選用:安裝為 kubectl 外掛程式的 virtctl 用戶端工具。如有需要,請參閱「安裝 virtctl 管理工具」。

建立 VM 並指定 CPU 和記憶體

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

如要建立 VM 並指定 CPU 和記憶體,請使用 VirtualMachine 資訊清單。

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

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

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

    • VM_NAME:虛擬機名稱。
    • NAMESPACE:VM 的目標命名空間。
    • L2_NETWORK_NAME:要將 VM 連線至的 L2 網路名稱。
    • VCPU_NUMBER:要指派給 VM 的 vCPU 數量。 您可以為 VM 指派 1 到 96 個 vCPU。
    • MEMORY_SIZE:要指派給 VM 的記憶體量。您可以為 VM 指派 1 Mi 到 1 Ti 的記憶體。詳情請參閱 Kubernetes 說明文件中的「記憶體資源單位」。
    • VM_BOOT_NAME:VM 開機磁碟的名稱。開機磁碟必須已存在。詳情請參閱「從虛擬機器映像檔建立虛擬機器磁碟」。

    VM 會將 eth0 介面連線至指定的 L2 網路。

  2. 如要建立 VM,請使用 kubectl apply 指令,將資訊清單套用至 Distributed Cloud 連線叢集:

    kubectl apply -f my-custom-vm.yaml
    
  3. 如要確認 VM 是否已建立,請使用 kubectl get 指令:

    kubectl get vm VM_NAME -n NAMESPACE
    

    預期輸出內容會顯示 VM 狀態。您也可以使用 kubectl describe 指令查看詳細設定,包括指派的 CPU 和記憶體。

建立及使用 VM 類型

在 GDC 上啟用 VM Runtime 時,叢集會提供 VirtualMachineType 自訂資源定義。您可以使用這類資源建立可重複使用的範本,定義特定 CPU 和記憶體配置。為不同工作負載建立自訂 VM 類型後,即可佈建多個 VM,並採用一致的運算資源設定。

如果已在 Distributed Cloud connected 中啟用 GDC 的 VM Runtime,系統可能會提供預先定義的 VM 類型。您無法更新這個預先定義的 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 類型,以符合工作負載的運算需求。

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

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

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

    • VM_TYPE_NAME:VM 類型名稱。
    • VCPU_NUMBER:要指派給 VM 的 vCPU 數量。 您可以為 VM 指派 1 到 96 個 vCPU。
    • MEMORY_SIZE:要指派給 VM 的記憶體量。您可以指派 1 Mi 至 1 Ti 的記憶體給 VM。詳情請參閱 Kubernetes 說明文件中的「記憶體資源單位」。
  2. 如要建立 VM 類型,請使用 kubectl apply 指令,將資訊清單套用至 Distributed Cloud 連線叢集:

    kubectl apply -f my-vm-type.yaml
    
  3. 如要確認 VM 類型已建立,請執行 kubectl get 指令:

    kubectl get virtualmachinetype VM_TYPE_NAME
    

使用 VM 類型建立 VM

如要將 VM 類型中定義的 CPU 和記憶體設定套用至 VM,請在 VirtualMachine 資訊清單的 compute 部分指定 VM 類型名稱。

  1. 在您選擇的編輯器中,建立 VirtualMachine 資訊清單,例如 my-custom-vm.yaml。在這個 YAML 檔案中,指定您在前一節建立的自訂 VM 類型名稱 (例如 my-vm-type) 做為 virtualMachineTypeName 的值。

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
      namespace: NAMESPACE
    spec:
      compute:
        virtualMachineTypeName: VM_TYPE_NAME
      interfaces:
        - name: eth0
          networkName: L2_NETWORK_NAME
          default: true
      disks:
        - virtualMachineDiskName: VM_BOOT_NAME-boot-dv
          boot: true

    定義下列設定:

    • VM_NAME:虛擬機名稱。
    • NAMESPACE:VM 的目標命名空間。
    • L2_NETWORK_NAME:要將 VM 連線至的 L2 網路名稱。
    • VM_TYPE_NAME:您在上一個章節中建立的自訂 VM 類型名稱,例如 my-vm-type
    • VM_BOOT_NAME:VM 開機磁碟的名稱。開機磁碟必須已存在。詳情請參閱「從虛擬機器映像檔建立虛擬機器磁碟」。

    VM 會將 eth0 介面連線至指定的 L2 網路。

  2. 如要建立 VM,請使用 kubectl apply 指令,將資訊清單套用至 Distributed Cloud 連線叢集:

    kubectl apply -f my-custom-vm.yaml
    
  3. 如要確認 VM 是否使用 VM 類型,請執行 kubectl get 指令並搭配 -o jsonpath 選項:

    kubectl get vm VM_NAME -n NAMESPACE -o jsonpath='{.spec.compute.virtualMachineTypeName}'
    

    預期的輸出內容會顯示 VM 類型名稱。

後續步驟