Administra máquinas virtuales

En esta página, se describe cómo administrar máquinas virtuales en VM Runtime en Google Distributed Cloud conectado a Google Distributed Cloud en ejecución. Antes de completar los pasos de esta página, debes conocer el entorno de ejecución de VM en GDC. Para obtener una lista de los sistemas operativos invitados compatibles, consulta Sistemas operativos invitados verificados para el entorno de ejecución de VM en GDC.

Para obtener información sobre cómo las máquinas virtuales son un componente esencial de la plataforma conectada de Distributed Cloud, consulta Extiende GKE Enterprise para administrar VMs perimetrales locales.

Los clústeres del plano de control local admiten webhooks de máquina virtual. Esto permite que Distributed Cloud Connected valide las solicitudes de los usuarios realizadas al servidor de la API de Kubernetes local. Las solicitudes rechazadas generan información detallada sobre el motivo del rechazo.

Habilita la compatibilidad con el entorno de ejecución de VM en GDC en Distributed Cloud Connected

De forma predeterminada, la compatibilidad con máquina virtual del entorno de ejecución de VM en GDC está inhabilitada en Distributed Cloud Connected. Para habilitarlo, completa los pasos de esta sección. En las instrucciones de esta sección, se supone que tienes un clúster de Distributed Cloud conectado que funciona correctamente.

El recurso VMRuntime que configura la compatibilidad con VM Runtime en GDC en Distributed Cloud Connected también configura la compatibilidad con GPU en tu clúster con el parámetro enableGPU. Asegúrate de configurar los dos parámetros según las necesidades de tu carga de trabajo. No es necesario que habilites la compatibilidad con GPU para habilitar la compatibilidad con el entorno de ejecución de VM en GDC en tu clúster conectado de Distributed Cloud.

En la siguiente tabla, se describen los parámetros de configuración disponibles:

Valor enable Valor enableGPU Configuración resultante
false false Las cargas de trabajo solo se ejecutan en contenedores y no pueden usar recursos de GPU.
false true Las cargas de trabajo solo se ejecutan en contenedores y pueden usar recursos de GPU.
true true Las cargas de trabajo se pueden ejecutar en máquinas virtuales y en contenedores.
Ambos tipos de cargas de trabajo pueden usar recursos de GPU.
true false Las cargas de trabajo se pueden ejecutar en máquinas virtuales y en contenedores.
Ninguno de los tipos de cargas de trabajo puede usar recursos de GPU.

Si ya habilitaste la compatibilidad con GPU, modifica el recurso VMRuntime para agregar el parámetro enable, establece su valor en true y, luego, aplícalo a tu clúster de Distributed Cloud.

Habilita el subsistema de la máquina virtual del entorno de ejecución de VM en GDC

Según el tipo de clúster en el que quieras habilitar VM Runtime en el subsistema de máquina virtual de GDC, realiza una de las siguientes acciones:

  • En el caso de los clústeres del plano de control de Cloud, debes crear el recurso VMRuntime de forma manual.
  • En el caso de los clústeres con plano de control local, debes editar el recurso VMRuntime existente.

