Crea grupos de instancias administrados

Un grupo de instancias administrado (MIG) contiene instancias idénticas que se basan en una plantilla de instancias. Los MIG mantienen la alta disponibilidad de las aplicaciones, ya que sus instancias están disponibles de forma proactiva, es decir, en el estado RUNNING.

Los grupos de instancias administrados admiten la reparación automática, el balanceo de cargas, el ajuste de escala automático y la actualización automática.

Puedes crear MIG zonales (de zona única) y MIG regionales (de varias zonas). Los MIG regionales ofrecen una mayor disponibilidad, ya que las instancias están distribuidas entre varias zonas dentro de la misma región.

Para obtener más información sobre los grupos de instancias, lee la Descripción general de grupos de instancias.

Antes de comenzar

Limitaciones

  • Cada grupo de instancias administrado puede contener hasta 1,000 instancias de máquina virtual (VM).
  • Cuando se actualiza un grupo de instancias administrado, no se pueden especificar más de 1,000 instancias en una única solicitud.

Usa grupos de instancias administrados para apps sin estado

Los grupos de instancias administrados admiten apps sin estado que no dependen del estado específico de las instancias de VM subyacentes para ejecutarse. Esto habilita funciones como el ajuste de escala automático y la reparación automática, en las que el grupo de instancias administrado puede borrar y volver a crear instancias de forma automática. Además, si se borra una instancia de un grupo de instancias administrado debido a la acción de un usuario como parte de la reparación automática o debido a que se realizó el mantenimiento de infraestructura cuando la instancia no estaba configurada para la migración en vivo, este grupo volverá a crear la instancia de forma automática con un nuevo disco persistente raíz.

Debido al carácter sin estado de los grupos de instancias administrados, debes diseñar o actualizar la app para que no dependa de propiedades de instancia específicas que no sean persistentes, como una dirección IP o los datos en la memoria. Del mismo modo, el comportamiento predeterminado para los discos persistentes de arranque consiste en borrarlos cuando se borra la instancia de VM correspondiente, por lo que no debes depender de los discos de arranque como datos persistentes en un grupo de instancias administrado.

Para conservar tus datos, Google recomienda que actualices con regularidad las imágenes de SO, uses secuencias de comandos de inicio y crees copias de seguridad de los datos en otra ubicación centralizada, como Cloud Storage.

En las plantillas de instancias, puedes especificar una imagen de contenedor o una imagen personalizada, y secuencias de comandos de inicio relevantes, de forma que, cuando se vuelva a crear una instancia, esta tenga instaladas las apps necesarias y cuente con acceso a los datos obligatorios. Para obtener más recomendaciones sobre la creación de plantillas de instancias, consulta Plantillas de instancia deterministas.

Para guardar los discos asociados con los grupos de instancias administrados, inhabilita la opción disks.autoDelete a fin de evitar que se borren los discos persistentes. Si se borra la instancia que usa el disco (por ejemplo, si el escalador automático reduce el grupo o si borras la instancia de forma manual), debes limpiar los discos restantes de forma manual, si así lo deseas.

Crea un grupo de instancias administrado

Antes de crear un grupo de instancias administrado, debes crear una plantilla de instancias a fin de especificar la imagen de sistema operativo o de contenedor, y la configuración para cada instancia en el grupo.

Después de crear la plantilla, crea el grupo de instancias administrado mediante Google Cloud Console, la herramienta de gcloud compute o la API.

Console

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

    Ir a la página Grupos de instancias

  2. Haz clic en Crear un grupo de instancias.
  3. Ingresa un nombre para el grupo de instancias administrado y selecciona la zona en la que quieres ubicar el grupo.
  4. En Tipo de grupo, selecciona Grupo de instancias administrado
  5. En Plantilla de instancias, selecciona una plantilla de instancias. Si no hay plantillas disponibles, crea una plantilla de instancias.
  6. Especifica la cantidad de instancias que deseas crear en el grupo. De forma opcional, habilita el Ajuste de escala automático a fin de que el grupo agregue o quite instancias de forma automática en función de su uso o habilita la Reparación automática para realizar verificaciones de estado basadas en aplicaciones en las instancias dentro del grupo.
  7. Haz clic en Crear para crear el grupo nuevo.

gcloud

Crea un grupo de instancias con el subcomando instance-groups managed create:

