Aplicar nuevas configuraciones de VM en un MIG


En esta página se explica cómo configurar las instancias de máquina virtual (VM) de un grupo de instancias gestionado (MIG) y los métodos que puedes usar para aplicar la configuración a las VMs del grupo.

Para especificar la configuración que quieres que tengan las VMs de un MIG, usa los siguientes componentes de configuración de VMs:

  • Obligatorio: plantilla de instancia
  • Opcional: configuración de todas las instancias
  • Opcional: Configuración con reconocimiento del estado

Cada vez que actualices la configuración prevista mediante esos componentes, Compute Engine aplicará automáticamente la configuración actualizada a las nuevas VMs que se añadan al grupo.

Para aplicar una configuración actualizada a las VMs, usa los métodos descritos en esta página:

  • Lanzamientos automáticos con un presupuesto de interrupción y actualizaciones canary opcionales de nuevas plantillas
  • Actualizaciones manuales y selectivas solo en VMs específicas para minimizar las interrupciones
  • Volver a crear VMs específicas

También puede configurar su MIG para que aplique la configuración más reciente disponible a las VMs durante las reparaciones de VMs. Para obtener más información, consulta Aplicar actualizaciones de configuración durante las reparaciones.

Si solo necesitas cambiar el tamaño de un MIG, consulta la documentación sobre cómo añadir o quitar VMs en un MIG. Si quieres obtener información sobre cómo configurar las funciones de los MIGs, consulta la documentación sobre autoescalado, reparación automática, balanceo de carga y cargas de trabajo con reconocimiento del estado.

Antes de empezar

  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Componentes de configuración de las VMs de un MIG

Para configurar las VMs de un MIG, se utilizan los siguientes componentes:

ComponentePropiedadesCaso práctico
Plantilla de instancia Tipo de máquina, imagen de disco de arranque, etiquetas, secuencia de comandos de inicio y otras propiedades de la VM Obligatorio: usa una plantilla de instancia para definir las propiedades de instancia obligatorias y opcionales de todas las VMs del grupo.

Opcional: Si quieres hacer pruebas canary con una segunda configuración de VM, puedes añadir una segunda plantilla de instancia al grupo y aplicarla a un subconjunto de las VMs del grupo.
Configuración de todas las instancias Etiquetas y metadatos Opcional: Usa una configuración de todas las instancias para anular rápidamente las propiedades de la plantilla de instancia de todas las VMs del grupo.
Configuración con reconocimiento del estado Discos con estado, direcciones IP y metadatos Opcional: Si necesitas admitir una carga de trabajo con estado, añade una configuración con estado a las VMs del grupo.

Si actualiza alguna configuración del grupo a través de esos componentes, debe aplicar la configuración actualizada a las VMs del grupo para que surta efecto.

Métodos para aplicar una nueva configuración a las VMs

Después de actualizar la configuración de las VMs de un MIG, puedes aplicar la nueva configuración a las VMs del grupo mediante los siguientes métodos:

  • Automático (proactivo): usa este método si quieres que el MIG aplique automáticamente las nuevas configuraciones a todas las VMs del grupo o a un subconjunto de ellas. El nivel de interrupción de las VMs en ejecución depende de la política de actualización que configures. Puedes usar este método para actualizar de forma gradual las nuevas plantillas de instancia. Para usar este método, define el tipo de actualización de MIG como "proactivo".
  • Selectiva (oportunista): usa este método si quieres aplicar la actualización manualmente o si quieres actualizar todas las VMs del grupo a la vez. Puede elegir una o varias máquinas virtuales para actualizarlas a la configuración más reciente. Para usar este método, define el tipo de actualización del MIG como "oportunista".
  • Volver a crear VMs: aplica nuevas configuraciones volviendo a crear VMs específicas.

Para obtener más información sobre cómo definir el tipo de actualización de un MIG, consulta Configurar una actualización proactiva u oportunista.

Automático (proactivo)

Un tipo de actualización automática también se conoce como actualización proactiva. Si configuras el tipo de actualización del MIG como proactivo, el MIG aplicará automáticamente las configuraciones actualizadas a las VMs según sea necesario.

Si se define el tipo de actualización de un MIG como proactivo, se obtienen dos ventajas principales:

  • La implementación de una actualización se realiza automáticamente según tus especificaciones, sin necesidad de que hagas nada más después de la solicitud inicial. Puedes especificar la velocidad del despliegue, el nivel de interrupción del servicio y el alcance de la actualización.
  • Puedes automatizar los lanzamientos parciales, lo que permite realizar pruebas canary.

Para saber cómo definir el tipo de actualización de MIG, consulta el artículo Configurar una actualización proactiva u oportunista.

Para obtener más información sobre los lanzamientos automáticos, consulta Aplicar automáticamente actualizaciones de configuración de VMs en un MIG.

Selectiva (oportunista)

Un tipo de actualización selectiva también se conoce como tipo de actualización oportunista. Si el tipo de actualización del MIG es oportunista, el MIG aplica las nuevas configuraciones a las VMs solo cuando seleccionas VMs específicas para que se actualicen.

