本快速入门介绍了如何使用 GDC 上的虚拟机运行时在 GKE on Bare Metal 上创建虚拟机 (VM)。GDC 上的虚拟机运行时使用 KubeVirt 来编排集群上的虚拟机,并可让您在统一的开发环境中使用基于虚拟机的应用和工作负载。
准备工作
如需完成本快速入门中的任务,您需要拥有 GKE on Bare Metal 1.12 版 (anthosBareMetalVersion: 1.12
) 或更高版本的访问权限。您可以使用任何能够运行工作负载的集群类型。如果需要,请在 Compute Engine 上试用 GKE on Bare Metal,或查看集群创建概览。
在 GDC 上启用虚拟机运行时
GDC 上的虚拟机运行时会自动安装在 GKE on Bare Metal 1.10 版或更高版本中,但默认处于停用状态。您必须先在 GDC 上启用虚拟机运行时,然后才能在 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
。如果 GDC 上的虚拟机运行时已启用,该命令会返回错误。
自定义资源
GKE on Bare Metal 版本 1.10 或更高版本可以使用自定义资源定义来启用 GDC 上的虚拟机运行时。此自定义资源是默认安装的。
修改
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 以在 GDC 上启用虚拟机运行时useEmulation
:如果您的节点不支持硬件虚拟化,或您不确定,请将值设置为 true。如果适用,硬件虚拟化可提供比软件模拟更好的性能。如果未指定useEmulation
字段,则默认为false
。vmImageFormat
:支持两个磁盘映像格式值:raw
和qcow2
。如果您未设置vmImageFormat
,GDC 上的虚拟机运行时将使用raw
磁盘映像格式来创建虚拟机。raw
格式可以提供比qcow2
(一种写入时复制格式)更高的性能,但可以使用更多磁盘。如需详细了解虚拟机的映像格式,请参阅 QEMU 文档中的磁盘映像文件格式。
在编辑器中保存自定义资源。
验证
VMRuntime
自定义资源是否已启用:kubectl describe vmruntime vmruntime
VMRuntime
自定义资源的详细信息包含Status
部分。GDC 上的虚拟机运行时已启用,当VMRuntime.Status.Ready
显示为true
时,该虚拟机运行时可正常运行。
安装 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) 的相关文档。如果出现问题,请查看 GDC 上的虚拟机运行时已知问题。该虚拟机可能需要几分钟才能创建完成。使用
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