通过 GDCV 中的 ISO 映像为裸金属创建 Windows 虚拟机

本文档介绍了如何使用 GDC 上的虚拟机运行时创建从 ISO 启动的 Windows 虚拟机 (VM)。虚拟机启动时,您需要手动完成 Windows 设置例程。

您还可以使用 HTTP 来源Cloud Storage 从准备好的磁盘映像创建 Windows 虚拟机。

准备工作

要完成本文档,您需要拥有以下资源的访问权限:

为 ISO 映像创建虚拟磁盘

如需成功创建 Windows 虚拟机,请依次按照本文档中的步骤和部分操作。

如需从 Windows ISO 映像启动,请先创建一个 diskTypecdromVirtualMachineDisk。使用 Windows ISO 作为此磁盘的来源。

  1. 在您选择的编辑器中创建 VirtualMachineDisk 清单,例如 windows-iso.yaml

    nano windows-iso.yaml
    
  2. 复制并粘贴以下 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

  3. 在编辑器中保存并关闭清单。

  4. 使用 kubectl 创建 VirtualMachineDisk

    kubectl apply -f windows-iso.yaml
    

创建虚拟机驱动程序磁盘

如需成功从 Windows ISO 启动并完成安装过程,虚拟机需要访问 virtio 驱动程序。如需向虚拟机提供 virtio 驱动程序,请完成以下步骤:

  1. 在您选择的编辑器中创建 VirtualMachineDisk 清单,例如 virtio-driver.yaml

    nano virtio-driver.yaml
    
  2. 复制并粘贴以下 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。您的虚拟机在安装过程中会使用此磁盘。

  3. 在编辑器中保存并关闭清单。

  4. 使用 kubectl 创建 VirtualMachineDisk

    kubectl apply -f virtio-driver.yaml
    

创建 Windows 虚拟机

创建一个从 Windows ISO VirtualMachineDisk 启动的虚拟机,并挂接 virtio 驱动程序磁盘:

  1. 在您选择的编辑器中创建用于为启动卷和 VirtualMachine 定义 VirtualMachineDisk 的清单,例如 windows-vm.yaml

    nano windows-vm.yaml
    
  2. 复制并粘贴以下 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 驱动程序也会挂接以完成安装过程。

  3. 在编辑器中保存并关闭清单。

  4. 使用 kubectl 创建 VirtualMachineDiskVirtualMachine

    kubectl apply -f windows-vm.yaml
    

连接到 Windows 虚拟机并完成操作系统安装

该虚拟机从上一部分中的 Windows ISO 启动和引导。连接到您的虚拟机并完成 Windows 安装过程并配置您的虚拟机:

  1. 连接到您的 Windows 虚拟机:

    kubectl virt vnc VM_NAME
    

    VM_NAME 替换为您的 Windows 虚拟机的名称。

    出现提示时,输入虚拟机的 Windows 客户机操作系统用户凭据

    如需详细了解如何使用 kubectl virt vnc 连接到您的虚拟机,请参阅使用 VNC 直接连接

  2. 在 Windows 设置中,选择执行自定义安装

  3. 选择加载驱动程序,浏览到 virtio 磁盘上的 viostor 目录,然后选择与目标 Windows 版本匹配的目录安装。

    如需了解详情,请参阅 KubeVirt Windows virtio 驱动程序

  4. 现在,virtio 的存储空间和网络驱动程序可供使用,完成 Windows 安装过程的其余步骤。

    我们建议您启用远程桌面协议,以便在安装后直接连接到虚拟机。

分离 ISO 映像和驱动程序磁盘

Windows 安装完成后,从虚拟机中移除 virtio 驱动程序磁盘和 Windows ISO 映像:

  1. 停止 Windows 虚拟机:

    kubectl virt stop VM_NAME
    

    VM_NAME 替换为您的 Windows 虚拟机的名称。

  2. 使用 kubectl 修改虚拟机:

    kubectl edit gvm VM_NAME
    

    VM_NAME 替换为您的 Windows 虚拟机的名称。

  3. 在编辑器中,更新 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:
    ...
    
  4. 保存并关闭虚拟机清单。

  5. 启动 Windows 虚拟机:

    kubectl virt start VM_NAME
    

    VM_NAME 替换为您的 Windows 虚拟机的名称。

  6. 检查虚拟机的 STATUS

    kubectl get gvm VM_NAME
    

    VM_NAME 替换为您的 Windows 虚拟机的名称。

    确保虚拟机处于 Running 状态。如果虚拟机未处于 Running 状态,请检查 VirtualMachine 资源清单,以确保仅移除 Windows ISO 和 virtio 磁盘。检查主机是否有足够的计算资源来启动虚拟机。

后续步骤