Si se define el tipo de actualización de un MIG como oportunista, se obtienen las siguientes ventajas:

  • Puedes seleccionar las VMs que quieras actualizar.
  • Puedes controlar el momento y la secuencia de las actualizaciones.
  • Puedes usar la CLI de gcloud o REST para actualizar todas las instancias inmediatamente.

En determinadas situaciones, es útil usar un tipo de actualización selectiva porque no quieres que el sistema se vuelva inestable si se puede evitar. Por ejemplo, considera lo siguiente:

  • Una de las VMs de tu MIG falla y necesita repararse, pero no quieres que cambie su configuración. Si defines el tipo de actualización del MIG como oportunista y no aplicas las actualizaciones durante las reparaciones de forma forzada, Compute Engine reparará la VM con la misma configuración que se usó para crearla, aunque la plantilla de instancia original ya no exista.

  • Tienes un MIG con escalado automático y quieres aplicar una actualización no crítica sin ninguna urgencia. Para asegurarte de que Compute Engine no desactive tus VMs para aplicar la actualización, define el tipo de actualización del MIG como oportunista. Al reducir horizontalmente, el autoescalador termina preferentemente las VMs con la configuración antigua. Cuando el grupo se amplía, crea VMs con la configuración más reciente.

Para saber cómo definir el tipo de actualización de MIG, consulta el artículo Configurar una actualización proactiva u oportunista.

Para obtener más información sobre cómo actualizar selectivamente las VMs, consulta Aplicar selectivamente actualizaciones de configuración de VMs en un MIG.

Recreación de VMs

Puedes volver a crear cualquier VM en un MIG. Cuando lo hagas, el MIG aplicará cualquier configuración actualizada que aún no se haya aplicado a esa VM. Para obtener más información, consulta Volver a crear VMs en un MIG.

Configurar una actualización proactiva o oportunista

Para aplicar automáticamente las nuevas configuraciones a las VMs, define el tipo de actualización del MIG como "proactivo". Para aplicar nuevas configuraciones a las VMs solo cuando selecciones una VM que quieras actualizar, define el tipo de actualización del grupo de instancias gestionado como "oportunista".

Usa la Google Cloud consola, la interfaz de línea de comandos de Google Cloud o REST.

Consola

  1. En la consola, ve a la página Grupos de instancias. Google Cloud

    Ir a la página Grupos de instancias

  2. Selecciona el MIG que quieras actualizar.

  3. Haz clic en Editar.

  4. Haga clic en Política de actualización para desplegar la sección.

  5. Elige entre Selectiva o Automática.

  6. Opcional: Si eliges Automático, puedes definir las opciones adicionales o usar los valores predeterminados.

  7. Haz clic en Guardar.

gcloud

Usa el comando rolling-action start-update y asigna a la marca --type el valor opportunistic o proactive.

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=NEW_TEMPLATE \
    --type=TYPE

También puedes usar el comando beta update e incluir la marca --update-policy-type.

gcloud beta compute instance-groups managed update INSTANCE_GROUP_NAME \
    --update-policy-type=TYPE

Haz los cambios siguientes:

  • INSTANCE_GROUP_NAME: el nombre del grupo
  • NEW_TEMPLATE: el nombre de la nueva plantilla del grupo
  • TYPE: el tipo de actualización, opportunistic o proactive

REST

Llama al método patch en un recurso de MIG de zona o regional.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "updatePolicy": {
    "type": "TYPE" # Choose an opportunistic or proactive update
  },
  "versions": [{
    "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
    }]
}

Haz los cambios siguientes:

  • PROJECT_ID: el proyecto en el que se encuentra el MIG.
  • REGION: la región en la que se encuentra el MIG. En el caso de un MIG zonal, sustituye regions/REGION por zones/ZONE.
  • INSTANCE_GROUP_NAME: el nombre del grupo.
  • NEW_TEMPLATE: el nombre de la nueva plantilla del grupo.
  • TYPE: el tipo de actualización, OPPORTUNISTIC o PROACTIVE.

Para obtener más información sobre cómo definir una plantilla y, a continuación, aplicarla a máquinas virtuales nuevas y actuales de un MIG, consulta las siguientes páginas:

Comprobar el tipo de política de actualizaciones de un grupo

Puedes ver el tipo de política de actualización configurado actualmente en tu MIG ("oportunista" o "proactiva") y otros ajustes de la política de actualización mediante la CLI de gcloud o la API REST.

gcloud

Usa el comando describe e incluye la marca --format para mostrar solo los ajustes de updatePolicy.

gcloud beta compute instance-groups managed describe INSTANCE_GROUP_NAME \
    --format="(updatePolicy)"

REST

Haz una solicitud GET en un MIG de zona o de región y comprueba el campo updatePolicy.

GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

Para cambiar el tipo de política, consulta Configurar una actualización proactiva u oportunista.

Actualizaciones de máquinas virtuales suspendidas y detenidas

