Criar uma VM do Windows com base em uma imagem ISO no GKE em Bare Metal

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 Google Distributed Cloud. Quando a VM é inicializada, você conclui manualmente a rotina de configuração do Windows.

Também é possível criar uma VM do Windows com uma imagem de disco preparada usando uma origem 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