在 Google Distributed Cloud 中使用 ISO 映像檔建立 Windows VM

本文說明如何使用 GDC 上的 VM Runtime,建立從 ISO 開機的 Windows 虛擬機器 (VM)。VM 開機後,請手動完成 Windows 設定程序。

您也可以使用 HTTP 來源從 Cloud Storage,以準備好的磁碟映像檔建立 Windows VM。

事前準備

如要完成這份文件,您必須存取下列資源:

為 ISO 映像檔建立虛擬磁碟

如要順利建立 Windows VM,請依序按照本文的步驟和章節操作。

如要從 Windows ISO 映像檔開機,請先建立 VirtualMachineDisk,然後diskType cdrom。使用 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
    

建立 VM 驅動程式磁碟

如要從 Windows ISO 成功開機並完成安裝程序,VM 必須存取virtio驅動程式。如要將 virtio 驅動程式提供給 VM,請完成下列步驟:

  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。VM 會在安裝程序中使用這個磁碟。

  3. 在編輯器中儲存並關閉資訊清單。

  4. 使用 kubectl 建立 VirtualMachineDisk

    kubectl apply -f virtio-driver.yaml
    

建立 Windows VM

建立從 Windows ISO VirtualMachineDisk 開機的 VM,並附加 virtio 驅動程式磁碟:

  1. 在您選擇的編輯器中,建立定義開機磁碟區 VirtualMachineDiskVirtualMachine 的資訊清單,例如 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 替換為您想要的 VM 名稱。

    這份資訊清單會建立 100 Gibibyte (GiB) 的開機磁碟區。由於 VM 首次啟動時,這個開機磁碟區是空的,因此 VM 會從 ISO 啟動,將 ISO 視為 CD-ROM 裝置,以啟動設定常式。virtio驅動程式也會附加至完成安裝程序。

  3. 在編輯器中儲存並關閉資訊清單。

  4. 使用 kubectl 建立 VirtualMachineDiskVirtualMachine

    kubectl apply -f windows-vm.yaml
    

連線至 Windows VM 並完成 OS 安裝程序

VM 會啟動並從上一節的 Windows ISO 開機。連線至 VM,完成 Windows 安裝程序並設定 VM:

  1. 連線至 Windows VM:

    kubectl virt vnc VM_NAME
    

    VM_NAME 替換為 Windows VM 的名稱。

    在系統提示時,輸入 VM 的Windows 客戶端 OS 使用者憑證

    如要進一步瞭解如何使用 kubectl virt vnc 連線至 VM,請參閱使用 VNC 直接連線

  2. 在 Windows 設定中,選擇執行「自訂安裝」

  3. 選取「載入驅動程式」,瀏覽至 virtio磁碟上的「viostor」目錄,然後選取與要安裝的 Windows 版本相符的目錄。

    詳情請參閱「KubeVirt Windows virtio 驅動程式」。

  4. 現在有了  的儲存空間和網路驅動程式,請完成 Windows 安裝程序的其餘步驟。virtio

    建議您啟用遠端桌面通訊協定,以便在安裝後直接連線至 VM。

卸載 ISO 映像檔和驅動程式磁碟

Windows 安裝完成後,請從 VM 移除 virtio 驅動程式磁碟和 Windows ISO 映像檔:

  1. 停止 Windows VM:

    kubectl virt stop VM_NAME
    

    VM_NAME 替換為 Windows VM 的名稱。

  2. 使用 kubectl 編輯 VM:

    kubectl edit gvm VM_NAME
    

    VM_NAME 替換為 Windows VM 的名稱。

  3. 在編輯器中更新 spec.disks 區段,移除 Windows ISO 和 virtio 磁碟,如下例所示。附加至 VM 的磁碟應只剩下 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. 儲存並關閉 VM 資訊清單。

  5. 啟動 Windows VM:

    kubectl virt start VM_NAME
    

    VM_NAME 替換為 Windows VM 的名稱。

  6. 檢查 VM 的「STATUS」:

    kubectl get gvm VM_NAME
    

    VM_NAME 替換為 Windows VM 的名稱。

    確認 VM 處於 Running 狀態。如果 VM 不處於 Running 狀態,請檢查 VirtualMachine 資源資訊清單,確認您只移除了 Windows ISO 和 virtio 磁碟。確認主機有足夠的運算資源可啟動 VM。

後續步驟