本快速入门介绍如何使用 VM Runtime on Google Distributed Cloud 在 GKE on Bare Metal 中创建虚拟机 (VM)。VM Runtime on Google Distributed Cloud 使用 KubeVirt 在集群上编排虚拟机,可让您在统一开发环境中处理基于虚拟机的应用和工作负载。
准备工作
如需完成本快速入门中的任务,您需要拥有 GKE on Bare Metal 1.12 版 (anthosBareMetalVersion: 1.12
) 或更高版本的访问权限。您可以使用任何能够运行工作负载的集群类型。如果需要,请在 Compute Engine 上试用 GKE on Bare Metal,或查看集群创建概览。
启用 VM Runtime on Google Distributed Cloud
VM Runtime on Google Distributed Cloud 自动安装在 GKE on Bare Metal 1.10 版或更高版本中,但默认情况下处于停用状态。您必须先启用 VM Runtime on Google Distributed Cloud,然后才能在 GKE on Bare Metal 中运行虚拟机资源。
bmctl
GKE on Bare Metal 1.11 版或更高版本可以使用 bmctl
命令行工具:
如需启用运行时,请使用
bmctl
工具:bmctl enable vmruntime --kubeconfig KUBECONFIG_PATH
提供集群的 kubeconfig 文件的路径。创建集群时,GKE on Bare Metal 会在管理员工作站上生成 kubeconfig 文件。默认情况下,路径为
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
。如果 VM Runtime on Google Distributed Cloud 已启用,则该命令会返回错误。
自定义资源
GKE on Bare Metal 1.10 版或更高版本可以使用自定义资源定义来启用 VM Runtime on Google Distributed Cloud。此自定义资源是默认安装的。
修改
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 可启用 VM Runtime on Google Distributed ClouduseEmulation
:如果您的节点不支持硬件虚拟化,或您不确定,请将值设置为 true。如果适用,硬件虚拟化可提供比软件模拟更好的性能。如果未指定useEmulation
字段,则默认为false
。vmImageFormat
:支持两个磁盘映像格式值:raw
和qcow2
。如果未设置vmImageFormat
,则 VM Runtime on Google Distributed Cloud 使用raw
磁盘映像格式来创建虚拟机。raw
格式可以提供比qcow2
(一种写入时复制格式)更高的性能,但可以使用更多磁盘。如需详细了解虚拟机的映像格式,请参阅 QEMU 文档中的磁盘映像文件格式。
在编辑器中保存自定义资源。
验证
VMRuntime
自定义资源是否已启用:kubectl describe vmruntime vmruntime
VMRuntime
自定义资源的详细信息包含Status
部分。当VMRuntime.Status.Ready
显示为true
时,VM Runtime on Google Distributed Cloud 已启用并正常运行。
安装 virtctl
客户端工具
如需创建和管理虚拟机,请安装 virtctl 客户端工具。
以
kubectl
插件的形式安装virtctl
客户端工具:export GOOGLE_APPLICATION_CREDENTIALS="PATH_TO_SERVICE_ACCOUNT_KEY/bm-gcr.json" sudo -E bmctl install virtctl
这些凭据允许您对
virtctl
客户端工具进行身份验证并下载,然后在本地机器上安装/usr/bin/kubectl-virt
。验证
virtctl
插件是否已安装:kubectl plugin list
如果响应中列出了
kubectl-virt
,则表示插件已成功安装。如果未列出
kubectl-virt
,请检查上一个bmctl install
命令的输出中所注明的install-virtctl.log
文件,例如bmctl-workspace/log/install-virtctl-[date]/install-virtctl.log
。
创建虚拟机
在本快速入门中,您将使用 kubectl
CLI 来创建使用公共虚拟机映像和默认凭据的虚拟机。
在集群中创建虚拟机。
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) 的相关文档。如果某些功能未按预期运行,请检查 VM Runtime on Google Distributed Cloud 已知问题。该虚拟机可能需要几分钟才能创建完成。使用
kubectl
命令检查虚拟机的状态:kubectl get gvm
以下示例输出显示了处于
Running
状态的虚拟机:NAME STATUS AGE IP vm-sample1 Running 64s 192.168.2.124
连接到虚拟机
虚拟机运行时,连接到虚拟机的控制台。
如需通过控制台访问虚拟机,请使用
kubectl
:kubectl virt console VM_NAME
出现提示时,输入您为创建虚拟机而指定的用户凭据。
成功连接到虚拟机的控制台后,退出虚拟机会话和控制台:
Ctrl + ]
清理
要清理本快速入门中创建的资源,请按照以下步骤操作。
如需删除虚拟机和关联的 DataVolume,请使用
kubectl
:kubectl virt delete vm VM_NAME --all