Para habilitar el entorno de ejecución de VM en el subsistema de máquina virtual de GDC, completa los siguientes pasos:

  1. Según el tipo de clúster de destino, crea o modifica el recurso personalizado VMRuntime con el siguiente contenido y aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      # Enable Anthos VM Runtime support
      enabled: true
      # vmImageFormat defaults to "raw" if not set
      vmImageFormat: "raw"

    No cambies el valor del parámetro vmImageFormat. Distributed Cloud Connected no admite ningún otro formato de disco virtual.

    Este proceso suele tardar varios minutos en completarse.

  2. Usa el siguiente comando para verificar que el recurso personalizado VMRuntime se haya aplicado a tu clúster:

    kubectl get vmruntime -o yaml

    El comando muestra un resultado similar al siguiente ejemplo:

     - apiVersion: vm.cluster.gke.io/v1
       kind: VMRuntime
       metadata:
         name: vmruntime
         ...
       spec:
         enabled: true
         vmImageFormat: raw
       status:
         ...
       ready: true
         ...
    
  3. Usa el siguiente comando para verificar que se haya habilitado la compatibilidad con máquina virtual del entorno de ejecución de VM en GDC en tu clúster:

    kubectl get pods -n vm-system

    El comando devuelve un resultado que muestra los Pods del subsistema de VM Runtime en GDC que se ejecutan en tu clúster, similar al siguiente ejemplo:

    NAME                                                READY   STATUS         RESTARTS        AGE
    cdi-apiserver-6c76c6cf7b-n68wn                      1/1     Running        0               132m
    cdi-deployment-f78fd599-vj7tv                       1/1     Running        0               132m
    cdi-operator-65c4df9647-fcb9d                       1/1     Running        0               134m
    cdi-uploadproxy-7765ffb694-6j7bf                    1/1     Running        0               132m
    macvtap-fjfjr                                       1/1     Running        0               134m
    virt-api-77dd99dbbb-bs2fb                           1/1     Running        0               132m
    virt-api-77dd99dbbb-pqc27                           1/1     Running        0               132m
    virt-controller-5b44dbbbd7-hc222                    1/1     Running        0               132m
    virt-controller-5b44dbbbd7-p8xkk                    1/1     Running        0               132m
    virt-handler-n76fs                                  1/1     Running        0               132m
    virt-operator-86565697d9-fpxqh                      2/2     Running        0               134m
    virt-operator-86565697d9-jnbt7                      2/2     Running        0               134m
    vm-controller-controller-manager-7844d5fb7b-72d8m   2/2     Running        0               134m
    vmruntime-controller-manager-845649c847-m78r9       2/2     Running        0               175m
    

Otorga acceso al espacio de nombres de destino al registro de Distributed Cloud conectado

Los pasos de esta sección solo se aplican a los clústeres del plano de control de Cloud. Si configuras el subsistema de máquina virtual del entorno de ejecución de VM en GDC en un clúster de plano de control local, omite esta sección.

Antes de crear una máquina virtual en un espacio de nombres, debes otorgarle acceso al registro conectado de Distributed Cloud. El registro contiene los componentes necesarios para crear y, luego, implementar tus máquinas virtuales en el espacio de nombres de destino. Ten en cuenta que no puedes ejecutar máquinas virtuales en espacios de nombres reservados para la administración del sistema conectado de Distributed Cloud. Para obtener más información, consulta Restricciones del espacio de nombres de administración.

Completa los siguientes pasos para otorgar acceso a tu espacio de nombres de destino al registro conectado de Distributed Cloud:

  1. Aplica parches a la cuenta de servicio predeterminada en el espacio de nombres de destino con la clave imagePullSecret llamada gcr-pull:

    kubectl patch sa default -p "{\"imagePullSecrets\": [{\"name\": \"gcr-pull\"}]}" -n NAMESPACE

    Reemplaza NAMESPACE por el nombre del espacio de nombres de destino.

  2. Actualiza el secreto asociado en el espacio de nombres de destino:

    # Delete existing secret.
    kubectl delete secret gcr-pull -n NAMESPACE --ignore-not-found
    # Copy the new secret to the target namespace.
    kubectl get secret gcr-pull -n vm-system -o yaml | sed "s/namespace: vm-system/namespace: NAMESPACE/g" | kubectl apply -f -

    Reemplaza NAMESPACE por el nombre del espacio de nombres de destino.

    El secreto vence después de una hora. Debes actualizarlo manualmente después de que venza.

Instala la herramienta de administración de virtctl

