Crea un MIG que use el modo masivo

En este documento, se describe cómo usar el modo masivo en un MIG para crear todas las instancias de máquina virtual (VM) que necesitas al mismo tiempo. La creación de instancias de una sola vez garantiza que el MIG cree instancias solo cuando todos los recursos necesarios estén disponibles.

Para obtener información sobre cómo funciona el modo masivo, consulta Acerca de la creación masiva de instancias en un MIG.

Crea una plantilla de instancias

El modo masivo en los MIG solo se admite con plantillas de instancias que especifican un modelo de aprovisionamiento con reserva o de inicio flexible. Para usar el modo masivo, crea una plantilla de instancias con uno de estos modelos de aprovisionamiento, como se describe en las siguientes secciones. Para obtener más información sobre los modelos de aprovisionamiento, consulta Modelos de aprovisionamiento de instancias de Compute Engine.

Usa el modelo de aprovisionamiento vinculado a la reserva

Para crear una plantilla de instancias, selecciona una de las siguientes opciones:

Console

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

    Ir a Plantillas de instancia

  2. Haz clic en Crear plantilla de instancias. Se abrirá la página Crear una plantilla de instancias.

  3. En el campo Nombre, ingresa un nombre para la plantilla de instancias.

  4. En la sección Ubicación, selecciona una de las siguientes opciones:

    • Para crear una plantilla de instancias regional, selecciona Regional (recomendado) y, luego, la región en la que deseas crear la plantilla.

    • Para crear una plantilla de instancias global, selecciona Global.

  5. En la sección Configuración de máquina, especifica un tipo de máquina.

  6. En la sección Modelo de aprovisionamiento, completa los siguientes pasos:

    1. Expande Configuración avanzada del modelo de aprovisionamiento de VM.

    2. En la lista Finalización de VM, selecciona Borrar.

  7. Opcional: Para cambiar el valor o la imagen de disco de arranque predeterminados, en la sección Disco de arranque, haz clic en Cambiar. Luego, sigue las instrucciones para cambiar el disco de arranque.

  8. Expande la sección Opciones avanzadas y sigue estos pasos:

    1. Expande la sección Administración.

    2. En la sección Reservas, selecciona Elegir una reserva y, luego, haz clic en Elegir reserva. En el panel que aparece, sigue las instrucciones para seleccionar la reserva que deseas consumir.

  9. Haz clic en Crear.

gcloud

Para crear una plantilla de instancias, usa el comando instance-templates create con los siguientes parámetros de configuración de marcas:

  • La marca --instance-termination-action configurada como DELETE.

  • La marca --maintenance-policy configurada como TERMINATE.

  • La marca --provisioning-model configurada como RESERVATION_BOUND.

  • La marca --reservation-affinity configurada como specific.

  • La marca --reservation

En el siguiente comando de ejemplo, se crea una plantilla de instancias regional. Si deseas crear una plantilla de instancias global, usa el mismo comando sin la marca --instance-template-region.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --instance-termination-action=DELETE \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --provisioning-model=RESERVATION_BOUND \
    --reservation-affinity=specific \
    --reservation=RESERVATION_URL

Reemplaza lo siguiente:

  • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancias que se creará.

  • IMAGE_PROJECT: el proyecto de imagen que contiene la imagen; por ejemplo, debian-cloud. Para obtener más información sobre los proyectos de imágenes compatibles, consulta Imágenes públicas.

  • IMAGE_FAMILY: Es una familia de imágenes. Especifica una familia de imágenes para usar la imagen de SO no obsoleta más reciente. Por ejemplo, si especificas debian-12, se usa la versión más reciente de la familia de imágenes de Debian 12. Para obtener más información sobre el uso de las familias de imágenes, consulta Prácticas recomendadas para las familias de imágenes.

  • REGION: Es la región en la que se creará la plantilla de instancias.

  • MACHINE_TYPE: Es el tipo de máquina que se especifica en la reserva que deseas consumir.

  • RESERVATION_URL: Es la URL de la reserva creada automáticamente para una reserva futura en modo de calendario que deseas consumir. Especifica uno de los siguientes valores:

    • Si la reserva creada automáticamente existe en tu proyecto: RESERVATION_NAME.

    • Si la reserva creada automáticamente existe en un proyecto diferente, usa projects/PROJECT_ID/reservations/RESERVATION_NAME.

REST

Para crear una plantilla de instancias, realiza una solicitud POST a uno de los siguientes métodos:

