使用 GDC 上的虚拟机运行时创建具有特定 CPU 和内存资源的虚拟机

本文档适用于运行 GKE on Bare Metal 的应用所有者和平台管理员。本文档介绍如何创建和使用虚拟机类型,或在创建使用 GDC 上的虚拟机运行时的虚拟机时手动指定 CPU 和内存资源。

准备工作

要完成本文档,您需要拥有以下资源的访问权限:

创建虚拟机

创建虚拟机时,您可以手动指定 CPU 和内存要求。此功能可让您创建具有适当计算资源的虚拟机以满足您的应用需求。

如需创建虚拟机并手动指定 CPU 和内存要求,请按照以下步骤操作。

CLI

  • 使用 kubectl 创建虚拟机:

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

    替换以下值:

    • VM_NAME:您的虚拟机的名称。如需详细了解名称限制条件,请参阅对象名称和 ID
    • CPU_NUMBER:要分配给虚拟机的虚拟 CPU (vCPU) 数量。
      • 您可以为虚拟机分配 1 到 96 个 vCPU。
    • MEMORY_SIZE:要分配给虚拟机的内存量。
      • 您可以为虚拟机分配 1M 到 1T 的内存。如需了解详情,请参阅内存资源单元

清单

  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:您的虚拟机的名称。如需详细了解名称限制条件,请参阅对象名称和 ID
    • VCPU_NUMBER:要分配给虚拟机的 vCPU 数量。
      • 您可以为虚拟机分配 1 到 96 个 vCPU。
    • MEMORY_SIZE:要分配给虚拟机的内存量。
      • 您可以为虚拟机分配 1M 到 1T 的内存。如需了解详情,请参阅内存资源单元

    虚拟机将 eth0 连接到默认的 pod-network 网络。

    名为 VM_NAME-boot-dv 的启动磁盘必须已存在。如需了解详情,请参阅创建和管理虚拟磁盘

  3. 在编辑器中保存并关闭虚拟机清单。

  4. 使用 kubectl 创建虚拟机:

    kubectl apply -f my-custom-vm.yaml
    

创建和使用虚拟机类型

在 GDC 上启用虚拟机运行时,可使用新的 VirtualMachineType 自定义资源定义。此定义用于指定虚拟机的 CPU 和内存资源。您可以为所需的不同工作负载创建虚拟机类型,并根据这些类型将一组一致的计算资源应用于虚拟机。

如果在 GKE on Bare Metal 中启用了 GDC 上的 VM Runtime,vm-controller-manager 会安装预定义的虚拟机类型。以下定义显示了默认的 example-machinetype 虚拟机类型:

  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-controller-manager 时,如果集群中不存在此预定义的虚拟机类型(比方说,您删除了虚拟机类型),则会重新安装此预定义的虚拟机类型。

创建虚拟机类型

您可以创建自己的虚拟机类型,以满足工作负载的计算需求。

  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_NAME:您的虚拟机的名称。如需详细了解名称限制条件,请参阅对象名称和 ID
    • VCPU_NUMBER:要分配给虚拟机的 vCPU 数量。
      • 您可以为虚拟机分配 1 到 96 个 vCPU。
    • MEMORY_SIZE:要分配给虚拟机的内存量。
      • 您可以为虚拟机分配 1M 到 1T 的内存。如需了解详情,请参阅内存资源单元
  3. 在编辑器中保存并关闭虚拟机类型清单。

  4. 使用 kubectl 创建虚拟机类型:

    kubectl apply -f my-vm-type.yaml
    

使用虚拟机类型创建虚拟机

VirtualMachine 清单中指定虚拟机类型,以将预定义的 compute 设置应用于您的虚拟机。

  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 文件中,指定您在上一部分创建的自定义虚拟机类型的名称(例如 my-vm-type)作为 virtualMachineTypeName 的值。

    虚拟机将 eth0 连接到默认的 pod-network 网络。

    名为 VM_NAME-boot-dv 的启动磁盘必须已存在。如需了解详情,请参阅创建和管理虚拟磁盘

  3. 在编辑器中保存并关闭虚拟机清单。

  4. 使用 kubectl 创建虚拟机:

    kubectl apply -f my-custom-vm.yaml
    

后续步骤