创建具有特定 CPU 和内存资源的虚拟机

创建使用 VM Runtime on Google Distributed Cloud 的虚拟机时,您可以通过以下两种方式配置计算资源:

  • 手动指定 CPU 和内存:直接在 VirtualMachine 清单中定义计算资源。此方法适用于一次性虚拟机或需要独特资源分配的自定义工作负载。
  • 创建和使用虚拟机类型:定义可重复使用的 VirtualMachineType 自定义资源,以标准化 CPU 和内存分配。此方法有助于管理虚拟机舰队、确保集群中的计算一致性,并简化开发者的虚拟机配置。

准备工作

如需手动指定 CPU 和内存资源,以及创建和使用虚拟机类型,您需要有权访问以下资源:

  • 已连接的 Distributed Cloud 集群,版本为 1.9.0 或更高版本。
  • 已安装并配置为可访问集群的 Kubernetes 命令行工具 kubectl。如需了解详情,请参阅安装 kubectl
  • 可选:作为 kubectl 的插件安装的 virtctl 客户端工具。如果需要,请参阅安装 virtctl 管理工具

创建虚拟机并指定 CPU 和内存

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

如需创建虚拟机并指定 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:虚拟机的目标命名空间。
    • L2_NETWORK_NAME:要将虚拟机连接到的 L2 网络的名称。
    • VCPU_NUMBER:要分配给虚拟机的 vCPU 数量。您可以为虚拟机分配 1 到 96 个 vCPU。
    • MEMORY_SIZE:要分配给虚拟机的内存量。您可以为虚拟机分配 1 Mi 到 1 Ti 的内存。如需了解详情,请参阅 Kubernetes 文档中的内存资源单位
    • VM_BOOT_NAME:虚拟机启动磁盘的名称。启动磁盘必须已存在。如需了解详情,请参阅从虚拟机映像创建虚拟机磁盘

    虚拟机将 eth0 接口连接到指定的 L2 网络。

  2. 如需创建虚拟机,请使用 kubectl apply 命令将清单应用于已连接的 Distributed Cloud 集群:

    kubectl apply -f my-custom-vm.yaml
    
  3. 如需验证虚拟机是否已创建,请使用 kubectl get 命令:

    kubectl get vm VM_NAME -n NAMESPACE
    

    预期输出会显示虚拟机的状态。您还可以使用 kubectl describe 命令查看详细配置,包括分配的 CPU 和内存。

创建和使用虚拟机类型

在 GDC 上启用 VM Runtime 后,VirtualMachineType 自定义资源定义便可在集群中使用。您可以使用此资源类型创建可重用的模板,以定义特定的 CPU 和内存分配。通过为不同的工作负载创建自定义虚拟机类型,您可以预配具有一致计算资源配置的多个虚拟机。

如果 Distributed Cloud Connected 中启用了 VM Runtime on GDC,则可能提供预定义的虚拟机类型。您无法更新此预定义虚拟机类型。以下定义显示了默认的 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

创建虚拟机类型

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

  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_TYPE_NAME:虚拟机类型的名称。
    • VCPU_NUMBER:要分配给虚拟机的 vCPU 数量。您可以为虚拟机分配 1 到 96 个 vCPU。
    • MEMORY_SIZE:要分配给虚拟机的内存量。您可以为虚拟机分配 1 Mi 到 1 Ti 的内存。如需了解详情,请参阅 Kubernetes 文档中的内存资源单位
  2. 如需创建虚拟机类型,请使用 kubectl apply 命令将清单应用于 Distributed Cloud Connected Cluster:

    kubectl apply -f my-vm-type.yaml
    
  3. 如需验证虚拟机类型是否已创建,请运行 kubectl get 命令:

    kubectl get virtualmachinetype VM_TYPE_NAME
    

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

如需将虚拟机类型中定义的 CPU 和内存设置应用于您的虚拟机,请在 VirtualMachine 清单的 compute 部分中指定虚拟机类型的名称。

  1. 在您选择的编辑器中,创建 VirtualMachine 清单,例如 my-custom-vm.yaml。在此 YAML 文件中,指定您在上一部分创建的自定义虚拟机类型的名称(例如 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:虚拟机的目标命名空间。
    • L2_NETWORK_NAME:要将虚拟机连接到的 L2 网络的名称。
    • VM_TYPE_NAME:您在上一部分中创建的自定义虚拟机类型的名称,例如 my-vm-type
    • VM_BOOT_NAME:虚拟机启动磁盘的名称。启动磁盘必须已存在。如需了解详情,请参阅从虚拟机映像创建虚拟机磁盘

    虚拟机将 eth0 接口连接到指定的 L2 网络。

  2. 如需创建虚拟机,请使用 kubectl apply 命令将清单应用于已连接的 Distributed Cloud 集群:

    kubectl apply -f my-custom-vm.yaml
    
  3. 如需验证虚拟机是否正在使用虚拟机类型,请运行带有 -o jsonpath 选项的 kubectl get 命令:

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

    预期输出会显示您的虚拟机类型名称。

后续步骤