En el cuerpo de la solicitud, incluye los siguientes campos:

  • El campo reservationAffinity.consumeReservationType configurado como SPECIFIC_RESERVATION.

  • El campo reservationAffinity.key configurado como compute.googleapis.com/reservation-name.

  • El campo reservationAffinity.values establecido en la URL de la reserva creada de forma automática.

  • El campo scheduling.instanceTerminationAction configurado como DELETE.

  • El campo scheduling.onHostMaintenance configurado como TERMINATE.

  • El campo scheduling.provisioningModel configurado como RESERVATION_BOUND.

Por ejemplo, para crear una plantilla de instancias regional, realiza una solicitud de la siguiente manera:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "SPECIFIC_RESERVATION",
      "key": "compute.googleapis.com/reservation-name",
      "values": [
        "RESERVATION_URL"
      ]
    },
    "scheduling": {
      "instanceTerminationAction": "DELETE",
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "RESERVATION_BOUND"
    }
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto en el que se creará la plantilla de instancias.

  • REGION: Es la región en la que se creará la plantilla de instancias.

  • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancias que se creará.

  • IMAGE_PROJECT: el proyecto de imagen que contiene la imagen; por ejemplo, debian-cloud. Para obtener más información sobre los proyectos de imágenes compatibles, consulta Imágenes públicas.

  • IMAGE: especifica una de las siguientes opciones:

    • una versión específica de la imagen de SO; por ejemplo, debian-12-bookworm-v20240617.

    • Una familia de imágenes, que debe tener el formato family/IMAGE_FAMILY. Especifica una familia de imágenes para usar la imagen de SO más reciente y no obsoleta. Por ejemplo, si especificas family/debian-12, se usa la versión más reciente de la familia de imágenes de Debian 12. Para obtener más información sobre el uso de las familias de imágenes, consulta Prácticas recomendadas para las familias de imágenes.

  • MACHINE_TYPE: Es el tipo de máquina que se especifica en la reserva que deseas consumir.

  • RESERVATION_URL: Es la URL de la reserva creada automáticamente para una reserva futura en modo de calendario que deseas consumir. Especifica uno de los siguientes valores:

    • Si la reserva creada automáticamente existe en tu proyecto, haz lo siguiente: RESERVATION_NAME

    • Si la reserva creada automáticamente existe en otro proyecto, haz lo siguiente: projects/PROJECT_ID/reservations/RESERVATION_NAME

Para obtener más información sobre cómo crear una plantilla de instancias, consulta Crea plantillas de instancias.

Usar el modelo de aprovisionamiento de inicio flexible

Para crear una plantilla de instancias, selecciona una de las siguientes opciones:

Console

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

    Ir a Plantillas de instancia

  2. Haz clic en Crear plantilla de instancias. Se abrirá la página Crear una plantilla de instancias.

  3. En el campo Nombre, ingresa un nombre para la plantilla de instancias.

  4. En la sección Ubicación, selecciona una de las siguientes opciones:

    • Para crear una plantilla de instancias regional, selecciona Regional (recomendado) y, luego, la región en la que deseas crear la plantilla.

    • Para crear una plantilla de instancias global, selecciona Global.

  5. En la sección Configuración de máquina, especifica un tipo de máquina.

  6. En la sección Modelo de aprovisionamiento, completa los siguientes pasos:

    1. En el campo Modelo de aprovisionamiento de VM, selecciona inicio flexible.

    2. Expande Configuración avanzada del modelo de aprovisionamiento de VM.

    3. Selecciona la casilla de verificación Establece un límite de tiempo para la VM.

    4. Para establecer una duración de ejecución para las VMs que se crean con la plantilla de instancias, ingresa la cantidad de horas en el campo Enter number of hours. El valor debe estar entre 36 segundos (0.01) y siete días (168).

  7. Opcional: Para cambiar el valor o la imagen de disco de arranque predeterminados, en la sección Disco de arranque, haz clic en Cambiar. Luego, sigue las instrucciones para cambiar el disco de arranque.

  8. Haz clic en Crear.

gcloud

Para crear una plantilla de instancias, usa el comando instance-templates create con los siguientes parámetros de configuración de marcas:

  • La marca --instance-termination-action configurada como DELETE.

  • La marca --maintenance-policy configurada como TERMINATE.

  • La marca --max-run-duration

  • La marca --provisioning-model configurada como FLEX_START.

  • La marca --reservation-affinity configurada como none.

En el siguiente comando de ejemplo, se crea una plantilla de instancias regional. Si deseas crear una plantilla de instancias global, usa el mismo comando sin la marca --instance-template-region.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --instance-template-region=REGION \
    --instance-termination-action=DELETE \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --max-run-duration=RUN_DURATION \
    --provisioning-model=FLEX_START \
    --reservation-affinity=none

