使用 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 資訊清單。
在您選擇的編輯器中,建立
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 網路。如要建立 VM,請使用
kubectl apply指令,將資訊清單套用至 Distributed Cloud 連線叢集:kubectl apply -f my-custom-vm.yaml如要確認 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 類型,以符合工作負載的運算需求。
在您選擇的編輯器中,建立
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 說明文件中的「記憶體資源單位」。
如要建立 VM 類型,請使用
kubectl apply指令,將資訊清單套用至 Distributed Cloud 連線叢集:kubectl apply -f my-vm-type.yaml如要確認 VM 類型已建立,請執行
kubectl get指令:kubectl get virtualmachinetype VM_TYPE_NAME
使用 VM 類型建立 VM
如要將 VM 類型中定義的 CPU 和記憶體設定套用至 VM,請在 VirtualMachine 資訊清單的 compute 部分指定 VM 類型名稱。
在您選擇的編輯器中,建立
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 網路。如要建立 VM,請使用
kubectl apply指令,將資訊清單套用至 Distributed Cloud 連線叢集:kubectl apply -f my-custom-vm.yaml如要確認 VM 是否使用 VM 類型,請執行
kubectl get指令並搭配-o jsonpath選項:kubectl get vm VM_NAME -n NAMESPACE -o jsonpath='{.spec.compute.virtualMachineTypeName}'預期的輸出內容會顯示 VM 類型名稱。