Criar uma VM do Windows usando uma imagem ISO no Google Distributed Cloud

Neste documento, mostramos como criar uma máquina virtual (VM) do Windows que é inicializada de uma ISO usando o ambiente de execução de VMs no GDC. Quando a VM é inicializada, você conclui manualmente a rotina de configuração do Windows.

Também é possível criar uma VM do Windows a partir de uma imagem de disco preparada usando uma fonte HTTP ou do Cloud Storage.

Antes de começar

Para concluir este documento, você precisa de acesso aos seguintes recursos:

Criar um disco virtual para a imagem ISO

Para criar uma VM do Windows, siga as etapas e seções deste documento em ordem.

Para inicializar com uma imagem ISO do Windows, primeiro crie um VirtualMachineDisk com diskType de cdrom. Use o ISO do Windows como fonte desse disco.

  1. Crie um manifesto de VirtualMachineDisk, como windows-iso.yaml, no editor de sua escolha:

    nano windows-iso.yaml
    
  2. Copie e cole o seguinte manifesto YAML:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: windows-iso
    spec:
      source:
        http:
          url: IMG_URL
      size: 10Gi
      diskType: cdrom
    

    Substitua IMG_URL pelo caminho HTTP para o ISO do Windows. Também é possível criar e usar credenciais para importar um ISO do Cloud Storage.

  3. Salve e feche o manifesto no editor.

  4. Crie VirtualMachineDisk usando kubectl:

    kubectl apply -f windows-iso.yaml
    

Criar um disco de drivers de VM

Para inicializar com base em um ISO do Windows e concluir o processo de instalação, a VM precisa ter acesso aos drivers virtio. Para fornecer os drivers virtio à VM, siga estas etapas:

  1. Crie um manifesto de VirtualMachineDisk, como virtio-driver.yaml, no editor de sua escolha:

    nano virtio-driver.yaml
    
  2. Copie e cole o seguinte manifesto 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
    

    Esse manifesto extrai os drivers virtio mais recentes de um repositório público do Docker e define o diskType como cdrom. A VM usa esse disco durante o processo de instalação.

  3. Salve e feche o manifesto no editor.

  4. Crie VirtualMachineDisk usando kubectl:

    kubectl apply -f virtio-driver.yaml
    

Criar uma VM do Windows

Crie uma VM com a inicialização do VirtualMachineDisk do ISO do Windows e anexe o disco dos drivers virtio:

  1. Crie um manifesto que defina um VirtualMachineDisk para o volume de inicialização e uma VirtualMachine, como windows-vm.yaml, no editor de sua escolha:

    nano windows-vm.yaml
    
  2. Copie e cole o seguinte manifesto 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
    

    Substitua VM_NAME pelo nome da sua VM.

    Esse manifesto cria um volume de inicialização de 100 Gibibyte (GiB). Como esse volume de inicialização está vazio quando a VM é iniciada pela primeira vez, a VM é inicializada do ISO como um dispositivo de CD-ROM para iniciar a rotina de configuração. Os drivers virtio também são anexados para concluir o processo de instalação.

  3. Salve e feche o manifesto no editor.

  4. Crie VirtualMachineDisk e VirtualMachine usando kubectl:

    kubectl apply -f windows-vm.yaml
    

Conectar-se à VM do Windows e concluir a instalação do SO

A VM é iniciada e inicializada pelo ISO do Windows na seção anterior. Conecte-se à VM, conclua o processo de instalação do Windows e configure a VM:

  1. Conecte-se à VM do Windows:

    kubectl virt vnc VM_NAME
    

    Substitua VM_NAME pelo nome da sua VM do Windows.

    Quando solicitado, digite as credenciais de usuário do SO convidado do Windows para sua VM.

    Para mais informações sobre como usar o kubectl virt vnc para se conectar à sua VM, consulte Conectar diretamente usando o VNC.

  2. Na configuração do Windows, escolha executar uma Instalação personalizada.

  3. Selecione Carregar driver, navegue até o diretório viostor no disco virtio e selecione o diretório que corresponde à versão do Windows que você quer instalar.

    Para mais informações, consulte Drivers virtio do KubeVirt do Windows.

  4. Com os drivers de armazenamento e de rede de virtio agora disponíveis, conclua o restante do processo de instalação do Windows.

    Recomendamos ativar o protocolo Remote Desktop para se conectar diretamente à VM após a instalação.

Remover a imagem ISO e o disco dos drivers

Após a conclusão da instalação do Windows, remova o disco de drivers virtio e a imagem ISO do Windows da VM:

  1. Interrompa a VM do Windows:

    kubectl virt stop VM_NAME
    

    Substitua VM_NAME pelo nome da sua VM do Windows.

  2. Use kubectl para editar a VM:

    kubectl edit gvm VM_NAME
    

    Substitua VM_NAME pelo nome da sua VM do Windows.

  3. No seu editor, atualize a seção spec.disks para remover os discos ISO e virtio do Windows, como mostrado no exemplo a seguir. O único disco restante anexado à VM precisa ser o 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. Salve e feche o manifesto da VM.

  5. Inicie sua VM do Windows:

    kubectl virt start VM_NAME
    

    Substitua VM_NAME pelo nome da sua VM do Windows.

  6. Verifique o STATUS da sua VM:

    kubectl get gvm VM_NAME
    

    Substitua VM_NAME pelo nome da sua VM do Windows.

    Verifique se a VM está no estado Running. Se a VM não estiver no estado Running, verifique o manifesto do recurso VirtualMachine para garantir que você tenha só removido o disco ISO e virtio do Windows. Verifique se o host tem recursos de computação suficientes para iniciar sua VM.

A seguir