Reemplaza lo siguiente:

  • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancias que se creará.

  • IMAGE_PROJECT: el proyecto de imagen que contiene la imagen; por ejemplo, debian-cloud. Para obtener más información sobre los proyectos de imágenes compatibles, consulta Imágenes públicas.

  • IMAGE_FAMILY: Es una familia de imágenes. Especifica una familia de imágenes para usar la imagen de SO no obsoleta más reciente. Por ejemplo, si especificas debian-12, se usa la versión más reciente de la familia de imágenes de Debian 12. Para obtener más información sobre el uso de las familias de imágenes, consulta Prácticas recomendadas para las familias de imágenes.

  • REGION: Es la región en la que se creará la plantilla de instancias.

  • MACHINE_TYPE: Es el tipo de máquina que se usará para las VMs de inicio flexible. Si especificas un tipo de máquina N1, debes incluir la marca --accelerator para definir la cantidad y el tipo de GPU que se conectarán a las VMs.

  • RUN_DURATION: la duración de la que deseas que se ejecuten las VMs. Debes darle formato al valor como la cantidad de días, horas, minutos o segundos, seguidos de d, h, m y s, respectivamente. Por ejemplo, especifica 30m para 30 minutos o 1d2h3m4s para un día, dos horas, tres minutos y cuatro segundos. El valor debe ser de entre 10 minutos y siete días.

REST

Para crear una plantilla de instancias, realiza una solicitud POST a uno de los siguientes métodos:

En el cuerpo de la solicitud, incluye los siguientes campos:

  • El campo reservationAffinity.consumeReservationType configurado como NO_RESERVATION.

  • El campo scheduling.instanceTerminationAction configurado como DELETE.

  • El campo scheduling.maxRunDuration

  • El campo scheduling.onHostMaintenance configurado como TERMINATE.

  • El campo scheduling.provisioningModel configurado como FLEX_START.

En la siguiente solicitud de ejemplo, se crea una plantilla de instancias regional:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "instanceTerminationAction": "DELETE",
      "maxRunDuration": {
        "seconds": RUN_DURATION
      },
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "FLEX_START"
    }
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto en el que se creará la plantilla de instancias.

  • REGION: Es la región en la que se creará la plantilla de instancias.

  • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancias que se creará.

  • IMAGE_PROJECT: el proyecto de imagen que contiene la imagen; por ejemplo, debian-cloud. Para obtener más información sobre los proyectos de imágenes compatibles, consulta Imágenes públicas.

  • IMAGE: especifica una de las siguientes opciones:

    • una versión específica de la imagen de SO; por ejemplo, debian-12-bookworm-v20240617.

    • Una familia de imágenes, que debe tener el formato family/IMAGE_FAMILY. Especifica una familia de imágenes para usar la imagen de SO más reciente y no obsoleta. Por ejemplo, si especificas family/debian-12, se usa la versión más reciente de la familia de imágenes de Debian 12. Para obtener más información sobre el uso de las familias de imágenes, consulta Prácticas recomendadas para las familias de imágenes.

  • MACHINE_TYPE: Es el tipo de máquina que se usará para las VMs. Si especificas un tipo de máquina N1, debes incluir el campo guestAccelerators para definir la cantidad y el tipo de GPU que se conectarán a las VMs.

  • RUN_DURATION: Es la duración, en segundos, por la que deseas que se ejecuten las VMs solicitadas. El valor debe estar entre 600, que es 600 segundos (10 minutos), y 604800, que es 604,800 segundos (siete días).

Para obtener más información sobre cómo crear una plantilla de instancias, consulta Crea plantillas de instancias.

Crea un MIG que use el modo masivo

Para habilitar la creación masiva de instancias en un MIG, establece el campo targetSizePolicy.mode en BULK en la configuración del MIG. Cuando usas este modo masivo, el MIG espera a que los recursos estén completamente disponibles y, luego, crea las instancias de una sola vez.

Console

  1. Ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Haz clic en Crear grupo de instancias. Se abre la página Crear grupo de instancias.

  3. En el campo Nombre, ingresa un nombre para el MIG.

  4. Antes de seleccionar una plantilla de instancias, debes hacer lo siguiente:

    1. Si usas el modelo de aprovisionamiento de inicio flexible, debes desactivar las reparaciones de la siguiente manera:
      1. En la sección Ciclo de vida de la instancia de VM, desmarca la casilla de verificación Permitir la reparación de VMs en una zona alternativa.
      2. En la lista Acción predeterminada en caso de error, selecciona Sin acción.
    2. En la sección Ubicación, haz lo siguiente:
      • Para crear un MIG zonal, selecciona Single zone.
      • Para crear un MIG regional, selecciona Varias zonas. En Forma de distribución objetivo, selecciona Cualquier zona única. En el diálogo que aparece, selecciona Inhabilitar redistribución de instancias.
  5. Vuelve al campo Plantilla de instancias. En la lista Plantilla de instancias, selecciona la plantilla de instancias que creaste en la sección anterior.

  6. En el campo Cantidad de instancias, especifica la cantidad de instancias que deseas crear a la vez.

  7. Selecciona la casilla de verificación Obtén VMs de una vez con la política de tamaño objetivo masivo.

  8. Haz clic en Crear.

