Aplicar configuraciones de VM nuevas en un MIG


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

Especifica la configuración deseada para las VM en un MIG mediante los siguientes componentes de configuración de VM:

  • Obligatorio: Plantilla de instancias
  • Opcional: Configuración de todas las instancias
  • Opcional: Configuración con estado

Cada vez que actualices la configuración deseada mediante esos componentes, Compute Engine aplica de forma automática la configuración actualizada a las VM nuevas que se agregan al grupo.

Para aplicar una configuración actualizada a las VM existentes, usa los métodos que se describen en esta página:

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

También puedes configurar tu MIG para aplicar la configuración más reciente disponible a las VM durante las reparaciones de VM. Para obtener más información, consulta Aplica actualizaciones de configuración durante las reparaciones.

Si solo necesitas cambiar el tamaño de un MIG, consulta la documentación sobre cómo agregar o quitar VM en un MIG. Si deseas obtener información sobre la configuración de funciones de MIG, consulta los documentos sobre el ajuste de escala automático, la reparación automática y el balanceo de cargas. y cargas de trabajo con estado.

Antes de comenzar

  • Configura la autenticación si aún no lo hiciste. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

    Selecciona la pestaña para saber cómo planeas usar las muestras en esta página:

    Consola

    Cuando usas la consola de Google Cloud para acceder a los servicios y las APIs de Google Cloud, no necesitas configurar la autenticación.

    gcloud

    1. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init
    2. Configura una región y una zona predeterminadas.

    REST

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

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

Componentes de configuración para VM en un MIG

Configura las VM en un MIG a través de los siguientes componentes:

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

Opcional: Si deseas realizar pruebas canary en una segunda configuración de VM, puedes agregar una segunda plantilla de instancias al grupo y aplicarla a un subconjunto de las VM en el grupo.
Configuración de todas las instancias Etiquetas y metadatos Opcional: Usa una configuración de todas las instancias para anular con rapidez las propiedades de la plantilla de instancias para todas las VM del grupo.
Configuración con estado Discos, direcciones IP y metadatos con estado Si necesitas admitir una carga de trabajo con estado, agrega una configuración con estado a las VM del grupo (opcional).

Si actualizas cualquier configuración del grupo a través de esos componentes, debes aplicar la configuración actualizada a las VM existentes en el grupo para que la configuración actualizada sea efectiva.

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

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

  • Automático (proactivo): Usa este método si deseas que el MIG aplique de forma automática configuraciones nuevas a todas las VM del grupo o a un subconjunto de ellas. El nivel de interrupción en las VMs en ejecución depende de la política de actualización que configures. Puedes usar este método para actualizar versiones canary de plantillas de instancias nuevas. Para usar este método, configura el tipo de actualización del MIG como “proactivo”.
  • Selectivo (oportunista): Usa este método si deseas aplicar la actualización de forma manual o si deseas actualizar todas las VM existentes en el grupo a la vez. Apuntas a cualquiera o todas las VM que se actualizarán a la configuración más reciente. Para usar este método, configura el tipo de actualización del MIG como “oportunista”.
  • Recreación de VM: Aplica configuraciones nuevas mediante la recreación de VM específicas.

Para obtener más información sobre cómo configurar el tipo de actualización de un MIG, consulta Configura una actualización proactiva o una oportunista.

Automática (proactiva)

Un tipo de actualización automática también se conoce como un tipo de actualización proactiva. Cuando configuras el tipo de actualización del MIG como proactivo, este aplica de forma automática la configuración actualizada a las VM según sea necesario.

Configurar el tipo de actualización del MIG como ofrece dos ventajas principales:

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

Para aprender a configurar el tipo de actualización del MIG, consulta Configura una actualización proactiva o una oportunista.

Para obtener más información sobre los lanzamientos automáticos, consulta Aplica de forma automática las actualizaciones de configuración de VM en un MIG.

Selectivo (oportunista)

Un tipo de actualización selectiva también se conoce como un tipo de actualización oportunista. Cuando configuras el tipo de actualización del MIG como oportunista, el MIG aplica las configuraciones nuevas a las VM existentes solo cuando orientas de forma selectiva VM específicas para que se actualicen.

Configurar el tipo de actualización del MIG como oportunista ofrece las siguientes ventajas:

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

En ciertas situaciones, un tipo de actualización selectiva es útil porque no deseas causar inestabilidad en el sistema si se puede evitar. Por ejemplo, considera lo siguiente:

  • Una de las VMs de tu MIG falla y se debe reparar, pero no deseas que cambie su configuración. Si configuras el tipo de actualización del MIG como oportunista y no aplicas actualizaciones durante las reparaciones de forma forzosa, Compute Engine repara la VM con la misma configuración que se usó para crear esa VM, incluso si la plantilla de la instancia original ya no existe.

  • Tienes un MIG con ajuste de escala automático y deseas aplicar una actualización no crítica sin urgencia. Para asegurarte de que Compute Engine no elimine tus VMs existentes para aplicar la actualización, configura el tipo de actualización del MIG como oportunista. Cuando se reduce la escala, el escalador automático opta por terminar las VM con la configuración anterior. Cuando el grupo se escala horizontalmente, se crean VMs con la configuración más reciente.

Para aprender a configurar el tipo de actualización del MIG, consulta Configura una actualización proactiva o una oportunista.

Para obtener más información sobre la actualización selectiva de VM, consulta Aplica de forma selectiva las actualizaciones de configuración de VM en un MIG.

Recreación de VM

Puedes volver a crear cualquier VM en un MIG. Cuando lo haces, el MIG aplica cualquier configuración actualizada que aún no se aplicó a esa VM. Para obtener más información, consulta Vuelve a crear VM en un MIG.

Configura una actualización proactiva o una oportunista