Necesitas la herramienta de cliente virtctl para administrar máquinas virtuales en tu clúster conectado a Distributed Cloud. Para instalar la herramienta, completa los siguientes pasos:

  1. Instala la herramienta de cliente virtctl como un complemento kubectl:

    export VERSION=v0.49.0-anthos1.12-gke.7
    gcloud storage cp gs://anthos-baremetal-release/virtctl/${VERSION}/linux-amd64/virtctl /usr/local/bin/virtctl
    cd /usr/local/bin
    sudo ln -s virtctl kubectl-virt
    sudo chmod a+x virtctl
    cd -
  2. Verifica que el complemento virt esté instalado:

    kubectl plugin list

    Si el complemento se instaló correctamente, el resultado del comando mostrará kubectl-virt como uno de los complementos.

Aprovisiona una máquina virtual en Distributed Cloud conectado con almacenamiento en bloque sin procesar

En esta sección, se proporcionan ejemplos de configuración que ilustran cómo aprovisionar una máquina virtual de Linux y una máquina virtual de Windows en un clúster conectado de Distributed Cloud con almacenamiento de bloques sin procesar. En los ejemplos, se usa el almacenamiento en bloque creado como un PersistentVolume.

Limitaciones del uso del almacenamiento en bloque sin procesar

Se aplican las siguientes limitaciones cuando se ejecutan máquinas virtuales con almacenamiento en bloque sin procesar en Distributed Cloud Connected:

  • El campo OSType no se admite en las especificaciones de recursos VirtualMachine en los clústeres del plano de control de Cloud. Por este motivo, solo se admiten los métodos console y vnc para acceder a las máquinas virtuales que se ejecutan en clústeres del plano de control de Cloud.
  • No puedes crear una máquina virtual en un clúster conectado de Distributed Cloud directamente con el comando kubectl virt porque Distributed Cloud connected no proporciona almacenamiento del sistema de archivos a las máquinas virtuales.
  • Los recursos de almacenamiento en bloque PersistentVolumeClaim no admiten el formato de imagen de disco qcow2.
  • El complemento Containerized Data Importer (CDI) no admite recursos DataVolume en el almacenamiento en bloque porque el espacio de trabajo del complemento solo funciona en el almacenamiento del sistema de archivos. Para obtener más información, consulta Espacio de trabajo.

Aprovisiona una máquina virtual de Linux en Distributed Cloud Connected con almacenamiento en bloque sin procesar

