快速入门:在 Anthos clusters on Bare Metal 中创建虚拟机

本快速入门介绍如何使用 Anthos VM Runtime 在 Anthos clusters on Bare Metal 上创建虚拟机 (VM)。Anthos VM Runtime 使用 KubeVirt 在集群上编排虚拟机,可让您在统一开发环境中处理基于虚拟机的应用和工作负载。

准备工作

如需完成本快速入门,您需要访问 Anthos clusters on Bare Metal 1.12 版 (anthosBareMetalVersion: 1.12) 或更高版本。您可以使用任何能够运行工作负载的集群类型。如果需要,请在 Compute Engine 上试用 Anthos clusters on Bare Metal,或查看集群创建概览

启用 Anthos VM Runtime

Anthos VM Runtime 会自动安装在 Anthos clusters on Bare Metal 1.10 版或更高版本上,但默认情况下处于停用状态。必须先启用 Anthos VM Runtime,然后才能在 Anthos clusters on Bare Metal 中运行虚拟机资源。

bmctl

Anthos clusters on Bare Metal 1.11 版或更高版本可以使用 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 已启用,则该命令会返回错误。

自定义资源

Anthos clusters on Bare Metal 1.10 版或更高版本可以使用自定义资源定义来启用 Anthos VM Runtime。此自定义资源是默认安装的。

  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 已启用且正常运行。

安装 virtctl 客户端工具

如需创建和管理虚拟机,请安装 virtctl 客户端工具

  1. kubectl 插件的形式安装 virtctl 客户端工具:

    export GOOGLE_APPLICATION_CREDENTIALS="PATH_TO_SERVICE_ACCOUNT_KEY/bm-gcr.json"
    sudo -E bmctl install virtctl
    

    这些凭据允许您对 virtctl 客户端工具进行身份验证并下载,然后在本地机器上安装 /usr/bin/kubectl-virt

  2. 验证 virtctl 插件是否已安装:

    kubectl plugin list
    

    如果响应中列出了 kubectl-virt,则表示插件已成功安装。

    如果未列出 kubectl-virt,请检查上一个 bmctl install 命令的输出中所注明的 install-virtctl.log 文件,例如 bmctl-workspace/log/install-virtctl-[date]/install-virtctl.log

创建虚拟机

在本快速入门中,您将使用 kubectl CLI 来创建使用公共虚拟机映像和默认凭据的虚拟机。

  1. 在集群中创建虚拟机。virtctl 插件与 kubectl 命令结合使用:

    kubectl virt create vm VM_NAME \
        --image ubuntu20.04 \
        --configure-initial-password USERNAME:PASSWORD
    

    此命令会创建一个 Ubuntu 20.04 虚拟机,默认 2 个 CPU、4Gi 内存和 ReadWriteOnce 模式的 20Gi 启动磁盘,使用 local-shared 存储类别。替换以下值:

    • VM_NAME:虚拟机的名称。 虚拟机名称只能包含小写字母数字字符或“-”,以字母数字字符开头和结尾,并且最多包含 63 个字符。如需了解详情,请参阅 Kubernetes 文档中的 RFC 1123 标签名称
    • USERNAME:要在虚拟机中创建的帐号的用户名。
    • PASSWORD:用户帐号的密码。

    如果您收到有关 CLI 参数的错误消息,请确认您的集群是 1.11.1 或更高版本,以及您使用的是最新版本的 virtctl 客户端工具。如需详细了解 CLI 错误,请参阅控制台日志。如需了解用户名和密码规则,请参阅客机操作系统 (OS) 的相关文档。如果某些功能未按预期运行,请检查 Anthos VM Runtime 已知问题

  2. 该虚拟机可能需要几分钟才能创建完成。使用 kubectl 命令检查虚拟机的状态:

    kubectl get gvm
    

    以下示例输出显示了处于 Running 状态的虚拟机:

    NAME         STATUS    AGE   IP
    vm-sample1   Running   64s   192.168.2.124
    

连接到虚拟机

虚拟机运行时,连接到虚拟机的控制台。

  1. 如需通过控制台访问虚拟机,请使用 kubectl

    kubectl virt console VM_NAME
    
  2. 出现提示时,输入您为创建虚拟机而指定的用户凭据。

  3. 成功连接到虚拟机的控制台后,退出虚拟机会话和控制台:

    Ctrl + ]
    

清理

要清理本快速入门中创建的资源,请按照以下步骤操作。

  1. 如需删除虚拟机和关联的 DataVolume,请使用 kubectl

    kubectl virt delete vm VM_NAME --all
    

后续步骤