gcloud compute instance-groups managed create instance-group-name \
        --base-instance-name base-name \
        --size size \
        --template instance-template \
        --zone zone

Reemplaza la siguiente información:

  • instance-group-name: Es el nombre de este grupo de instancias.
  • base-name: Es el nombre que se usará para las instancias creadas en este grupo. Dado que estas instancias son idénticas, se les asignará una string aleatoria como parte del nombre. El nombre base se antepone a esta string aleatoria. Por ejemplo, si el nombre base fuera example, las instancias tendrían nombres como example-yahs y example-qtyz. Si necesitas nombres específicos, consulta Crea instancias con nombres específicos en MIG.
  • size: Es el tamaño del grupo de instancias.
  • instance-template: Es el nombre de la plantilla de instancias que se usará en este grupo.
  • zone: Es una de las zonas disponibles para Compute Engine.

    Por ejemplo, el siguiente comando crea un grupo de instancias llamado example-group, cuyo nombre de instancia base es test. El grupo contiene las siguientes tres instancias:

    gcloud compute instance-groups managed create example-group \
          --base-instance-name test \
          --size 3 \
          --template an-instance-template

API

En la API, crea una solicitud POST para los métodos instanceGroupManagers.insert o regionInstanceGroupManagers.insert. En el cuerpo de la solicitud, incluye el nombre y el tamaño del grupo, el nombre base de las instancias del grupo y la URL de la plantilla de instancias.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers

    {
      "baseInstanceName": "base-name",
      "versions": [
        {
          "instanceTemplate": "global/instanceTemplates/instance-template"
        }
      ],
      "name": "instance-group-name",
      "targetSize": size
    }
    

Reemplaza la siguiente información:

  • project-id es el ID del proyecto de la solicitud.
  • zone: Es la zona de la solicitud.
  • instance-group-name: Es el nombre de este grupo de instancias.
  • base-name: Es el nombre que se usará para las instancias creadas en este grupo. Dado que estas instancias son idénticas, se les asignará una string aleatoria como parte del nombre. El nombre base se antepone a esta string aleatoria. Por ejemplo, si el nombre base fuera example, las instancias tendrían nombres como example-yahs y example-qtyz.
  • size: Es el tamaño del grupo de instancias.
  • instance-template: Es la plantilla de instancias que se usará en este grupo.

Según cómo configures y actúes en un MIG, varias políticas y acciones pueden afectar las instancias en el grupo. Para determinar qué instancias administradas están en funcionamiento, consulta Verifica el estado de instancias administradas.

Cambia la plantilla de instancias de un grupo de instancias administrado

Puedes cambiar la plantilla de instancias de un grupo de instancias administrado sin aplicar cambios en las instancias existentes. El grupo de instancias administrado usa la plantilla nueva cuando realizas una solicitud para agregar o volver a crear instancias, pero la plantilla no actualiza las instancias existentes de forma automática. Esto te permite controlar con exactitud qué instancias se actualizan, pero hace que el grupo tenga instancias diferentes.

Luego de crear una plantilla de instancias nueva, cambia la plantilla para un grupo de instancias existente.

Console

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

    Ir a la página Grupos de instancias

  2. En la columna Nombre de la lista, haz clic en el nombre del grupo de instancias en el que quieres cambiar la plantilla de instancias.
  3. Haz clic en Editar grupo para modificar este grupo de instancias administrado.
  4. En Plantilla de instancias, selecciona la plantilla nueva que quieres usar en este grupo.
  5. Haz clic en Guardar para aplicar la plantilla nueva.

gcloud

Para usar el método set-instance-template a fin de actualizar una plantilla, pasa la plantilla nueva al subcomando instance-groups managed set-instance-template:

gcloud compute instance-groups managed set-instance-template instance-group-name \
        --template instance-template \
        --zone zone

API

Crea una solicitud para el servicio instanceGroupManagers con el nombre del grupo de instancias administrado de destino. Incluye la URL de la plantilla de instancias nueva en el cuerpo de la solicitud:

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/setInstanceTemplate

    {
     "instanceTemplate": "global/instanceTemplates/instance-template
    }

Luego de cambiar la plantilla de instancias, vuelve a crear las instancias individuales o actualiza todas las instancias en el grupo con una actualización progresiva.

Cambia el tamaño de un grupo de instancias administrado

Para agregar instancias a un MIG o borrarlas de este, tienes las siguientes opciones:

Cambia el tamaño de un grupo de instancias administrado de forma automática

Puedes configurar grupos de instancias administrados para agregar o quitar de forma automática instancias en función de las cargas de trabajo. Las aplicaciones pueden manejar con facilidad los aumentos de tráfico, y puedes reducir los costos cuando se necesiten menos recursos de procesamiento. Para comenzar a escalar los grupos de instancias administrados, consulta el Ajuste de escala automático de grupos de instancias.

Establece el tamaño de un grupo de instancias administrado de forma manual

Si un grupo de instancias administrado aún no se configuró para que escale de forma automática, puedes cambiar el tamaño del grupo de forma manual a fin de cambiar la cantidad de instancias. Si aumentas el tamaño, el grupo de instancias administrado usará la plantilla de instancias actual para agregar instancias nuevas. Si disminuyes el tamaño, el grupo borrará las instancias. El grupo borra las instancias con un currentAction de DELETING, CREATING y RECREATING antes de borrar las instancias en ejecución sin acciones programadas.

Si el grupo forma parte de un servicio de backend que tenga habilitado el vaciado de conexiones, pueden transcurrir hasta 60 segundos después del vaciado de conexiones hasta que se quite o borre la instancia de VM.

Puedes cambiar el tamaño de un grupo de instancias administrado mediante Google Cloud Console, la herramienta de gcloud compute o la API.

Console

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

    Ir a la página Grupos de instancias

  2. En la columna Nombre de la lista, haz clic en el nombre del grupo de instancias del cual quieres cambiar el tamaño.
  3. Haz clic en Editar grupo para modificar este grupo de instancias administrado.
  4. En Cantidad de instancias, especifica la cantidad que quieres incluir en el grupo de instancias administrado. Si el Ajuste de escala automático está habilitado, el grupo agrega o quita instancias de forma automática, según sea necesario. Sin embargo, puedes cambiar los valores de Cantidad mínima de instancias y Cantidad máxima de instancias para ajustar de forma indirecta el tamaño del grupo mediante el escalador automático.
  5. Haz clic en Guardar para aplicar la plantilla nueva.

gcloud

Usa el subcomando resize.

gcloud compute instance-groups managed resize instance-group-name \
        --size new-size \
        --zone zone

API

Realiza una solicitud al método resize. Especifica el tamaño de la instancia nueva como parámetro.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/resize?size=new-size

Si el grupo de instancias es un grupo de instancias administrado regional, reemplaza zones/zone por regions/region.

Después de realizar una solicitud para cambiar el tamaño de un grupo de instancias administrado, las instancias se inician o se detienen en cuanto el sistema puede aprovisionarlas o borrarlas. Este proceso puede tardar un tiempo significativo en función de la cantidad de instancias en el grupo. Verifica el estado de las instancias en el grupo de instancias administrado.

Inhabilita el modo de reintentos de creación durante el cambio de tamaño

De forma predeterminada, si falla la creación inicial de una instancia de máquina virtual, el grupo de instancias administrado intenta crear cada instancia de forma continua, hasta que esta se cree con éxito. Sin embargo, si no deseas que se realicen reintentos de creación automáticos, puedes inhabilitar el modo de reintento de creación mediante el uso de la marca --no-creation-retries durante el cambio de tamaño del grupo de instancias. En este modo, el grupo de instancias administrado intenta crear todas las instancias solo una vez. Si ocurre un error durante la creación, el grupo de instancias administrado no creará la instancia y, en cambio, disminuirá el tamaño de destino del grupo.

Este modo solo se aplica durante el primer intento de creación de una instancia. Si una instancia se crea con éxito mientras este modo se encuentra habilitado, la instancia se comportará de la misma manera que todas las demás instancias creadas con una solicitud regular de cambio de tamaño. En particular, si una instancia en ejecución se cierra más adelante de forma inesperada y es necesario volver a crearla, este modo no afectará el comportamiento de recreación en esa situación.

La función Inhabilita el modo de reintento de creación es útil en situaciones en las que los sistemas crean de forma automática grupos de instancias en los que no se requiere una cantidad exacta de instancias. Es posible que prefieras estabilizar con rapidez el tamaño del grupo de instancias administrado y ser flexible en la cantidad de instancias que este contiene, en lugar de esperar indefinidamente hasta que se creen todas las instancias solicitadas, lo que puede retrasarse de forma temporal o permanente por errores de cuota o problemas de otra índole.