En el siguiente ejemplo, se ilustra cómo aprovisionar una máquina virtual de Linux con almacenamiento en bloque sin procesar que ejecuta Ubuntu Server 22.04. La fuente de instalación es la imagen ISO del disco de Ubuntu Server 22.04.

  1. Crea un recurso PersistentVolumeClaim con el siguiente contenido para la imagen de disco de instalación de Ubuntu Server y, luego, aplícalo a tu clúster:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      labels:
        app: containerized-data-importer
      name: iso-ubuntu
      annotations:
        cdi.kubevirt.io/storage.import.endpoint: "https://releases.ubuntu.com/jammy/ubuntu-22.04.3-live-server-amd64.iso"
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: local-block
      volumeMode: Block
      resources:
        requests:
          storage: 5Gi
  2. Crea un recurso PersistentVolumeClaim con el siguiente contenido para el disco duro virtual de la máquina virtual y, luego, aplícalo a tu clúster:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: ubuntuhd
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 15Gi
      storageClassName: local-block
      volumeMode: Block
  3. Crea un recurso VirtualMachineDisk con el siguiente contenido para la imagen de disco de instalación de Ubuntu Server y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: "ubuntu-iso-disk"
    spec:
      persistentVolumeClaimName: iso-ubuntu
      diskType: cdrom
  4. Crea un recurso VirtualMachineDisk con el siguiente contenido para el disco duro virtual de la máquina virtual y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: "ubuntu-main-disk"
    spec:
      persistentVolumeClaimName: ubuntuhd
  5. Crea un recurso VirtualMachineType con el siguiente contenido que especifica la configuración de la máquina virtual y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineType
    metadata:
      name: small-2-20
    spec:
      cpu:
        vcpus: 2
      memory:
        capacity: 20Gi
  6. Crea un recurso VirtualMachine con el siguiente contenido que crea una instancia de la máquina virtual y la inicia en el clúster, y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      labels:
        kubevirt.io/vm: ubu-vm
      name: ubu-vm #  Propagate the virtual machine name to the VMI
    spec:
      osType: Linux
      compute:
        virtualMachineTypeName: small-2-20
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - virtualMachineDiskName: ubuntu-main-disk
          boot: true
        - virtualMachineDiskName: ubuntu-iso-disk

    El campo osType solo se aplica a los clústeres con plano de control local. Es obligatorio en los clústeres del plano de control local para configurar las siguientes funciones:

  7. Instala Ubuntu Server en la máquina virtual:

    1. Espera a que el Pod importer descargue la imagen de disco de instalación de Ubuntu Server.
    2. Verifica el estado de la máquina virtual:

      kubectl get gvm VM_NAME

      Reemplaza VM_NAME por el nombre de la máquina virtual, ubu-vm en este ejemplo.

    3. Accede a la máquina virtual:

      kubectl virt vnc VM_NAME

      Reemplaza VM_NAME por el nombre de la máquina virtual, ubu-vm en este ejemplo.

    4. Completa los pasos de instalación de Ubuntu Linux.

  8. Limpieza:

    1. Detén la máquina virtual:

      kubectl virt stop VM_NAME

      Reemplaza VM_NAME por el nombre de la máquina virtual, ubu-vm en este ejemplo.

    2. Edita el archivo YAML de la máquina virtual para quitar la referencia a la imagen del disco de instalación:

      kubectl edit gvm VM_NAME

      Reemplaza VM_NAME por el nombre de la máquina virtual, ubu-vm en este ejemplo.

    3. Inicia la máquina virtual:

      kubectl virt start VM_NAME

      Reemplaza VM_NAME por el nombre de la máquina virtual, ubu-vm en este ejemplo.

    4. Borra los recursos VirtualMachineDisk y PersistentVolumeClaim de la imagen del disco de instalación:

      kubectl delete virtualmachinedisk ubuntu-iso-disk
      kubectl delete pvc iso-ubuntu

Aprovisiona una máquina virtual de Windows en Distributed Cloud connected con almacenamiento en bloque sin procesar

