Aplicar nuevas configuraciones de VM en un MIG


Esta página explica cómo puede configurar las instancias de máquinas virtuales (VM) en un grupo de instancias administrado (MIG) y los métodos que puede utilizar para aplicar la configuración a las VM existentes en el grupo.

La configuración prevista para las máquinas virtuales en un MIG se especifica mediante los siguientes componentes de configuración de máquinas virtuales:

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

Cada vez que actualizas la configuración deseada mediante el uso de esos componentes, Compute Engine aplica automáticamente tu configuración actualizada a las nuevas VM que se agregan al grupo.

Para aplicar una configuración actualizada a las máquinas virtuales existentes, utilice los métodos descritos en esta página:

  • Implementaciones automáticas con un presupuesto de interrupción y actualizaciones canarias opcionales de nuevas plantillas.
  • Actualizaciones manuales selectivas solo para máquinas virtuales específicas, para minimizar las interrupciones
  • Recreación de máquinas virtuales específicas

También puede configurar su MIG para aplicar la última configuración disponible a las máquinas virtuales durante las reparaciones de las máquinas virtuales. Para obtener más información, consulte Aplicar actualizaciones de configuración durante las reparaciones .

Si solo necesita cambiar el tamaño de un MIG, consulte la documentación sobre cómo agregar o eliminar máquinas virtuales en un MIG . Si desea obtener información sobre la configuración de funciones MIG, consulte los documentos sobre escalado automático , reparación automática , equilibrio de carga y cargas de trabajo con estado .

Antes de comenzar

  • Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras 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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. 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.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .

Componentes de configuración para VM en un MIG

Las máquinas virtuales en un MIG se configuran a través de los siguientes componentes:

Componente Propiedades Caso de uso
Plantilla de instancia Tipo de máquina, imagen del disco de arranque, etiquetas, secuencia de comandos de inicio y otras propiedades de la VM Requerido : use una plantilla de instancia para definir propiedades de instancia requeridas y opcionales para todas las máquinas virtuales del grupo.

Opcional: si desea probar canary una segunda configuración de VM, puede agregar una segunda plantilla de instancia al grupo y aplicarla a un subconjunto de las VM del grupo.
Configuración de todas las instancias Etiquetas y metadatos Opcional: utilice una configuración de todas las instancias para anular rápidamente las propiedades de la plantilla de instancias para todas las máquinas virtuales del grupo.
Configuración con estado Discos con estado, direcciones IP y metadatos Opcional: si necesita admitir una carga de trabajo con estado , agregue una configuración con estado a las máquinas virtuales del grupo.

Si actualiza cualquier configuración para el grupo a través de esos componentes, debe aplicar la configuración actualizada a las máquinas virtuales existentes en el grupo para que la configuración actualizada sea efectiva.

Métodos para aplicar una nueva configuración a máquinas virtuales existentes

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

  • Automático (proactivo) : utilice este método si desea que MIG aplique automáticamente nuevas configuraciones a todas o a un subconjunto de máquinas virtuales existentes en el grupo. El nivel de interrupción de las máquinas virtuales en ejecución depende de la política de actualización que configure. Puede utilizar este método para actualizar canary nuevas plantillas de instancias. Para utilizar este método, configure el tipo de actualización del MIG en "proactivo".
  • Selectivo (oportunista) : utilice este método si desea aplicar la actualización manualmente o si desea actualizar todas las máquinas virtuales existentes en el grupo a la vez. Usted apunta a cualquiera o todas las máquinas virtuales para que se actualicen a la configuración más reciente. Para utilizar este método, configure el tipo de actualización del MIG en "oportunista".
  • Recreación de máquinas virtuales : aplique nuevas configuraciones recreando máquinas virtuales específicas.

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

Automático (proactivo)

Un tipo de actualización automática también se conoce como tipo de actualización proactiva . Cuando configura el tipo de actualización del MIG en proactiva, el MIG aplica automáticamente configuraciones actualizadas a las máquinas virtuales según sea necesario.

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

  • El lanzamiento de una actualización se realiza automáticamente según sus especificaciones, sin necesidad de realizar aportaciones adicionales después de la solicitud inicial. Puede especificar la velocidad de implementación, el nivel de interrupción de su servicio y el alcance de la actualización.
  • Puede automatizar implementaciones parciales, lo que permite realizar pruebas canary.