Para aplicar la configuración nueva a las VM existentes de forma automática, configura el tipo de actualización del MIG como “proactivo”. Para aplicar la configuración nueva a las VM existentes solo cuando seleccionas una VM que se actualizará, establece el tipo de actualización del MIG como “oportunista”.

Usa la consola de Google Cloud, Google Cloud CLI o REST.

Consola

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

    Ir a la página Grupos de instancias

  2. Selecciona el MIG que deseas actualizar.

  3. En la parte superior de la página, haz clic en Actualizar VM.

  4. Para establecer una plantilla diferente para el grupo, en Plantilla nueva, selecciona la plantilla de instancias que deseas usar.

  5. En Actualizar configuración, elige la actualización automática o selectiva.

gcloud

Usa el comando rolling-action start-update y establece la marca --type como 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 update beta y, también, incluir la marca --update-policy-type.

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

Reemplaza lo siguiente:

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

REST

Llama al método patch en un recurso de MIG zonal 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",
    }]
}

Reemplaza lo siguiente:

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

Para obtener más información sobre cómo configurar una plantilla nueva y, luego, aplicarla a las VM nuevas y existentes en un MIG, consulta las siguientes páginas:

Verifica el tipo de política de actualización de tu grupo

Puedes ver el tipo de política de actualización actual de tu MIG (“oportunista” o “proactivo”) y otros parámetros de configuración de la política de actualización mediante la CLI de gcloud o REST.

gcloud

Usa el comando describe e incluye la marca --format para enumerar solo la configuración updatePolicy.

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

REST

Realiza una solicitud GET en un MIG zonal o regional y verifica 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 Configura una actualización proactiva o una oportunista.

Actualizaciones para las VM suspendidas y detenidas

Si suspendiste y detuviste los grupos de VM en un MIG, puedes actualizar o detener las VM de forma selectiva (oportunista) como las actualización de otras VM en ejecución. Si configuras actualizaciones automáticas (proactivas), el MIG actualiza las VM en el siguiente orden:

  1. VM en ejecución, suspendida y detenidas
  2. VM con el estado SUSPENDING o STOPPING

Para una actualización automática, el MIG calcula la aumento máxima y la cantidad máxima no disponible según la cantidad objetivo de las VM en ejecución y no lo hace. Considera las VM en el grupo en espera.

Si la actualización automática requiere que se reemplacen las VM del grupo, el MIG hará lo siguiente:

  1. Borra las VM suspendidas y detenidas.
  2. Crea VM nuevas con la plantilla de instancias nueva.
  3. Realiza el proceso de inicialización.
  4. Suspende o detiene las VM.

Si la actualización automática solo requiere la actualización o reinicio de las VM en el grupo, el MIG hace lo siguiente:

  1. Reanuda o inicia las VM.
  2. Realiza la actualización en las VM cuando se ejecutan.
  3. Realiza el proceso de inicialización.
  4. Suspende o detiene las VM.

Actualizaciones canary

Si deseas iniciar actualizaciones canary en un MIG que suspendió o detuvo las VM, se aplica lo siguiente:

  • En el modo de política en espera manual, el MIG solo actualiza las VM en ejecución según la cantidad o el porcentaje de VM a las que deseas aplicar la actualización. Las VM suspendidas y detenidas se mantienen en las versiones anteriores.
  • En el modo de política en 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, recomendamos usar los campos instanceGroupManagers.versions y regionInstanceGroupManagers.versions a fin de configurar plantillas de instancia para MIG zonales y regionales.

El campo instanceTemplate heredado se superpone en la funcionalidad con el campo versions porque ambos te permiten especificar qué plantilla de instancia usará el MIG para crear instancias. Sin embargo, solo el campo versions te permite especificar una configuración avanzada de dos plantillas (canary).

Para tener retrocompatibilidad, los MIG siguen siendo compatibles con la configuración del campo instanceTemplate de nivel superior, aunque recomendamos que uses solo el campo versions. Usar el campo instanceTemplate de nivel superior y el campo versions al mismo tiempo puede generar ambigüedad y confusión.

Si especificas el campo instanceTemplate y el campo versions cuando llamas a los métodos update() o patch(), existen tres resultados posibles:

  • Estableces ambos campos en el mismo valor.

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

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

    {
     "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    
  • Establece ambos campos en valores que no coinciden, pero solo un valor difiere de la plantilla de instancias actual en el MIG.

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

    {
     "instanceTemplate": "global/instanceTemplates/CURRENT_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    
  • Establece ambos campos en valores que no coincidan, y ambos valores difieran de la plantilla de instancias actual en el MIG.

    Esta configuración no es válida y muestra un error porque no hay un intent claro.

    {
     "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 instancias, ya sea a través del campo de nivel superior instanceTemplate o mediante el campo versions o mediante ambos, el método get() muestra ambos campos en su respuesta. Esto hace que el nuevo campo versions sea retrocompatible. Siempre que especifiques una plantilla de instancias única en cualquiera de estos campos, no hay cambios en lo que get() muestre en el campo instanceTemplate.

Si el campo versions tiene dos plantillas de instancias especificadas, el método get() muestra un campo instanceTemplate vacío de nivel superior. No hay forma de expresar inequívocamente una configuración de plantilla canary de dos instancias 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 la retrocompatibilidad, el método setInstanceTemplate() se comporta como lo hacía antes, lo que te permite cambiar la plantilla que el MIG usa para crear instancias. Cuando llamas a este método, el campo versions se anula con la plantilla de instancias especificada por el método setInstanceTemplate().

El método setInstanceTemplate() también establece updatePolicy en OPPORTUNISTIC. Esto evita que el MIG implemente de manera activa una plantilla de instancia que no se especifica de forma explícita en el campo versions.

¿Qué sigue?