En el siguiente ejemplo, se ilustra cómo aprovisionar una máquina virtual de Windows con almacenamiento en bloque sin procesar. Los pasos son similares a los del aprovisionamiento de una máquina virtual de Linux, con la adición de la imagen de disco del controlador virtio, que se requiere para instalar Windows.

  1. Obtén una copia con licencia de Windows y su imagen de medios de instalación.

  2. Crea un recurso PersistentVolumeClaim con el siguiente contenido para la imagen del disco de instalación de Windows y, luego, aplícalo a tu clúster. Para obtener instrucciones, consulta Desde imagen.

  3. Crea un recurso PersistentVolumeClaim con el siguiente contenido para el controlador virtio y, luego, aplícalo a tu clúster:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      labels:
        app: containerized-data-importer
      name: virtio-driver
      annotations:
        cdi.kubevirt.io/storage.import.endpoint: "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso"
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: local-block
      volumeMode: Block
      resources:
        requests:
          storage: 1Gi
  4. Crea un recurso PersistentVolumeClaim con el siguiente contenido para el disco duro virtual de la máquina virtual y, luego, aplícalo a tu clúster:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: windowshd
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 15Gi
      storageClassName: local-block
      volumeMode: Block
  5. Crea un recurso VirtualMachineDisk con el siguiente contenido para la imagen de disco de instalación de Windows y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: "windows-iso-disk"
    spec:
      persistentVolumeClaimName: iso-windows
      diskType: cdrom
  6. Crea un recurso VirtualMachineDisk con el siguiente contenido para el controlador virtio y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: "win-virtio-driver"
    spec:
      persistentVolumeClaimName: virtio-driver
      diskType: cdrom
  7. Crea un recurso VirtualMachineDisk con el siguiente contenido para el disco duro virtual de la máquina virtual y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: "windows-main-disk"
    spec:
      persistentVolumeClaimName: windowshd
  8. Crea un recurso VirtualMachineType con el siguiente contenido que especifica la configuración de la máquina virtual y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineType
    metadata:
      name: small-2-20
    spec:
      cpu:
        vcpus: 2
      memory:
        capacity: 20Gi
  9. Crea un recurso VirtualMachine con el siguiente contenido que instancia y, luego, inicia la máquina virtual en el clúster, y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      labels:
        kubevirt.io/vm: win-vm
      name: win-vm #  Propagate the virtual machine name to the VMI
    spec:
      osType: Windows
      compute:
        virtualMachineTypeName: my-vmt
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - virtualMachineDiskName: windows-main-disk
          boot: true
        - virtualMachineDiskName: windows-iso-disk
        - virtualMachineDiskName: win-virtio-driver

    El campo osType solo se aplica a los clústeres con plano de control local. Es obligatorio en los clústeres del plano de control local para configurar las siguientes funciones:

  10. Instala Windows en la máquina virtual:

    1. Espera a que el Pod importer descargue la imagen del disco de instalación de Windows.
    2. Verifica el estado de la máquina virtual:

      kubectl get gvm VM_NAME

      Reemplaza VM_NAME por el nombre de la máquina virtual, win-vm en este ejemplo.

    3. Completa la instalación de Windows siguiendo los pasos que se indican en Conéctate a la VM de Windows y completa la instalación del SO.

  11. Limpieza:

    1. Detén la máquina virtual:

      kubectl virt stop VM_NAME

      Reemplaza VM_NAME por el nombre de la máquina virtual, win-vm en este ejemplo.

    2. Completa los pasos en Desconecta la imagen ISO y el disco de controladores.

Aprovisiona una máquina virtual en Distributed Cloud conectado con Symcloud Storage

En esta sección, se proporcionan ejemplos de configuración que ilustran cómo aprovisionar una máquina virtual de Linux y una máquina virtual de Windows en un clúster conectado de Distributed Cloud con la capa de abstracción de Symcloud Storage.

Antes de completar los pasos de esta sección, primero debes completar los pasos en Configura Distributed Cloud Connected para Symcloud Storage. Si más adelante inhabilitas Symcloud Storage en el clúster, fallarán las máquinas virtuales configuradas para usar Symcloud Storage.

Aprovisiona una máquina virtual de Linux en Distributed Cloud conectado con Symcloud Storage

