启用或停用 Anthos VM Runtime

本文档介绍如何通过更新 VMRuntime 自定义资源或运行 bmctl 命令来启用或停用 Anthos VM Runtime。

准备工作

如需启用或停用 Anthos VM Runtime,您需要以下资源和工具:

启用 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 自定义资源。此自定义资源是默认安装的。

  1. 修改 VMRuntime 自定义资源:

    kubectl edit vmruntime
    
  2. 在规范中设置 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 Runtime
    • useEmulation:如果您的节点不支持硬件虚拟化,或您不确定,请将值设置为 true。如果适用,硬件虚拟化可提供比软件模拟更好的性能。如果未指定 useEmulation 字段,则默认为 false
    • vmImageFormat:支持两个磁盘映像格式值:rawqcow2。如果未设置 vmImageFormat,Anthos VM Runtime 使用 raw 磁盘映像格式来创建虚拟机。raw 格式可以提供比 qcow2(一种写入时复制格式)更高的性能,但可以使用更多磁盘。如需详细了解虚拟机的映像格式,请参阅 QEMU 文档中的磁盘映像文件格式
  3. 在编辑器中保存自定义资源。

  4. 验证 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 自定义资源:

  1. 修改 VMRuntime 自定义资源:

    kubectl edit vmruntime
    
  2. 在规范中设置 enabled:false

    apiVersion: vm.cluster.gke.io/v1`
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: false
      useEmulation: true
      vmImageFormat: qcow2
    
  3. 在编辑器中保存更新后的自定义资源规范。

  4. 如需验证 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 参数,如上一部分所示。

下表说明了当此注释设置为 truefalse 时正在运行的虚拟机会发生什么情况以及您是否指定了 --force=true 参数:

集群状态 --force 参数 vmrumtime-force-disable 注释 行为
没有虚拟机 不适用 不适用 停用 Anthos VM Runtime。
现有虚拟机 正确 正确 删除所有正在运行的虚拟机和相关资源。停用 Anthos VM Runtime。
正确 错误 删除所有正在运行的虚拟机和相关资源。停用 Anthos VM Runtime。
错误 正确 提示删除正在运行的虚拟机和相关资源。删除所有正在运行的虚拟机后,停用 Anthos VM Runtime。
错误 错误 请勿删除任何正在运行的现有虚拟机。请勿停用 Anthos VM Runtime。bmctl 命令会返回错误。

后续步骤