Administra máquinas virtuales en bastidores conectados de Distributed Cloud

En esta página, se describe cómo administrar máquinas virtuales en racks conectados de Google Distributed Cloud que ejecutan el entorno de ejecución de VM en Google Distributed Cloud. 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.

Las cargas de trabajo de máquinas virtuales se admiten en el hardware de rack heredado (“Config 1” y “Config 2”), pero no en ninguna configuración de hardware de rack que lo reemplace.

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 conectados de Distributed Cloud 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.

Actualiza las máquinas virtuales existentes a la versión 1.7.0 de Distributed Cloud Connected

Debes agregar lo siguiente a la sección spec del recurso VMRuntime en tu clúster y, luego, aplicar el recurso modificado al clúster antes de actualizar el software conectado de Distributed Cloud a la versión 1.7.0:

spec:
  haPolicy:
    defaultRecoveryStrategy: Reschedule
    nodeHeartbeatInterval: 15s
    nodeMonitorGracePeriod: 55s

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.

  1. 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"
      # Set node grace period to 55 seconds; required for upgrading to 1.7.0
      haPolicy:
        defaultRecoveryStrategy: Reschedule
        nodeHeartbeatInterval: 15s
        nodeMonitorGracePeriod: 55s

    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.

    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
    

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.59.0-anthos1.28-gke.8
    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

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.

Ten en cuenta que no puedes crear una máquina virtual en un clúster conectado de Distributed Cloud directamente con el comando kubectl virt, ya que Distributed Cloud Connected no proporciona almacenamiento del sistema de archivos a las máquinas virtuales.

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

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: my-network
          default: true
      disks:
        - virtualMachineDiskName: ubuntu-main-disk
          boot: true
        - virtualMachineDiskName: ubuntu-iso-disk

    También debes configurar las siguientes funciones en tu clúster:

  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 con SSH o Escritorio remoto.

    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

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: my-network
          default: true
      disks:
        - virtualMachineDiskName: windows-main-disk
          boot: true
        - virtualMachineDiskName: windows-iso-disk
        - virtualMachineDiskName: win-virtio-driver

    También debes configurar las siguientes funciones en tu clúster:

  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.

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 Distributed Cloud conectado, primero debes configurar la conectividad de kubectl.

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?