Para cambiar el tamaño de un grupo de instancias administrado con el modo de reintentos de creación inhabilitado, usa la herramienta de gcloud compute o la API.

gcloud

Usa el subcomando resize con la marca --no-creation-retries.

gcloud beta compute instance-groups managed resize instance-group-name --size new-size \
        --no-creation-retries \
        --zone zone

API

Realiza una solicitud al método resizeAdvanced. Especifica el nuevo tamaño de instancia y el campo noCreationRetries en el cuerpo de la solicitud.

POST https://compute.googleapis.com/compute/beta/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/resizeAdvanced

    {
     "targetSize": size
     "noCreationRetries": true
    }

Si el grupo de instancias es un grupo de instancias administrado regional, reemplaza zones/zone por regions/region.

Puedes ver qué instancias se están creando y en qué modo con el método listManagedInstances. Las instancias que se crean con el modo de reintentos de creación inhabilitado tendrán una currentAction de CREATING_WITHOUT_RETRIES.

Crea instancias con nombres específicos en MIG

Si tu sistema depende de nombres específicos, puedes crear instancias con esos nombres. Los nombres que asignes a estas instancias administradas persisten si se las vuelve a crear. Consulta Agrega instancias con nombres específicos.

Borra instancias específicas de un grupo

Puedes borrar instancias individuales en un grupo de instancias administrado. Borrar instancias reduce el targetSize especificado del grupo de instancias y quita instancias en los grupos de destino de los que forman parte.

El borrado de instancias de un grupo de instancias administrado no cambia ninguna configuración del escalador automático especificada. Si borras instancias de un grupo de instancias administrado, es posible que el escalador automático detecte un aumento en la carga de trabajo en las demás instancias y aumente el tamaño del grupo a su nivel anterior. Para evitarlo, desactiva o borra el escalador automático antes de intentar borrar las instancias.

Si el grupo forma parte de un servicio de backend que tenga habilitado el vaciado de conexiones, pueden transcurrir hasta 60 segundos después del vaciado de conexiones hasta que se quite o borre la instancia de VM.

Borra instancias de un grupo de instancias administrado mediante Google Cloud Console, la herramienta de gcloud compute o la API.

Console

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

    Ir a la página Grupos de instancias

  2. En la columna Nombre de la lista, haz clic en el nombre del grupo de instancias en el que quieres borrar las instancias individuales. Se abrirá una página con las propiedades del grupo de instancias y una lista de las instancias incluidas en el grupo.
  3. En la lista, selecciona una o más instancias que quieres borrar.
  4. Haz clic en Borrar. Se borran las instancias seleccionadas.

gcloud

Usa el subcomando instance-groups managed delete-instances:

gcloud compute instance-groups managed delete-instances instance-group-name \
        --instances example-i3n2,example-z2x9 \
        --zone zone

API

Realiza una solicitud al método instanceGroupManagers.deleteInstances. En el cuerpo de la solicitud, incluye las URL de una o más instancias que desees borrar.

POST https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/deleteInstances

    {
     "instances": [
      "zones/zone/instances/example-instance-i3n2",
      "zones/zone/instances/example-instance-l6n1"
     ]
    }

Si el grupo de instancias es un grupo de instancias administrado regional, reemplaza zones/zone por regions/region.

Después de realizar una solicitud para borrar instancias en un grupo de instancias administrado, las instancias se detienen en cuanto el sistema puede borrarlas. Este proceso puede tardar bastante tiempo en función de la cantidad de instancias que borres del grupo. Verifica el estado de las instancias en el grupo de instancias administrado.

Descarta instancias de un grupo

Puedes separar una instancia de un grupo de instancias administrado para depurar de forma más sencilla los problemas con instancias individuales sin afectar al grupo completo. Descartar una instancia de un grupo también la quita de los balanceadores de cargas que se asignaron al grupo de instancias administrado. No se quitan los grupos de destino asignados de forma manual a instancias individuales específicas.

Descartar instancias reduce el targetSize especificado del grupo de instancias, pero no cambia ningún parámetro de configuración del escalador automático especificado. Los grupos de instancias administrados con un escalador automático continúan agregando o quitando instancias de forma automática según sea necesario.

Si el grupo forma parte de un servicio de backend que tenga habilitado el vaciado de conexiones, pueden transcurrir hasta 60 segundos después del vaciado de conexiones hasta que se quite o borre la instancia de VM.

