Editar la configuración de VM en el entorno de ejecución de VM en Google Distributed Cloud

Este documento está dirigido a los propietarios de aplicaciones que usan el entorno de ejecución de VM en Google Distributed Cloud para ejecutar máquinas virtuales (VMs) en GKE en Bare Metal. En este documento, se muestra cómo editar las VMs que se ejecutan en clústeres de GKE. Por ejemplo, puedes editar la asignación de recursos, como la CPU y la memoria, o cambiar la red a la que se conecta una VM.

Puedes modificar cualquier campo en la sección spec de un recurso VirtualMachine. También puedes editar las etiquetas de una VM. No se pueden editar otros campos, como el nombre de la VM (metadata.name). De forma predeterminada, tu VM debe tener un estado Stopped antes de editar el recurso. Sin embargo, a partir de la versión 1.13.0 de GKE en Bare Metal, puedes configurar tu recurso VirtualMachine para que se reinicie automáticamente cada vez que cambies la configuración.

Si tus ediciones en el recurso VirtualMachine contienen errores cuando los guardas, los cambios se rechazan y ves una notificación. Corrige los errores e intenta guardar el recurso VirtualMachine nuevamente. Si tu VM no se inicia después de realizar cambios, usa el comando kubectl describe gvm VM_NAME para ver la información de solución de problemas y corregir los errores.

Antes de comenzar

Para completar este documento, necesitas acceso a los siguientes recursos:

Edita recursos de procesamiento

Si la carga de trabajo de procesamiento requiere un cambio, puedes actualizar la cantidad de CPU virtuales y de memoria que asignas a las VM. Para editar tus cargas de trabajo de procesamiento, completa los siguientes pasos:

  1. Detén la VM que deseas editar:

    kubectl virt stop VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que deseas detener.

  2. Usa kubectl para editar la VM:

    kubectl edit gvm VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que deseas editar.

  3. En tu editor, actualiza los valores de los recursos de procesamiento que deseas cambiar.

    Por ejemplo, en el siguiente manifiesto VirtualMachine de muestra, se muestra que el recurso de VM tiene 2 CPU virtuales asignadas:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      compute:
        cpu:
          vcpus: 2
    ...
    

    Si quieres actualizar la cantidad de CPU virtuales asignadas, cambia el valor en tu editor, como se muestra en el siguiente ejemplo:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      compute:
        cpu:
          vcpus: 4
    ...
    
  4. Guarda y cierra el manifiesto de la VM.

  5. Inicia la VM que editaste:

    kubectl virt start VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que editaste.

  6. Verifica el STATUS de tu VM:

    kubectl get gvm VM_NAME
    

    Asegúrate de que tu VM esté en un estado Running. Si tu VM solicita más recursos de procesamiento de los que el host puede proporcionar, tu VM no se puede iniciar. Si la VM no está en un estado Running, verifica el manifiesto de recursos VirtualMachine y la disponibilidad del recurso de procesamiento en el host.

    En el siguiente resultado de ejemplo, se muestra la VM en un estado Running:

    NAME   STATUS    AGE   IP
    vm1    Running   1m    192.168.2.72
    
  7. Consulta información detallada sobre una VM mediante kubectl describe gvm:

    kubectl describe gvm VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que editaste.

    En el siguiente resultado de ejemplo, se muestra la información resumida de una VM, con un cambio en la cantidad de CPU virtuales aplicado de forma correcta:

    Name:         vm1
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    API Version:  vm.cluster.gke.io/v1
    Kind:         VirtualMachine
    ...
    Spec:
      Compute:
        Cpu:
          Vcpus:  4
    ...
    

Para obtener más información, consulta cómo crear VM con configuraciones de procesamiento específicas de CPU virtual y memoria.

Edita los recursos del disco

