本文档介绍如何通过更新 VMRuntime
自定义资源或运行 bmctl
命令来启用或停用 Anthos VM Runtime。
准备工作
如需启用或停用 Anthos VM Runtime,您需要以下资源和工具:
- 访问 Anthos clusters on Bare Metal 1.12.0 版 (
anthosBareMetalVersion: 1.12.0
) 或更高版本集群。您可以使用任何能够运行工作负载的集群类型。如果需要,请在 Compute Engine 上试用 Anthos clusters on Bare Metal,或查看集群创建概览。 bmctl
命令行工具。 如需了解详情,请参阅下载并安装bmctl
工具。
启用 Anthos VM Runtime
Anthos VM Runtime 会自动安装在 Anthos clusters on Bare Metal 1.10 版或更高版本上,但默认情况下处于停用状态。必须先启用 Anthos VM Runtime,然后才能在 Anthos clusters on Bare Metal 中运行虚拟机资源。
bmctl
如需启用运行时,请使用
bmctl
工具:bmctl enable vmruntime --kubeconfig KUBECONFIG_PATH
提供集群的 kubeconfig 文件的路径。创建集群时,Anthos clusters on Bare Metal 会在管理员工作站上生成 kubeconfig 文件。默认情况下,路径为
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
。如果 Anthos VM Runtime 已启用,则该命令会返回错误。
您可以通过修改 VMRuntime
自定义资源来配置其他设置(例如模拟或图片格式)。
自定义资源
如需启用运行时,请更新 VMRuntime
自定义资源。此自定义资源是默认安装的。
修改
VMRuntime
自定义资源:kubectl edit vmruntime
在规范中设置
enabled:true
:apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: enabled: true # useEmulation defaults to "false" if not set. useEmulation: true # vmImageFormat defaults to "qcow2" if not set. vmImageFormat: qcow2
在前面的
spec
部分中,可以设置以下值:enabled
:设置为 true 可启用 Anthos VM RuntimeuseEmulation
:如果您的节点不支持硬件虚拟化,或您不确定,请将值设置为 true。如果适用,硬件虚拟化可提供比软件模拟更好的性能。如果未指定useEmulation
字段,则默认为false
。vmImageFormat
:支持两个磁盘映像格式值:raw
和qcow2
。如果未设置vmImageFormat
,Anthos VM Runtime 使用raw
磁盘映像格式来创建虚拟机。raw
格式可以提供比qcow2
(一种写入时复制格式)更高的性能,但可以使用更多磁盘。如需详细了解虚拟机的映像格式,请参阅 QEMU 文档中的磁盘映像文件格式。
在编辑器中保存自定义资源。
验证
VMRuntime
自定义资源是否已启用:kubectl describe vmruntime vmruntime
VMRuntime
自定义资源的详细信息包含Status
部分。当VMRuntime.Status.Ready
显示为true
时,Anthos VM Runtime 已启用且正常运行。
停用 Anthos VM Runtime
如果您不再需要使用 Anthos VM Runtime,可以停用此功能。
bmctl
如需停用运行时,请使用
bmctl
工具:bmctl disable vmruntime --kubeconfig KUBECONFIG_PATH \ --force=true
提供集群的 kubeconfig 文件的路径和以下配置选项的值:
--force
:设置为true
以确认您要删除现有虚拟机资源。默认值为false
。
自定义资源
如需停用运行时,请更新 VMRuntime
自定义资源:
修改
VMRuntime
自定义资源:kubectl edit vmruntime
在规范中设置
enabled:false
:apiVersion: vm.cluster.gke.io/v1` kind: VMRuntime metadata: name: vmruntime spec: enabled: false useEmulation: true vmImageFormat: qcow2
在编辑器中保存更新后的自定义资源规范。
如需验证
VMRuntime
自定义资源已停用,请查看在vm-system
命名空间中运行的 Pod:kubectl get pods --namespace vm-system
当只有属于
vmruntime-controller-manager
部署的 pod 在命名空间中运行时,Anthos VM Runtime 会停用。
了解运行虚拟机的行为
baremetal.cluster.gke.io/vmrumtime-force-disable
注释可用于 Anthos VM Runtime 资源,以定义在集群中运行虚拟机时运行时环境处于停用状态时的行为。
以下示例展示了此注释的值已默认设置为 false
:
// VM runtime yaml file
apiVersion: vm.cluster.gke.io/v1
kind: VMRuntime
metadata:
annotations:
baremetal.cluster.gke.io/vmrumtime-force-disable: "false"
name: vmruntime
[...]
当此注释设置为 false
时,Anthos VM Runtime 会尝试保护正在运行的虚拟机。在停用 Anthos VM Runtime 之前删除所有正在运行的虚拟机,或使用 bmctl disable vmruntime
命令指定 --force=true
参数,如上一部分所示。
下表说明了当此注释设置为 true
或 false
时正在运行的虚拟机会发生什么情况以及您是否指定了 --force=true
参数:
集群状态 | --force 参数 | vmrumtime-force-disable 注释 | 行为 |
---|---|---|---|
没有虚拟机 | 不适用 | 不适用 | 停用 Anthos VM Runtime。 |
现有虚拟机 | 正确 | 正确 | 删除所有正在运行的虚拟机和相关资源。停用 Anthos VM Runtime。 |
正确 | 错误 | 删除所有正在运行的虚拟机和相关资源。停用 Anthos VM Runtime。 | |
错误 | 正确 | 提示删除正在运行的虚拟机和相关资源。删除所有正在运行的虚拟机后,停用 Anthos VM Runtime。 | |
错误 | 错误 | 请勿删除任何正在运行的现有虚拟机。请勿停用 Anthos VM Runtime。bmctl 命令会返回错误。 |