Descarta instancias de un grupo de instancias administrado mediante Google Cloud Console, la herramienta de gcloud compute o la API.

Console

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

    Ir a la página Grupos de instancias

  2. En la columna Nombre de la lista, haz clic en el nombre del grupo de instancias en el que quieres quitar las instancias. Se abrirá una página con las propiedades del grupo de instancias y una lista de las instancias incluidas en el grupo.
  3. En la lista, selecciona una o más instancias que quieres quitar del grupo.
  4. Haz clic en Quitar del grupo. Las instancias seleccionadas abandonan el grupo, pero siguen en ejecución fuera de él.

gcloud

Para quitar una instancia del grupo sin borrarla, usa el subcomando abandon-instances.

gcloud compute instance-groups managed abandon-instances instance-group-name \
        --instances example-i3n2,example-z2x9 \
        --zone zone

API

Realiza una solicitud al método instanceGroupManagers.abandonInstances. En el cuerpo de la solicitud, incluye las URL de una o más instancias que desees descartar.

POST https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/abandonInstances

    {
     "instances": [
      "zones/zone/instances/example-instance-i3n2",
      "zones/zone/instances/example-instance-l6n1"
     ]
    }

Si el grupo de instancias es un grupo de instancias administrado regional, reemplaza zones/zone por regions/region.

Después de realizar una solicitud para descartar instancias de un grupo de instancias administrado, se quitan del grupo lo antes posible. Verifica el estado de las instancias en el grupo de instancias administrado.

Vuelve a crear instancias en el grupo

Si se vuelven a crear instancias, se borran las instancias especificadas y se crean nuevas con la plantilla asignada al grupo de instancias administrado.

Usa este método para actualizar las instancias seleccionadas a fin de que usen la plantilla de instancias más reciente. Si debes volver a crear todas las instancias de un grupo de instancias administrado, inicia una actualización progresiva.

Si el grupo forma parte de un servicio de backend que tenga habilitado el vaciado de conexiones, pueden transcurrir hasta 60 segundos después del vaciado de conexiones hasta que se quite o borre la instancia de VM.

Vuelve a crear las instancias seleccionadas en el grupo de instancias administrado con la herramienta de gcloud compute o la API.

gcloud

Usa el subcomando instance-groups managed recreate-instances.

gcloud compute instance-groups managed recreate-instances instance-group-name \
        --instances example-i3n2,example-z2x9 \
        --zone zone

API

Realiza una solicitud al método instanceGroupManagers.recreateInstances. En el cuerpo de la solicitud, incluye las URL de una o más instancias que desees volver a crear.

POST https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/recreateInstances

    {
     "instances": [
      "zones/zone/instances/example-instance-i3n2",
      "zones/zone/instances/example-instance-l6n1"
     ]
    }

Si el grupo de instancias es un grupo de instancias administrado regional, reemplaza zones/zone por regions/region.

Después de realizar una solicitud para volver a crear instancias en un grupo de instancias administrado, las instancias nuevas se inician en cuanto el sistema puede aprovisionarlas. Este proceso puede tardar un tiempo significativo en función de la cantidad de instancias que vuelves a crear. Verifica el estado de las instancias en el grupo de instancias administrado.

Borra un grupo de instancias administrado

Cuando borras un grupo de instancias administrado, se borran todas las instancias en él. Si debes conservar alguna de las instancias en este grupo de instancias administrado, primero descarta las instancias para quitarlas del grupo. Luego, borra el grupo.

Cuando borras un grupo de instancias administrado y sus instancias mediante Google Cloud Console o la herramienta de gcloud compute, todos los escaladores automáticos adjuntos se borran de forma automática. Sin embargo, si usas la API, primero debes emitir solicitudes individuales para borrar cualquier escalador automático adjunto con autoscalers.delete o regionAutoscalers.delete.

Console

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

    Ir a la página Grupos de instancias

  2. Selecciona uno o más grupos de la lista que quieres borrar.
  3. Haz clic en Borrar para borrar el grupo y todas las instancias en el grupo de instancias administrado.

gcloud

Usa el subcomando instance-groups managed delete.

gcloud compute instance-groups managed delete instance-group-name \
        --zone zone

API

Realiza una solicitud al método instanceGroupManagers.delete.

DELETE https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name

Si el grupo de instancias es un grupo de instancias administrado regional, reemplaza zones/zone por regions/region.