Si los requisitos de almacenamiento cambian, puedes agregar discos virtuales a una VM o quitarlos. Para editar los discos conectados a tu VM, completa los siguientes pasos:

  1. Detén la VM que deseas editar:

    kubectl virt stop VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que deseas detener.

  2. Usa kubectl para editar la VM:

    kubectl edit gvm VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que deseas editar.

  3. En tu editor, actualiza la sección spec.disks para conectar o desconectar discos.

    Por ejemplo, en el siguiente manifiesto VirtualMachine de muestra, solo hay un disco de arranque conectado a la VM:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      disks:
        - boot: true
          virtualMachineDiskName: vm1-boot-dv
      ...
    

    Si deseas agregar un disco vacío existente, actualiza la configuración del disco en tu editor, como se muestra en el siguiente ejemplo:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      disks:
        - boot: true
          virtualMachineDiskName: vm1-boot-dv
        - virtualMachineDiskName: DISK_NAME
      ...
    

    Reemplaza DISK_NAME por el nombre del disco que deseas conectar.

  4. Guarda y cierra el manifiesto de la VM.

  5. Inicia la VM que editaste:

    kubectl virt start VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que editaste.

  6. Verifica el STATUS de tu VM:

    kubectl get gvm VM_NAME
    

    Asegúrate de que tu VM esté en un estado Running. Si tu VM solicita una StorageClass o una asignación de disco que el host no puede proporcionar, no se puede iniciar tu VM. Si la VM no está en un estado Running, verifica los manifiestos de recursos VirtualMachine y VirtualMachineDisk y la compatibilidad de almacenamiento del host.

  7. Consulta información detallada sobre una VM mediante kubectl describe gvm:

    kubectl describe gvm VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que editaste.

    En el siguiente resultado de ejemplo, se muestra la información resumida de una VM, con un cambio en los discos conectados aplicado de forma correcta:

    Name:         vm1
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    API Version:  vm.cluster.gke.io/v1
    Kind:         VirtualMachine
    ...
    Spec:
      Disks:
        Name:  vm1-boot-dv
        Name:  data-disk-01
    ...
    

Si deseas obtener más información, consulta cómo crear y administrar discos.

Edita recursos de red

A medida que tu infraestructura cambia, es posible que desees cambiar la configuración de red para una VM. Por ejemplo, es posible que desees conectar la VM a una red virtual diferente o asignar una dirección IP de forma manual. Para editar la configuración de red de una VM, completa los siguientes pasos:

  1. Detén la VM que deseas editar:

    kubectl virt stop VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que deseas detener.

  2. Usa kubectl para editar la VM:

    kubectl edit gvm VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que deseas editar.

  3. En tu editor, actualiza los parámetros de configuración de red que deseas cambiar.

    Por ejemplo, en el siguiente manifiesto de muestra VirtualMachine, la VM se conecta a una red llamada backend-vlan100 y usa DHCP, ya que no se define ninguna dirección IP:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      interfaces:
        - name: eth0
          networkName: backend-vlan100
          default: true
    ...
    

    Si deseas cambiar la red a la que se conecta la VM o asignar una dirección IP manual, actualiza la configuración de red en tu editor, como se muestra en el siguiente ejemplo:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      interfaces:
        - name: eth0
          networkName: NETWORK_NAME
            ipAddresses:
              - IP_ADDRESS
          default: true
    ...
    

    Reemplaza NETWORK_NAME por el nombre de la red a la que deseas conectarte o agrega la sección ipAddresses y especifica la IP_ADDRESS que usará tu VM.

  4. Guarda y cierra el manifiesto de la VM.

  5. Inicia la VM que editaste:

    kubectl virt start VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que editaste.

  6. Verifica el STATUS de tu VM:

    kubectl get gvm VM_NAME
    

    Asegúrate de que tu VM esté en un estado Running. Si tu VM solicita una conexión de red que el host no puede proporcionar, tu VM no se puede iniciar. Si la VM no está en un estado Running, verifica el manifiesto de recursos VirtualMachine y la compatibilidad de red del host.

  7. Consulta información detallada sobre una VM mediante kubectl describe gvm:

    kubectl describe gvm VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que editaste.

    En el siguiente resultado de ejemplo, se muestra la información resumida de una VM, con un cambio en la configuración de la red y de dirección IP aplicado correctamente:

    Name:         vm1
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    API Version:  vm.cluster.gke.io/v1
    Kind:         VirtualMachine
    ...
    Spec:
      Compute:
      Interfaces:
        Name:          eth0
        Network Name:  backend-vlan200
    ...
    Status:
      ...
      Interfaces:
        Dns Config:
          Nameservers:
            8.8.8.8
        gateway4:  10.200.0.9
        Ip Addresses:
          10.200.0.22/24
        Mac Address:    22:b4:e3:d2:ef:fb
        Name:           eth0
        Resource Name:  vm1-eth0-f2468
    ...
    

