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

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

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

事前準備

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

為 ISO 映像檔建立虛擬磁碟

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

如要從 Windows ISO 映像檔開機,請先建立 VirtualMachineDisk,並使用 diskTypecdrom。使用 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. 儲存空間和網路驅動程式現已可從 virtio 取得,請完成 Windows 安裝程序的其餘步驟。

    建議您啟用遠端桌面通訊協定,以便在安裝後直接連線至 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。

後續步驟