本文档介绍了如何使用 GDC 上的虚拟机运行时创建从 ISO 启动的 Windows 虚拟机 (VM)。虚拟机启动时,您需要手动完成 Windows 设置例程。
您还可以使用 HTTP 来源或 Cloud Storage 从准备好的磁盘映像创建 Windows 虚拟机。
准备工作
要完成本文档,您需要拥有以下资源的访问权限:
- GKE on Bare Metal 1.12.0 版 (
anthosBareMetalVersion: 1.12.0
) 或更高版本集群的访问权限。您可以使用任何能够运行工作负载的集群类型。如果需要,请在 Compute Engine 上试用适用于 Bare Metal 的 GDCV 或参阅集群创建概览。 - 作为
kubectl
的插件安装的virtctl
客户端工具。如果需要,请安装 virtctl 客户端工具。
为 ISO 映像创建虚拟磁盘
如需成功创建 Windows 虚拟机,请依次按照本文档中的步骤和部分操作。
如需从 Windows ISO 映像启动,请先创建一个 diskType
为 cdrom
的 VirtualMachineDisk
。使用 Windows ISO 作为此磁盘的来源。
在您选择的编辑器中创建
VirtualMachineDisk
清单,例如windows-iso.yaml
:nano windows-iso.yaml
复制并粘贴以下 YAML 清单:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-iso spec: source: http: url: IMG_URL size: 10Gi diskType: cdrom
将
IMG_URL
替换为 Windows ISO 的 HTTP 路径。您还可以创建并使用凭据从 Cloud Storage 导入 ISO。在编辑器中保存并关闭清单。
使用
kubectl
创建VirtualMachineDisk
:kubectl apply -f windows-iso.yaml
创建虚拟机驱动程序磁盘
如需成功从 Windows ISO 启动并完成安装过程,虚拟机需要访问 virtio
驱动程序。如需向虚拟机提供 virtio
驱动程序,请完成以下步骤:
在您选择的编辑器中创建
VirtualMachineDisk
清单,例如virtio-driver.yaml
:nano virtio-driver.yaml
复制并粘贴以下 YAML 清单:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: virtio-driver spec: size: 1Gi source: registry: url: docker://quay.io/kubevirt/virtio-container-disk:latest diskType: cdrom
此清单从公共 Docker 代码库中拉取最新的
virtio
驱动程序,并将diskType
设置为cdrom
。您的虚拟机在安装过程中会使用此磁盘。在编辑器中保存并关闭清单。
使用
kubectl
创建VirtualMachineDisk
:kubectl apply -f virtio-driver.yaml
创建 Windows 虚拟机
创建一个从 Windows ISO VirtualMachineDisk
启动的虚拟机,并挂接 virtio
驱动程序磁盘:
在您选择的编辑器中创建用于为启动卷和
VirtualMachine
定义VirtualMachineDisk
的清单,例如windows-vm.yaml
:nano windows-vm.yaml
复制并粘贴以下 YAML 清单:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: VM_NAME-boot-dv spec: size: 100Gi --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: osType: Windows disks: - virtualMachineDiskName: VM_NAME-boot-dv boot: true - virtualMachineDiskName: windows-iso - virtualMachineDiskName: virtio-driver compute: cpu: vcpus: 2 memory: capacity: 4Gi interfaces: - name: eth0 networkName: pod-network
将
VM_NAME
替换为您想要使用的虚拟机名称。此清单会创建 100 GiB 启动卷。由于此启动卷在虚拟机首次启动时为空,因此虚拟机会从 ISO 作为 CD-ROM 设备启动以启动设置例程。
virtio
驱动程序也会挂接以完成安装过程。在编辑器中保存并关闭清单。
使用
kubectl
创建VirtualMachineDisk
和VirtualMachine
:kubectl apply -f windows-vm.yaml
连接到 Windows 虚拟机并完成操作系统安装
该虚拟机从上一部分中的 Windows ISO 启动和引导。连接到您的虚拟机并完成 Windows 安装过程并配置您的虚拟机:
连接到您的 Windows 虚拟机:
kubectl virt vnc VM_NAME
将
VM_NAME
替换为您的 Windows 虚拟机的名称。出现提示时,输入虚拟机的 Windows 客户机操作系统用户凭据。
如需详细了解如何使用
kubectl virt vnc
连接到您的虚拟机,请参阅使用 VNC 直接连接。在 Windows 设置中,选择执行自定义安装。
选择加载驱动程序,浏览到
virtio
磁盘上的 viostor 目录,然后选择与目标 Windows 版本匹配的目录安装。如需了解详情,请参阅 KubeVirt Windows
virtio
驱动程序。现在,
virtio
的存储空间和网络驱动程序可供使用,完成 Windows 安装过程的其余步骤。我们建议您启用远程桌面协议,以便在安装后直接连接到虚拟机。
分离 ISO 映像和驱动程序磁盘
Windows 安装完成后,从虚拟机中移除 virtio
驱动程序磁盘和 Windows ISO 映像:
停止 Windows 虚拟机:
kubectl virt stop VM_NAME
将
VM_NAME
替换为您的 Windows 虚拟机的名称。使用
kubectl
修改虚拟机:kubectl edit gvm VM_NAME
将
VM_NAME
替换为您的 Windows 虚拟机的名称。在编辑器中,更新
spec.disks
部分以移除 Windows ISO 和virtio
磁盘,如以下示例所示。挂接到虚拟机的唯一磁盘应为VM_NAME-boot-dv
:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: windows-vm spec: osType: Windows disks: - virtualMachineDiskName: windows-vm-boot-dv boot: true interfaces: ...
保存并关闭虚拟机清单。
启动 Windows 虚拟机:
kubectl virt start VM_NAME
将
VM_NAME
替换为您的 Windows 虚拟机的名称。检查虚拟机的
STATUS
:kubectl get gvm VM_NAME
将
VM_NAME
替换为您的 Windows 虚拟机的名称。确保虚拟机处于
Running
状态。如果虚拟机未处于Running
状态,请检查VirtualMachine
资源清单,以确保仅移除 Windows ISO 和virtio
磁盘。检查主机是否有足够的计算资源来启动虚拟机。