Para obtener más información, consulta cómo crear y administrar redes virtuales.

Configura tu VM para reinicios automáticos

Muchos cambios de configuración de la VM, como los cambios en la configuración de compute, requieren que la VM se detenga y se reinicie para que los cambios se sincronicen con la instancia de VM correspondiente (VirtualMachineInstance). Las VM que se ejecutan en GKE en Bare Metal versión 1.13.0 o posterior se pueden configurar para que se reinicien automáticamente cada vez que realices cambios en su configuración. Cuando configuras una VM para que use esta función, no necesitas detenerla y reiniciarla cuando editas su recurso personalizado. El entorno de ejecución de VM en Google Distributed Cloud supervisa la VM y, si detecta un cambio de configuración, la reinicia de forma automática para sincronizar los cambios.

Si usas Config Management para administrar tus archivos de configuración YAML, esta función es muy útil. Sin esta función, debes detener la VM de forma manual antes de realizar cambios en el recurso personalizado VirtualMachine y, luego, iniciar la VM de forma manual después de completar los cambios.

Para habilitar los reinicios automáticos, sigue estos pasos:

  1. Usa kubectl para editar la VM:

    kubectl edit gvm VM_NAME
    
  2. En tu editor, agrega el campo autoRestartOnConfigurationChange y establécelo en true.

    Puedes realizar cambios adicionales en la VM, como actualizar el valor vcpus. Si editas la configuración de compute, el entorno de ejecución de VM en Google Distributed Cloud reinicia la VM de forma automática cuando guardas los cambios.

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      ...
      name: vm-sample-01
      namespace: default
      resourceVersion: "16711824"
      uid: ed623879-0cfa-52de-ad2c-b63308e6116c
    spec:
      autoRestartOnConfigurationChange: true
      compute:
        cpu:
          vcpus: 2
          ...
    
  3. Guarda y cierra el manifiesto de la VM.

    Si realizaste otros cambios en la VM que deben sincronizarse con la instancia de VM correspondiente, el entorno de ejecución de VM en Google Distributed Cloud reinicia la VM. Si solo realizaste el cambio para habilitar los reinicios automáticos, no es necesario reiniciar la VM.

  4. Verifica el status de tu VM:

    kubectl get gvm VM_NAME
    

    Según la rapidez con la que obtengas la VM, es posible que veas state: Starting cuando se reinicia la VM. Cuando la VM se haya reiniciado correctamente, verás state: Running. Los cambios de configuración posteriores en el recurso personalizado VirtualMachine no requieren que detengas y, luego, inicies la VM de forma manual. Los cambios posteriores en el recurso personalizado se reflejan en la instancia de VM de manera coherente.

Ten en cuenta el siguiente comportamiento de las características situacionales:

  • Si detienes una VM de forma manual antes de editar el recurso personalizado VirtualMachine, el cambio de configuración no activará un reinicio. El estado de detención de la VM antes de que persista el cambio de configuración.

  • Si realizaste cambios de etiqueta o programación en la VM antes de habilitar la función de reinicio automático, agregar autoRestartOnConfigurationChange ahora sin ningún otro cambio no activará un reinicio. Lo ideal sería que esta función mantenga la instancia de VM coherente con la configuración de VM. Sin embargo, el entorno de ejecución de VM en Google Distributed Cloud no puede detectar incoherencias anteriores.

¿Qué sigue?