En el siguiente ejemplo, se muestra cómo aprovisionar una máquina virtual de Linux con Symcloud Storage que ejecuta Ubuntu Server 22.04. La fuente de instalación es la imagen ISO del disco de Ubuntu Server 22.04.

  1. Crea un recurso VirtualMachineDisk con el siguiente contenido para la imagen de disco de instalación de Ubuntu Server y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: ubuntu-iso-disk
    spec:
      size: 20Gi
      storageClassName: robin
      diskType: cdrom
      source:
        http:
          url: https://releases.ubuntu.com/jammy/ubuntu-22.04.3-live-server-amd64.iso
  2. Crea un recurso VirtualMachineDisk con el siguiente contenido para el disco duro virtual de la máquina virtual y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: "ubuntu-main-disk"
    spec:
      size: 200Gi
      storageClassName: robin
  3. Crea un recurso VirtualMachineType con el siguiente contenido que especifica la configuración de la máquina virtual y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineType
    metadata:
      name: small-2-20
    spec:
      cpu:
        vcpus: 2
      memory:
        capacity: 20Gi
  4. Crea un recurso VirtualMachine con el siguiente contenido que crea una instancia de la máquina virtual y la inicia en el clúster, y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      labels:
        kubevirt.io/vm: ubu-vm
      name: ubu-vm #  Propagate the virtual machine name to the VMI
    spec:
      osType: Linux
      compute:
        virtualMachineTypeName: small-2-20
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - virtualMachineDiskName: ubuntu-main-disk
          boot: true
        - virtualMachineDiskName: ubuntu-iso-disk

    El campo osType solo se aplica a los clústeres con plano de control local. Es obligatorio en los clústeres del plano de control local para configurar las siguientes funciones:

  5. Instala Ubuntu Server en la máquina virtual:

    1. Espera a que el Pod importer descargue la imagen de disco de instalación de Ubuntu Server.
    2. Verifica el estado de la máquina virtual:

      kubectl get gvm VM_NAME

      Reemplaza VM_NAME por el nombre de la máquina virtual, ubu-vm en este ejemplo.

    3. Accede a la máquina virtual:

      kubectl virt vnc VM_NAME

      Reemplaza VM_NAME por el nombre de la máquina virtual, ubu-vm en este ejemplo.

    4. Completa los pasos de instalación de Ubuntu Linux.

  6. Limpieza:

    1. Detén la máquina virtual:

      kubectl virt stop VM_NAME

      Reemplaza VM_NAME por el nombre de la máquina virtual, ubu-vm en este ejemplo.

    2. Edita el archivo YAML de la máquina virtual para quitar la referencia a la imagen del disco de instalación:

      kubectl edit gvm VM_NAME

      Reemplaza VM_NAME por el nombre de la máquina virtual, ubu-vm en este ejemplo.

    3. Inicia la máquina virtual:

      kubectl virt start VM_NAME

      Reemplaza VM_NAME por el nombre de la máquina virtual, ubu-vm en este ejemplo.

    4. Borra el recurso VirtualMachineDisk de la imagen del disco de instalación:

      kubectl delete virtualmachinedisk ubuntu-iso-disk

Aprovisiona una máquina virtual de Windows en Distributed Cloud conectado con Symcloud Storage

En el siguiente ejemplo, se ilustra cómo aprovisionar una máquina virtual de Windows con Symcloud Storage. Los pasos son similares a los del aprovisionamiento de una máquina virtual de Linux, con la adición de la imagen de disco del controlador virtio, que se requiere para instalar Windows.

  1. Obtén una copia con licencia de Windows y su imagen de medios de instalación.

  2. Crea un recurso VirtualMachineDisk con el siguiente contenido para la imagen de disco de instalación de Windows y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: windows-iso-disk
      namespace: default
    spec:
      size: 5Gi
      storageClassName: robin
      diskType: cdrom
      source:
        http:
          url: WINDOWS_ISO_URL

    Reemplaza NAT_GATEWAY por la URL completa de la imagen ISO del disco de instalación de Windows de destino.

  3. Crea un recurso VirtualMachineDisk con el siguiente contenido para el controlador virtio y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: windows-virtio-driver
      namespace: default
    spec:
      size: 1Gi
      storageClassName: robin
      diskType: cdrom
      source:
        http:
          url: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
  4. Crea un recurso VirtualMachineDisk con el siguiente contenido para el disco duro virtual de la máquina virtual y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: windows-main-disk
      namespace: default
    spec:
      size: 15Gi
      storageClassName: robin
  5. Crea un recurso VirtualMachineType con el siguiente contenido que especifica la configuración de la máquina virtual y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineType
    metadata:
      name: small-2-20
    spec:
      cpu:
        vcpus: 2
      memory:
        capacity: 20Gi
  6. Crea un recurso VirtualMachine con el siguiente contenido que instancia y, luego, inicia la máquina virtual en el clúster, y, luego, aplícalo a tu clúster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      labels:
        kubevirt.io/vm: win-vm
      name: win-vm #  Propagate the virtual machine name to the VMI
    spec:
      osType: Windows
      compute:
        virtualMachineTypeName: my-vmt
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - virtualMachineDiskName: windows-main-disk
          boot: true
        - virtualMachineDiskName: windows-iso-disk
        - virtualMachineDiskName: win-virtio-driver

    El campo osType solo se aplica a los clústeres con plano de control local. Es obligatorio en los clústeres del plano de control local para configurar las siguientes funciones:

  7. Instala Windows en la máquina virtual:

    1. Espera a que el Pod importer descargue la imagen del disco de instalación de Windows.
    2. Verifica el estado de la máquina virtual:

      kubectl get gvm VM_NAME

      Reemplaza VM_NAME por el nombre de la máquina virtual, win-vm en este ejemplo.

    3. Completa la instalación de Windows siguiendo los pasos que se indican en Conéctate a la VM de Windows y completa la instalación del SO.

  8. Limpieza:

    1. Detén la máquina virtual:

      kubectl virt stop VM_NAME

      Reemplaza VM_NAME por el nombre de la máquina virtual, win-vm en este ejemplo.

    2. Completa los pasos en Desconecta la imagen ISO y el disco de controladores.