gcloud

Para crear un MIG que tenga habilitada la creación masiva, usa el comando gcloud compute instance-groups managed create con la marca --target-size-policy-mode establecida en bulk.

Si usas el modelo de aprovisionamiento de inicio flexible, debes desactivar las reparaciones en el MIG. Para ello, incluye la marca --default-action-on-vm-failure=do-nothing en los siguientes comandos.

  • Para crear un MIG zonal, ejecuta el siguiente comando:
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --size=SIZE \
    --target-size-policy-mode=bulk \
    --template=INSTANCE_TEMPLATE_URL \
    --zone=ZONE \
  • Para crear un MIG regional, ejecuta el siguiente comando:
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --size=SIZE \
    --target-size-policy-mode=bulk \
    --template=INSTANCE_TEMPLATE_URL \
    --zones=LIST_OF_ZONES \

Reemplaza lo siguiente:

  • INSTANCE_GROUP_NAME: Es el nombre del MIG.
  • SIZE: Es la cantidad de instancias en el MIG.
  • INSTANCE_TEMPLATE_URL: Es la URL de la plantilla de instancias que deseas usar para crear instancias en el MIG. La URL puede contener el ID o el nombre de la plantilla de instancias. Especifica uno de los siguientes valores:
    • Para una plantilla de instancias regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Para una plantilla de instancias global: INSTANCE_TEMPLATE_ID
  • ZONE: Es la zona en la que el MIG crea instancias.
  • LIST_OF_ZONES: Es una lista separada por comas de las zonas en las que el MIG regional crea instancias. Por ejemplo, us-central1-a, us-central1-b, us-central1-c.

REST

Para crear un MIG que tenga habilitada la creación masiva, realiza una solicitud POST de la siguiente manera. En el cuerpo de la solicitud, establece el campo targetSizePolicy.mode en bulk.

Si usas el modelo de aprovisionamiento de inicio flexible, debes desactivar las reparaciones en el MIG. Para ello, incluye el campo "instanceLifecyclePolicy": {"defaultActionOnFailure": "DO_NOTHING"} en las siguientes solicitudes.

  • Para crear un MIG zonal, realiza una solicitud POST al método instanceGroupManagers.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "targetSizePolicy": {
        "mode": "bulk"
      },
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ]
    }
    
  • Para crear un MIG regional, realiza una solicitud POST al método regionInstanceGroupManagers.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "targetSizePolicy": {
        "mode": "bulk"
      },
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ]
    }
    

Reemplaza lo siguiente:

  • PROJECT_ID:Es el ID del proyecto.
  • ZONE:Es la zona en la que el MIG crea instancias.
  • REGION:Es la región en la que el MIG crea instancias.
  • INSTANCE_GROUP_NAME:Es el nombre del MIG.
  • SIZE:Es la cantidad de instancias en el MIG.
  • INSTANCE_TEMPLATE_URL: Es la URL de la plantilla de instancias que deseas usar para crear instancias en el MIG. La URL puede contener el ID o el nombre de la plantilla de instancias. Especifica uno de los siguientes valores:
    • Para una plantilla de instancias regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Para una plantilla de instancias global: INSTANCE_TEMPLATE_ID

Cómo agregar o borrar instancias

En un MIG que usa el modo masivo, puedes agregar o quitar instancias aumentando o disminuyendo manualmente el tamaño objetivo del MIG.

  • Agregar instancias: Cuando aumentas el tamaño objetivo desde cero, el MIG agrega instancias de la misma manera que cuando se crea un MIG. También puedes crear instancias con nombres específicos usando el método createInstances cuando no hay ninguna instancia en el MIG. Para crear instancias con nombres específicos, consulta Crea instancias con nombres específicos en MIG.

  • Borra instancias: Cuando disminuyes el tamaño objetivo a cero, el MIG borra todas las instancias existentes en el grupo y cancela cualquier operación de creación que estuviera en curso. Para quitar instancias, disminuye el tamaño objetivo a 0. Para disminuir a un tamaño distinto de cero, el MIG no debe tener una operación de instancia masiva en curso (bulkInstanceOperation.inProgress debe ser false).

Para agregar o quitar instancias de un MIG cambiando el tamaño objetivo, consulta Cómo establecer manualmente el tamaño de un MIG.

¿Qué sigue?