Si has suspendido y detenido grupos de VMs en un MIG, puedes actualizar de forma selectiva (oportunista) las VMs suspendidas o detenidas, al igual que actualizas otras VMs en ejecución. Si configuras las actualizaciones automáticas (proactivas), el MIG actualizará las VMs en el siguiente orden:

  1. Máquinas virtuales en ejecución, suspendidas y detenidas
  2. VMs con el estado SUSPENDING o STOPPING

En una actualización automática, el MIG calcula el aumento máximo y el número máximo de VMs no disponibles basándose únicamente en el número objetivo de VMs en ejecución, y no tiene en cuenta las VMs del grupo de espera.

Si la actualización automática requiere sustituir las VMs del grupo, el MIG hace lo siguiente:

  1. Elimina las VMs suspendidas y detenidas.
  2. Crea VMs con la nueva plantilla de instancia.
  3. Realiza el proceso de inicialización.
  4. Suspende o detiene las VMs.

Si la actualización automática solo requiere que se actualicen o reinicien las VMs del grupo, el MIG hará lo siguiente:

  1. Reanuda o inicia las VMs.
  2. Realiza la actualización en las VMs cuando están en ejecución.
  3. Realiza el proceso de inicialización.
  4. Suspende o detiene las VMs.

Actualizaciones de Canary

Si quieres iniciar actualizaciones canary en un MIG que tenga VMs suspendidas o detenidas, se aplican las siguientes condiciones:

  • En el modo de política de espera manual, la MIG solo actualiza las VMs en ejecución en función del número o porcentaje de VMs a las que quieras aplicar la actualización. Las VMs suspendidas y detenidas permanecen en las versiones anteriores.
  • En el modo de política de espera scale-out-pool, no puedes iniciar una actualización canary en el MIG.

Relación entre los campos versions y instanceTemplate

Si usas REST, te recomendamos que uses los campos instanceGroupManagers.versions y regionInstanceGroupManagers.versions para configurar plantillas de instancia para grupos de instancias gestionados zonales y regionales.

El campo instanceTemplate antiguo se solapa en cuanto a funcionalidad con el campo versions, ya que ambos campos te permiten especificar qué plantilla de instancia usa el MIG para crear VMs. Sin embargo, solo el campo versions te permite especificar una configuración avanzada de dos plantillas (canario).

Por motivos de retrocompatibilidad, los MIGs siguen admitiendo el campo instanceTemplate de nivel superior, aunque te recomendamos que utilices solo el campo versions. Usar al mismo tiempo el campo de nivel superior instanceTemplate y el campo versions puede generar ambigüedad y confusión.

Si especifica tanto el campo instanceTemplate como el campo versions al llamar al método update() o patch(), hay tres resultados posibles:

  • Ha asignado el mismo valor a ambos campos.

    Esta es una solicitud válida. En este caso, no se crea ninguna ambigüedad y la nueva plantilla de instancia se aplica al MIG.

    Por ejemplo, en la siguiente solicitud, los campos de nivel superior instanceTemplate y versions especifican la misma plantilla de instancia, que es diferente de la plantilla actual, por lo que el MIG se actualiza a la nueva plantilla de instancia:

    {
     "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    
  • Ha asignado a ambos campos valores que no coinciden, pero solo uno de ellos es diferente de la plantilla de instancia actual de la MIG.

    Esta es una solicitud válida. El campo que es diferente de la configuración actual se toma como el valor previsto. Por ejemplo, llamas al método update() y proporcionas ambos campos, pero solo se actualiza uno:

    {
     "instanceTemplate": "global/instanceTemplates/CURRENT_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    
  • Si asignas a ambos campos valores que no coinciden y ambos valores son diferentes de la plantilla de instancia actual de la MIG.

    Este ajuste no es válido y devuelve un error porque no hay una intención clara.

    {
     "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/A_DIFFERENT_NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    

El campo versions, el campo instanceTemplate y el método get()

Si solo especificas una plantilla de instancia, ya sea a través del campo instanceTemplate de nivel superior, del campo versions o de ambos, el método get() devuelve ambos campos en su respuesta. De esta forma, el nuevo campo versions será retrocompatible. Si especificas una sola plantilla de instancia en cualquiera de estos campos, no habrá ningún cambio en lo que devuelva el método get() en el campo instanceTemplate.

Si el campo versions tiene dos plantillas de instancia especificadas, el método get() devuelve un campo instanceTemplate de nivel superior vacío. No hay forma de expresar de forma inequívoca una configuración de plantilla de dos instancias de lanzamiento de versión canary en el campo instanceTemplate de nivel superior, por lo que el campo no se usa durante una actualización canary.

El campo versions y el método setInstanceTemplate()

Para mantener la retrocompatibilidad, el método setInstanceTemplate() se comporta como lo hacía antes, lo que te permite cambiar la plantilla que usa el MIG para crear VMs. Cuando llamas a este método, el campo versions se sustituye por la plantilla de instancia especificada por el método setInstanceTemplate().

El método setInstanceTemplate() también define el valor de updatePolicy en OPPORTUNISTIC. De esta forma, la MIG no desplegará activamente una plantilla de instancia que no se haya especificado explícitamente en el campo versions.

Siguientes pasos