Aprovisiona una máquina virtual en Distributed Cloud connected con virtctl

Si no necesitas la personalización que se proporciona al escribir tus propias especificaciones de recursos para tus máquinas virtuales, puedes aprovisionar una máquina virtual en Distributed Cloud con la herramienta de línea de comandos virtctl, como se describe en Crea una VM.

Administra máquinas virtuales que se ejecutan en Distributed Cloud connected

Si deseas obtener instrucciones para administrar máquinas virtuales que se ejecutan en Distributed Cloud conectado, consulta la siguiente documentación del entorno de ejecución de VM en GDC:

Para administrar las máquinas virtuales que se ejecutan en clústeres de plano de control local, primero debes configurar la conectividad de kubectl.

Configura el dispositivo ttyS0 para acceder a la consola en serie de las máquinas virtuales Linux

Si planeas acceder a tus máquinas virtuales de Linux con la consola en serie (kubectl virt console), asegúrate de que el dispositivo de consola en serie ttyS0 se haya configurado en el sistema operativo invitado. Para configurar este dispositivo, completa los siguientes pasos:

  1. Crea una instancia del dispositivo serial ttyS0 en el sistema:

    setserial -g /dev/ttyS0
  2. Configura el bootloader grub para que use el dispositivo serial ttyS0. Para ello, agrega las siguientes líneas al archivo de configuración /etc/default/grub. La primera línea reemplaza tu variable GRUB_CMDLINE_LINUX existente.

    GRUB_CMDLINE_LINUX='console=tty0 console=ttyS0,19200n8'
    GRUB_TERMINAL=serial
    GRUB_SERIAL_COMMAND="serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1"
  3. Aplica la nueva configuración de grub a tu sector de arranque:

    update-grub
  4. Reinicia la máquina virtual.

Inhabilita el entorno de ejecución de VM en GDC en Distributed Cloud Connected

Sigue los pasos de esta sección para inhabilitar el entorno de ejecución de VM en GDC en Distributed Cloud Connected. Antes de inhabilitar el entorno de ejecución de VMs en GDC en Distributed Cloud conectado, debes detener y borrar todas las máquinas virtuales en tu clúster de Distributed Cloud conectado, como se describe en Borra una VM.

Para inhabilitar el entorno de ejecución de VM en GDC en Distributed Cloud Connected, modifica el recurso personalizado VMRuntime configurando el parámetro de especificación enabled en false de la siguiente manera y, luego, aplícalo a tu clúster:

apiVersion: vm.cluster.gke.io/v1
kind: VMRuntime
metadata:
  name: vmruntime
spec:
  # Disable Anthos VM Runtime
  enabled: false
  # vmImageFormat defaults to "raw" if not set
  vmImageFormat: "raw"

¿Qué sigue?