本文档适用于运行 Anthos clusters on Bare Metal 的应用所有者。本文档介绍如何修改使用 Anthos VM Runtime 运行的虚拟机。例如,您可以修改 CPU 和内存等资源分配,或更改虚拟机所连接的网络。
您可以修改 VirtualMachine
资源的 spec
部分中的任何字段。您还可以修改虚拟机的标签。您无法修改其他字段,例如虚拟机名称 (metadata.name
)。虚拟机必须处于 Stopped
状态,才能修改该资源。
如果在保存对 VirtualMachine
资源的修改时包含错误,则更改会被拒绝,并且您会看到通知。请纠正错误,然后再次尝试保存 VirtualMachine
资源。如果在进行更改后虚拟机未启动,请使用 kubectl describe gvm VM_NAME
命令查看问题排查信息并更正错误。
准备工作
要完成本文档,您需要拥有以下资源的访问权限:
- 在其中一个集群中运行的虚拟机。如果需要,请在 Anthos clusters on Bare Metal 中创建虚拟机。
- 作为
kubectl
的插件安装的virtctl
客户端工具。如果需要,请安装 virtctl 客户端工具。
修改计算资源
如果计算工作负载需求发生变化,您可以更新分配给虚拟机的虚拟 CPU 数量和虚拟内存量。如需修改计算工作负载,请完成以下步骤:
停止您要修改的虚拟机:
kubectl virt stop VM_NAME
将
VM_NAME
替换为要停止的虚拟机的名称。使用
kubectl
修改虚拟机:kubectl edit gvm VM_NAME
将
VM_NAME
替换为您要修改的虚拟机的名称。在编辑器中,更新要更改的计算资源值。
例如,以下示例
VirtualMachine
清单显示虚拟机资源已分配有2
vCPU:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... compute: cpu: vcpus: 2 ...
如果要更新分配的 vCPU 的数量,请在编辑器中更改相应的值,如以下示例所示:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... compute: cpu: vcpus: 4 ...
保存并关闭虚拟机清单。
启动您修改的虚拟机:
kubectl virt start VM_NAME
将
VM_NAME
替换为您修改的虚拟机的名称。检查虚拟机的
STATUS
:kubectl get gvm VM_NAME
确保虚拟机处于
Running
状态。如果虚拟机请求的计算资源超出主机能够提供的计算资源,虚拟机将无法启动。如果虚拟机未处于Running
状态,请检查VirtualMachine
资源清单和主机上的计算资源可用性。以下示例输出显示了处于
Running
状态的虚拟机:NAME STATUS AGE IP vm1 Running 1m 192.168.2.72
使用
kubectl describe gvm
查看有关虚拟机的详细信息:kubectl describe gvm VM_NAME
将
VM_NAME
替换为您修改的虚拟机的名称。以下示例输出显示了虚拟机的概要信息,其中成功应用了 vCPU 数量更改:
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Compute: Cpu: Vcpus: 4 ...
如需了解详情,请参阅如何创建具有特定 vCPU 和内存计算配置的虚拟机。
修改磁盘资源
如果存储要求发生变化,您可以向虚拟机添加或移除虚拟磁盘。如需修改挂接到虚拟机的磁盘,请完成以下步骤:
停止您要修改的虚拟机:
kubectl virt stop VM_NAME
将
VM_NAME
替换为要停止的虚拟机的名称。使用
kubectl
修改虚拟机:kubectl edit gvm VM_NAME
将
VM_NAME
替换为您要修改的虚拟机的名称。在编辑器中,更新
spec.disks
部分以挂接或分离磁盘。例如,以下示例
VirtualMachine
清单显示虚拟机只挂接了一个启动磁盘:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... disks: - boot: true virtualMachineDiskName: vm1-boot-dv ...
如果要添加现有的空磁盘,请在编辑器中更新磁盘配置,如以下示例所示:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... disks: - boot: true virtualMachineDiskName: vm1-boot-dv - virtualMachineDiskName: DISK_NAME ...
将
DISK_NAME
替换为要挂接的磁盘的名称。保存并关闭虚拟机清单。
启动您修改的虚拟机:
kubectl virt start VM_NAME
将
VM_NAME
替换为您修改的虚拟机的名称。检查虚拟机的
STATUS
:kubectl get gvm VM_NAME
确保虚拟机处于
Running
状态。如果虚拟机请求主机无法提供的StorageClass
或磁盘分配,虚拟机将无法启动。如果虚拟机未处于Running
状态,请检查VirtualMachine
和VirtualMachineDisk
资源清单以及主机存储支持。使用
kubectl describe gvm
查看有关虚拟机的详细信息:kubectl describe gvm VM_NAME
将
VM_NAME
替换为您修改的虚拟机的名称。以下示例输出显示了虚拟机的概要信息,其中成功应用了对挂接磁盘的更改:
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Disks: Name: vm1-boot-dv Name: data-disk-01 ...
如需了解详情,请参阅如何创建和管理磁盘。
修改网络资源
随着基础架构的变化,您可能需要更改虚拟机的网络配置。例如,您可能希望将虚拟机连接到其他虚拟网络或手动分配 IP 地址。如需修改虚拟机的网络配置,请完成以下步骤:
停止您要修改的虚拟机:
kubectl virt stop VM_NAME
将
VM_NAME
替换为要停止的虚拟机的名称。使用
kubectl
修改虚拟机:kubectl edit gvm VM_NAME
将
VM_NAME
替换为您要修改的虚拟机的名称。在编辑器中,更新要更改的网络配置设置。
例如,以下示例
VirtualMachine
清单显示虚拟机连接到名为backend-vlan100
的网络并使用 DHCP(因为未定义 IP 地址):apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... interfaces: - name: eth0 networkName: backend-vlan100 default: true ...
如果要更改虚拟机连接到的网络或分配手动 IP 地址,请在编辑器中更新网络配置,如以下示例所示:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... interfaces: - name: eth0 networkName: NETWORK_NAME ipAddresses: - IP_ADDRESS default: true ...
将
NETWORK_NAME
替换为要连接的网络的名称,或添加ipAddresses
部分并指定供虚拟机使用的IP_ADDRESS
。保存并关闭虚拟机清单。
启动您修改的虚拟机:
kubectl virt start VM_NAME
将
VM_NAME
替换为您修改的虚拟机的名称。检查虚拟机的
STATUS
:kubectl get gvm VM_NAME
确保虚拟机处于
Running
状态。如果虚拟机请求主机无法提供的网络连接,虚拟机将无法启动。如果虚拟机未处于Running
状态,请检查VirtualMachine
资源清单和主机网络支持。使用
kubectl describe gvm
查看有关虚拟机的详细信息:kubectl describe gvm VM_NAME
将
VM_NAME
替换为您修改的虚拟机的名称。以下示例输出显示了虚拟机的概要信息,其中成功应用了对网络和 IP 地址配置的更改:
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Compute: Interfaces: Name: eth0 Network Name: backend-vlan200 ... Status: ... Interfaces: Dns Config: Nameservers: 8.8.8.8 gateway4: 10.200.0.9 Ip Addresses: 10.200.0.22/24 Mac Address: 22:b4:e3:d2:ef:fb Name: eth0 Resource Name: vm1-eth0-f2468 ...
如需了解详情,请参阅如何创建和管理虚拟网络。