Para saber cómo configurar el tipo de actualización del MIG, consulte Configurar una actualización proactiva u oportunista .

Para obtener más información sobre implementaciones automáticas, consulte Aplicar automáticamente actualizaciones de configuración de VM en un MIG .

Selectivo (oportunista)

Un tipo de actualización selectiva también se conoce como tipo de actualización oportunista . Cuando configura el tipo de actualización del MIG en oportunista, el MIG aplica nuevas configuraciones a las máquinas virtuales existentes solo cuando apunta selectivamente a máquinas virtuales específicas para actualizarlas.

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

  • Puede seleccionar las máquinas virtuales que desea actualizar.
  • Puede controlar el tiempo y la secuencia de las actualizaciones.
  • Puedes usar la CLI de gcloud o REST para actualizar todas las instancias de inmediato.

En ciertos escenarios, un tipo de actualización selectiva es útil porque no desea causar inestabilidad al sistema si se puede evitar. Por ejemplo, considere lo siguiente:

  • Una de las máquinas virtuales de su MIG se cae y necesita ser reparada, pero no desea que cambie su configuración. Si configura el tipo de actualización del MIG en oportunista y no aplica actualizaciones de manera forzada durante las reparaciones , Compute Engine repara la VM usando la misma configuración que se usó para crear esa VM, incluso si la plantilla de instancia original ya no existe.

  • Tiene un MIG con escalado automático y desea aplicar una actualización no crítica sin ninguna urgencia. Para garantizar que Compute Engine no destruya sus máquinas virtuales existentes para aplicar la actualización, configure el tipo de actualización del MIG en oportunista. Al realizar el escalado vertical, el escalador automático finaliza preferentemente las máquinas virtuales con la configuración anterior. Cuando el grupo se amplía horizontalmente, crea máquinas virtuales con la configuración más reciente.

Para saber cómo configurar el tipo de actualización del MIG, consulte Configurar una actualización proactiva u oportunista .

Para obtener más información sobre la actualización selectiva de VM, consulte Aplicar selectivamente actualizaciones de configuración de VM en un MIG .

Recreación de máquinas virtuales

Puede recrear cualquier VM en un MIG. Cuando lo hace, el MIG aplica cualquier configuración actualizada que aún no se haya aplicado a esa VM. Para obtener más información, consulte Recreación de máquinas virtuales en un MIG .

Configure una actualización proactiva u oportunista

Para aplicar nuevas configuraciones a las máquinas virtuales existentes automáticamente, configure el tipo de actualización del MIG en "proactivo". Para aplicar nuevas configuraciones a las máquinas virtuales existentes solo cuando selecciona una máquina virtual para actualizar, establezca el tipo de actualización del MIG en "oportunista".

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

Consola

  1. En la consola de Google Cloud, vaya a la página de grupos de instancias .

    Ir a la página de grupos de instancias

  2. Seleccione el MIG que desea actualizar.

  3. En la parte superior de la página, haga clic en Actualizar máquinas virtuales .

  4. Para configurar una plantilla diferente para el grupo, en Nueva plantilla , seleccione la plantilla de instancia que desea usar.

  5. En Configuración de actualización , elija actualización automática o selectiva.

nube de gcloud

Utilice el comando rolling-action start-update y establezca el indicador --type en opportunistic o proactive .

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

También puede utilizar el comando update beta e incluir el indicador --update-policy-type .

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

Reemplace lo siguiente:

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

DESCANSAR

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

Reemplace lo siguiente:

  • PROJECT_ID : el proyecto en el que existe el MIG.
  • REGION : la región donde se encuentra su MIG. Para un MIG zonal, reemplace regions/ REGION con zones/ ZONE .
  • INSTANCE_GROUP_NAME : el nombre del grupo.
  • NEW_TEMPLATE : el nombre de la nueva plantilla para el grupo.
  • TYPE : el tipo de actualización, OPPORTUNISTIC o PROACTIVE .

Para obtener más información sobre cómo configurar una nueva plantilla y luego aplicar esa plantilla a máquinas virtuales nuevas y existentes en un MIG, consulte las siguientes páginas:

Verifique el tipo de política de actualización de su grupo

Puedes ver el tipo de política de actualización configurada actualmente de tu MIG ("oportunista" o "proactiva") y otras configuraciones de política de actualización mediante la CLI de gcloud o REST.

nube de gcloud

Utilice el comando describe e incluya el indicador --format para enumerar solo la configuración updatePolicy .

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

