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

您可以使用 GDC 的 VM 執行階段,建立直接從 ISO 映像檔啟動的 Windows 虛擬機器 (VM)。VM 啟動後,請手動完成 Windows 設定程序。

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

事前準備

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

為 ISO 映像檔建立虛擬磁碟

如要成功建立 Windows VM,請依序按照本文件中的步驟和章節操作。

如要從 Windows ISO 映像檔啟動,請先建立 diskType 為 cdrom 的 VirtualMachineDisk。使用 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. 在您偏好的編輯器中建立資訊清單,定義開機磁碟區的 VirtualMachineDisk 和 VirtualMachine (例如 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 啟動,做為 CD-ROM 裝置,開始設定程序。virtio 驅動程式也會一併附加,以完成安裝程序。

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

  4. 使用 kubectl 建立 VirtualMachineDisk 和 VirtualMachine:

    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。

後續步驟