创建使用 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 清单。
在您选择的编辑器中,创建
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 网络。如需创建虚拟机,请使用
kubectl apply命令将清单应用于已连接的 Distributed Cloud 集群:kubectl apply -f my-custom-vm.yaml如需验证虚拟机是否已创建,请使用
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
创建虚拟机类型
您可以创建自己的虚拟机类型,以满足工作负载的计算需求。
在您选择的编辑器中,创建
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 文档中的内存资源单位。
如需创建虚拟机类型,请使用
kubectl apply命令将清单应用于 Distributed Cloud Connected Cluster:kubectl apply -f my-vm-type.yaml如需验证虚拟机类型是否已创建,请运行
kubectl get命令:kubectl get virtualmachinetype VM_TYPE_NAME
使用虚拟机类型创建虚拟机
如需将虚拟机类型中定义的 CPU 和内存设置应用于您的虚拟机,请在 VirtualMachine 清单的 compute 部分中指定虚拟机类型的名称。
在您选择的编辑器中,创建
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 网络。如需创建虚拟机,请使用
kubectl apply命令将清单应用于已连接的 Distributed Cloud 集群:kubectl apply -f my-custom-vm.yaml如需验证虚拟机是否正在使用虚拟机类型,请运行带有
-o jsonpath选项的kubectl get命令:kubectl get vm VM_NAME -n NAMESPACE -o jsonpath='{.spec.compute.virtualMachineTypeName}'预期输出会显示您的虚拟机类型名称。