Crea grupos de instancias interrumpibles

Puedes usar grupos de instancias administrados para crear varias instancias interrumpibles con rapidez, que pueden reducir los costos de las instancias en los grupos de instancias administrados. Por ejemplo, puedes crear un grupo de instancias interrumpibles, usarlas para ejecutar una tarea de procesamiento por lotes y, luego, borrar el grupo cuando se complete la tarea.

Para crear un grupo de instancias interrumpibles, configura la opción interrumpible en una plantilla de instancias y, luego, usa la plantilla para crear el grupo de instancias administrado.

Console

  1. En Cloud Console, ve a la página Plantillas de instancias.

    Ir a la página Plantillas de instancias

  2. Haz clic en Plantilla de instancias nueva.
  3. Completa las propiedades que quieres para la plantilla de instancias.
  4. Haz clic en Mostrar opciones avanzadas para expandir la sección Políticas de disponibilidad.
  5. Configura la opción Interrumpibilidad como Activado.
  6. Haz clic en Crear para crear la plantilla.
  7. Usa esta plantilla para crear un grupo de instancias administrado.

gcloud

En gcloud compute, crea una plantilla de instancias con el comando instance-templates create. Incluye la marca --preemptible.

gcloud compute instance-templates create instance-template \
        --preemptible

Luego de crear la plantilla de instancias, úsala para crear un grupo de instancias administrado.

API

Usa el método instanceTemplates().insert para crear una plantilla de instancias nueva. Incluye la propiedad preemptible en scheduling y configúrala como true.

{
    "name": "instance-template",
    "properties": {
      "machineType": "zones/zone/machineTypes/machine-type",
      "networkInterfaces": [
        {
          "network": "global/networks/default",
          "accessConfigs":
          [
            {
              "name": "external-IP",
              "type": "ONE_TO_ONE_NAT"
            }
          ]
        }
      ],
      "scheduling":
      {
        "preemptible": true
      },
      "disks":
      [
        {
          "type": "PERSISTENT",
          "boot": true,
          "mode": "READ_WRITE",
          "initializeParams":
          {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-9"
          }
        }
      ]
      }
    }

Luego de crear la plantilla de instancias, úsala para crear un grupo de instancias administrado.

Comprende los campos instanceTemplate y versions

Cuando creas un grupo de instancias administrado, proporcionas una plantilla de instancias que el grupo usa para crear instancias de VM individuales. De forma predeterminada, Compute Engine describe la plantilla de instancias usada en dos propiedades de API separadas: la propiedad instanceTemplate de nivel superior y la propiedad versions. Por ejemplo, en el siguiente grupo de instancias administrado, observa que se propagó información a los campos instanceTemplate y versions:

{

     "name": "example-group",
     "zone": "zones/us-central1-a",
     "instanceTemplate": "global/instanceTemplates/example-it",
     "versions": [
      {
       "name": "v3",
       "instanceTemplate": "global/instanceTemplates/example-it",
       "targetSize": {
        "calculated": 3
       }
      }
     ]...
    }

Compute Engine propaga de forma automática el campo de nivel superior instanceTemplate y el campo versions para la retrocompatibilidad. Recomendamos especificar el campo versions y omitir el campo de nivel superior instanceTemplates siempre que sea posible. Sin embargo, si tu código de aplicación establece el campo instanceTemplate de nivel superior, aun así es una solicitud válida.

Para obtener más información sobre el actualizador de grupos de instancias administrados, lee Implementa actualizaciones en los MIG.

Realiza una prueba canary en plantillas de instancias con un grupo de instancias administrado (avanzado)

Es posible crear un grupo de instancias administrado en el que haya dos grupos de VM que usen plantillas de instancias diferentes. Por ejemplo, es posible que quieras crear un grupo de instancias administrado que tenga 20 instancias de VM, y 10 VM deban ejecutarse en una imagen operativa específica, mientras que el resto se ejecuta en una imagen de sistema operativo diferente. Esta función te permite comparar las dos versiones diferentes de la plantilla de instancias antes de decidirte por una.

En la API, realiza una solicitud POST a la siguiente URL:

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers

En el cuerpo de la solicitud, se debe omitir el campo instanceTemplates de nivel superior, pero se debe incluir la propiedad versions con dos plantillas de instancias configuradas. En cada objeto versions, debes especificar una plantilla de instancias. También debes especificar el targetSize en uno de los objetos versions, pero no para ambos. Por ejemplo, la siguiente solicitud crea un grupo de instancias en el que el 50% de las instancias de VM usa la plantilla de instancias example-template y el resto usa la plantilla small-machine-type:

{
      "baseInstanceName": "example-instances",
      "name": "example-group",
      "targetSize": 5,
      "versions":
      [
        {
          "instanceTemplate": "global/instanceTemplates/example-template",
          "targetSize":
          {
            "percent": 50
          }
        },
       {
         "instanceTemplate": "global/instanceTemplates/small-machine-type"
       }
      ]
    }

IAM y los grupos de instancias administrados

Todas las operaciones que realiza Compute Engine como parte de un grupo de instancias administrado se llevan a cabo con la cuenta de servicio de las API de Google del proyecto. Esta cuenta de servicio por proyecto tiene una dirección de correo electrónico como la siguiente, en la que project-id es el ID numérico del proyecto correspondiente:

project-id@cloudservices.gserviceaccount.com

La cuenta de servicio de las API de Google es diferente a la cuenta de servicio predeterminada de Compute Engine.

Es tu responsabilidad asegurarte de que la cuenta de servicio que usa el grupo de instancias administrado tenga suficientes privilegios para crear instancias de máquina virtual basadas en la plantilla de instancias. En particular, esto significa que a la cuenta de servicio se le debe otorgar la función compute.instanceAdmin.v1 y, de forma opcional, la función serviceAccountUser, para crear y administrar instancias en el grupo. La función serviceAccountUser solo se requiere si el grupo de instancias administrado crea instancias que se puedan ejecutar como una cuenta de servicio. Ten en cuenta que otros procesos, incluido Deployment Manager, usan esta cuenta.

Cuando creas un grupo de instancias administrado o actualizas una plantilla de instancias, Compute Engine valida que la cuenta de servicio de las API de Google tenga lo siguiente:

  • La función serviceAccountUser, que es importante si planeas crear instancias que se puedan ejecutar como cuenta de servicio.
  • Permisos para todos los recursos a los que se hace referencia en las plantillas de instancias, como imágenes, discos, redes de VPC y subredes.

Para obtener más información sobre las cuentas de servicio, consulta la Descripción general de las cuentas de servicio.

Actualiza todas las instancias en un grupo de instancias administrado

Consulta cómo implementar actualizaciones para MIG.

Solución de problemas

Mi grupo de instancias administrado aún no puede crear una instancia. ¿A qué se debe?

Hay varios problemas que pueden evitar que el grupo de instancias cree o vuelva a crear una instancia con éxito. Estos son algunos problemas comunes:

  • El grupo de instancias administrado intenta crear o volver a crear la instancia y el disco persistente de arranque, pero este ya existe. De forma predeterminada, se crean nuevos discos persistentes de arranque cuando se crean instancias nuevas. Estos discos tienen el mismo nombre que la instancia. Si una instancia tiene el nombre my-awesome-instance, el disco también se llama my-awesome-instance. Si ya existe un disco persistente con ese nombre, la solicitud falla. Borra el disco persistente existente para resolver este problema.

  • La plantilla de instancias configuró la opción disks.autoDelete como false para los discos persistentes de arranque, de modo que el disco persistente no se borre cuando se borre una instancia (por ejemplo, debido a la reparación automática). Cuando el grupo de instancias administrado intentó volver a crear la instancia con el mismo nombre, se produjo el mismo problema de que ya existe un disco persistente con el mismo nombre. Borra el disco persistente existente a fin de solucionar el problema inmediato y actualiza la plantilla de instancias para configurar disks.autoDelete como true, si deseas que los discos persistentes de arranque se borren junto con la instancia.

  • La plantilla de instancias podría no ser válida. Si actualizaste la plantilla de instancias recientemente, podría haber una propiedad no válida que genere que el grupo de instancias administrado falle en la creación de instancias. A continuación, se detallan propiedades que podrían no ser válidas:

    • Especificaste un recurso que no existe, como una imagen de origen.
    • Escribiste mal el nombre de un recurso.
    • Intentaste conectar discos persistentes adicionales que no son de arranque en modo de lectura-escritura. Como los grupos de instancias contienen varias instancias, cualquier disco adicional que desees compartir entre todas las instancias del grupo solo se puede conectar en modo de solo lectura.

Próximos pasos