DESCANSAR

Realice una solicitud GET en un MIG zonal o regional y verifique 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, consulte Configurar una actualización proactiva u oportunista .

Actualizaciones para máquinas virtuales suspendidas y detenidas

Si ha suspendido y detenido grupos de máquinas virtuales en un MIG, puede actualizar selectivamente (oportunista) las máquinas virtuales suspendidas o detenidas del mismo modo que actualiza otras máquinas virtuales en ejecución. Si configura actualizaciones automáticas (proactivas), el MIG actualiza las máquinas virtuales en el siguiente orden:

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

Para una actualización automática, MIG calcula el aumento máximo y el máximo no disponible basándose únicamente en el número objetivo de máquinas virtuales en ejecución y no considera las máquinas virtuales en el grupo de reserva.

Si la actualización automática requiere el reemplazo de las máquinas virtuales del grupo, el MIG hace lo siguiente:

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

Si la actualización automática solo requiere actualizar o reiniciar las máquinas virtuales del grupo, entonces el MIG hace lo siguiente:

  1. Reanuda o inicia las máquinas virtuales.
  2. Realiza la actualización en las VM cuando se están ejecutando.
  3. Realiza el proceso de inicialización.
  4. Suspende o detiene las máquinas virtuales.

actualizaciones canarias

Si desea iniciar actualizaciones canary en un MIG que ha suspendido o detenido máquinas virtuales, se aplica lo siguiente:

  • En el modo de política de espera manual , MIG actualiza solo las máquinas virtuales en ejecución según la cantidad o el porcentaje de máquinas virtuales a las que desea aplicar la actualización. Las VM suspendidas y detenidas permanecen en las versiones anteriores.
  • En el modo de política en espera scale-out-pool , no puede iniciar una actualización canary en el MIG.

Relación entre versions y campos de instanceTemplate

Si usa REST, le recomendamos utilizar los campos instanceGroupManagers.versions y regionInstanceGroupManagers.versions para configurar plantillas de instancia para MIG zonales y regionales.

El campo de instanceTemplate heredado se superpone en funcionalidad con el campo versions porque ambos campos le permiten especificar qué plantilla de instancia utiliza el MIG para crear máquinas virtuales. Sin embargo, solo el campo versions le permite especificar una configuración avanzada de dos plantillas (canario).

Para lograr compatibilidad con versiones anteriores, los MIG continúan admitiendo la configuración del instanceTemplate de nivel superior, aunque le recomendamos que cambie a usar solo el campo versions . El uso del campo instanceTemplate de nivel superior y del campo versions al mismo tiempo 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:

  • Estableces ambos campos con el mismo valor.

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

    Por ejemplo, en la siguiente solicitud, la instanceTemplate de nivel superior y el campo versions especifican la misma plantilla de instancia que es diferente de la plantilla actual existente, 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"
     }
    }
    
  • Establece ambos campos con valores que no coinciden, pero solo un valor difiere de la plantilla de instancia 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 previsto. Por ejemplo, llama al método update() y proporciona 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 con valores que no coinciden y ambos valores difieren de la plantilla de instancia actual en el MIG.

    Esta configuración no es válida 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 de instanceTemplate y el método get()

Si solo especifica una plantilla de instancia, ya sea a través del campo instanceTemplate de nivel superior o a través del campo versions o a través de ambos, el método get() devuelve ambos campos en su respuesta. Esto hace que las nuevas versions sean compatibles con versiones anteriores. Siempre que especifique una plantilla de instancia única en cualquiera de estos campos, no habrá cambios en lo que devuelve 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 de instanceTemplate de nivel superior vacío. No hay forma de expresar sin ambigüedades una configuración de plantilla canaria de dos instancias en el campo instanceTemplate de nivel superior, por lo que el campo no se utiliza durante una actualización canaria.

El campo versions y el método setInstanceTemplate()

Para compatibilidad con versiones anteriores, el método setInstanceTemplate() se comporta como antes, permitiéndole cambiar la plantilla que utiliza el MIG para crear máquinas virtuales. Cuando llama a este método, el campo versions se reemplaza con la plantilla de instancia especificada por el método setInstanceTemplate() .

El método setInstanceTemplate() también establece updatePolicy en OPPORTUNISTIC . Esto evita que MIG implemente activamente una plantilla de instancia que no esté especificada explícitamente en el campo versions .

¿Qué sigue?