Criar um MIG que use o modo em massa

Neste documento, descrevemos como usar o modo em massa em um MIG para criar todas as instâncias de máquina virtual (VM) necessárias ao mesmo tempo. A criação de instâncias de uma só vez garante que o MIG crie instâncias somente quando todos os recursos necessários estiverem disponíveis.

Para saber como o modo em massa funciona, consulte Sobre a criação em massa de instâncias em um MIG.

Criar um modelo de instância

O modo em massa em MIGs só é compatível com modelos de instância que especificam um modelo de provisionamento vinculado à reserva ou de início flexível. Para usar o modo em massa, crie um modelo de instância usando um desses modelos de provisionamento, conforme descrito nas seções a seguir. Para mais informações sobre os modelos de provisionamento, consulte Modelos de provisionamento de instâncias do Compute Engine.

Usar o modelo de provisionamento vinculado à reserva

Para criar um modelo de instância, selecione uma das seguintes opções:

Console

  1. No console do Google Cloud , acesse a página Modelos de instância.

    Acessar "Modelos de instância"

  2. Clique em Criar modelo de instância. A página Criar modelo de instância será aberta.

  3. No campo Nome, insira um nome para o modelo de instância.

  4. Na seção Local, escolha uma destas opções:

    • Para criar um modelo de instância regional, selecione Regional (recomendado) e escolha a região em que você quer criar o modelo.

    • Para criar um modelo de instância global, selecione Global.

  5. Na seção Configuração da máquina, especifique um tipo de máquina.

  6. Na seção Modelo de provisionamento, conclua as etapas a seguir:

    1. Expanda Configurações avançadas do modelo de provisionamento de VM.

    2. Na lista No encerramento da VM, selecione Excluir.

  7. Opcional: para alterar o valor padrão do tipo ou da imagem do disco de inicialização, na seção Disco de inicialização, clique em Alterar. Depois, siga as instruções para alterar o disco de inicialização.

  8. Expanda a seção Opções avançadas e depois faça o seguinte:

    1. Expanda a seção Gerenciamento.

    2. Na seção Reservas, selecione Escolher uma reserva e clique em Escolher reserva. No painel que aparece, siga as instruções para selecionar a reserva que você quer consumir.

  9. Clique em Criar.

gcloud

Para criar um modelo de instância, use o comando instance-templates create com as seguintes configurações de flag:

  • A flag --instance-termination-action definida como DELETE.

  • A flag --maintenance-policy definida como TERMINATE.

  • A flag --provisioning-model definida como RESERVATION_BOUND.

  • A flag --reservation-affinity definida como specific.

  • A sinalização --reservation

O exemplo de comando a seguir cria um modelo de instância regional. Se você quiser criar um modelo de instância global, use o mesmo comando sem a flag --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

Substitua:

  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância a ser criado.

  • IMAGE_PROJECT: o projeto de imagem que contém a imagem, por exemplo, debian-cloud. Para mais detalhes sobre os projetos de imagem disponíveis, consulte Imagens públicas.

  • IMAGE_FAMILY: uma família de imagens. Especifique uma família de imagens para usar a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar debian-12, a versão mais recente na família de imagens do Debian 12 será usada. Para mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

  • REGION: a região em que o modelo de instância será criado.

  • MACHINE_TYPE: o tipo de máquina especificado na reserva que você quer consumir.

  • RESERVATION_URL: o URL da reserva criada automaticamente para uma reserva adiantada no modo de calendário que você quer efetivar. Especifique um dos seguintes valores:

    • Se a reserva criada automaticamente estiver no seu projeto: RESERVATION_NAME.

    • Se a reserva criada automaticamente estiver em outro projeto: projects/PROJECT_ID/reservations/RESERVATION_NAME.

REST

Para criar um modelo de instância, faça uma solicitação POST para um dos seguintes métodos:

No corpo da solicitação, inclua estes campos:

  • O campo reservationAffinity.consumeReservationType definido como SPECIFIC_RESERVATION.

  • O campo reservationAffinity.key definido como compute.googleapis.com/reservation-name.

  • O campo reservationAffinity.values definido como o URL da reserva criada automaticamente.

  • O campo scheduling.instanceTerminationAction definido como DELETE.

  • O campo scheduling.onHostMaintenance definido como TERMINATE.

  • O campo scheduling.provisioningModel definido como RESERVATION_BOUND.

Por exemplo, para criar um modelo de instância regional, faça uma solicitação da seguinte maneira:

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"
    }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que o modelo de instância será criado.

  • REGION: a região em que o modelo de instância será criado.

  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância a ser criado.

  • IMAGE_PROJECT: o projeto de imagem que contém a imagem, por exemplo, debian-cloud. Para mais detalhes sobre os projetos de imagem disponíveis, consulte Imagens públicas.

  • IMAGE: especifique uma destas opções:

    • Uma versão específica da imagem do SO, como debian-12-bookworm-v20240617.

    • Uma família de imagens, que precisa ter o formato family/IMAGE_FAMILY. Especifique uma família de imagens para usar a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar family/debian-12, a versão mais recente na família de imagens Debian 10 será usada. Para mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

  • MACHINE_TYPE: o tipo de máquina especificado na reserva que você quer consumir.

  • RESERVATION_URL: o URL da reserva criada automaticamente para uma reserva adiantada no modo de calendário que você quer efetivar. Especifique um dos seguintes valores:

    • Se a reserva criada automaticamente estiver no seu projeto: RESERVATION_NAME

    • Se a reserva criada automaticamente estiver em outro projeto: projects/PROJECT_ID/reservations/RESERVATION_NAME

Para mais detalhes, consulte Criar modelos de instância.

Usar o modelo de provisionamento de início flexível

Para criar um modelo de instância, selecione uma das seguintes opções:

Console

  1. No console do Google Cloud , acesse a página Modelos de instância.

    Acessar "Modelos de instância"

  2. Clique em Criar modelo de instância. A página Criar modelo de instância será aberta.

  3. No campo Nome, insira um nome para o modelo de instância.

  4. Na seção Local, escolha uma destas opções:

    • Para criar um modelo de instância regional, selecione Regional (recomendado) e escolha a região em que você quer criar o modelo.

    • Para criar um modelo de instância global, selecione Global.

  5. Na seção Configuração da máquina, especifique um tipo de máquina.

  6. Na seção Modelo de provisionamento, conclua as etapas a seguir:

    1. No campo Modelo de provisionamento de VM, selecione Início flexível.

    2. Expanda Configurações avançadas do modelo de provisionamento de VM.

    3. Marque a caixa de seleção Definir um limite de tempo para a VM.

    4. Para definir uma duração de execução para as VMs criadas usando o modelo de instância, no campo Insira o número de horas, insira o número de horas. O valor precisa estar entre 36 segundos (0.01) e sete dias (168).

  7. Opcional: para alterar o valor padrão do tipo ou da imagem do disco de inicialização, na seção Disco de inicialização, clique em Alterar. Depois, siga as instruções para alterar o disco de inicialização.

  8. Clique em Criar.

gcloud

Para criar um modelo de instância, use o comando instance-templates create com as seguintes configurações de flag:

  • A flag --instance-termination-action definida como DELETE.

  • A flag --maintenance-policy definida como TERMINATE.

  • A sinalização --max-run-duration

  • A flag --provisioning-model definida como FLEX_START.

  • A flag --reservation-affinity definida como none.

O exemplo de comando a seguir cria um modelo de instância regional. Se você quiser criar um modelo de instância global, use o mesmo comando sem a flag --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

Substitua:

  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância a ser criado.

  • IMAGE_PROJECT: o projeto de imagem que contém a imagem, por exemplo, debian-cloud. Para mais detalhes sobre os projetos de imagem disponíveis, consulte Imagens públicas.

  • IMAGE_FAMILY: uma família de imagens. Especifique uma família de imagens para usar a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar debian-12, a versão mais recente na família de imagens do Debian 12 será usada. Para mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

  • REGION: a região em que o modelo de instância será criado.

  • MACHINE_TYPE: o tipo de máquina a ser usado para as VMs de início flexível. Se você especificar um tipo de máquina N1, inclua a flag --accelerator para definir o número e o tipo de GPUs a serem anexadas às VMs.

  • RUN_DURATION: a duração da execução das VMs solicitadas. Formate o valor como o número de dias, horas, minutos ou segundos, seguido por d, h, m e s, respectivamente. Por exemplo, especifique 30m para 30 minutos ou 1d2h3m4s para 1 dia, 2 horas, 3 minutos e 4 segundos. O valor precisa estar entre 10 minutos e sete dias.

REST

Para criar um modelo de instância, faça uma solicitação POST para um dos seguintes métodos:

No corpo da solicitação, inclua estes campos:

  • O campo reservationAffinity.consumeReservationType definido como NO_RESERVATION.

  • O campo scheduling.instanceTerminationAction definido como DELETE.

  • O campo scheduling.maxRunDuration.

  • O campo scheduling.onHostMaintenance definido como TERMINATE.

  • O campo scheduling.provisioningModel definido como FLEX_START.

A solicitação de exemplo a seguir cria um modelo de instância 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"
    }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que o modelo de instância será criado.

  • REGION: a região em que o modelo de instância será criado.

  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância a ser criado.

  • IMAGE_PROJECT: o projeto de imagem que contém a imagem, por exemplo, debian-cloud. Para mais detalhes sobre os projetos de imagem disponíveis, consulte Imagens públicas.

  • IMAGE: especifique uma destas opções:

    • Uma versão específica da imagem do SO, como debian-12-bookworm-v20240617.

    • Uma família de imagens, que precisa ter o formato family/IMAGE_FAMILY. Especifique uma família de imagens para usar a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar family/debian-12, a versão mais recente na família de imagens Debian 10 será usada. Para mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

  • MACHINE_TYPE: o tipo de máquina a ser usado para as VMs. Se você especificar um tipo de máquina N1, inclua o campo guestAccelerators para definir o número e o tipo de GPUs a serem anexadas às VMs.

  • RUN_DURATION: a duração, em segundos, em que você quer que as VMs solicitadas sejam executadas. O valor precisa estar entre 600, que representa 600 segundos (10 minutos), e 604800, que é 604.800 segundos (sete dias).

Para mais detalhes, consulte Criar modelos de instância.

Criar um MIG que use o modo em massa

Para ativar a criação em massa de instâncias em um MIG, defina o campo targetSizePolicy.mode como BULK na configuração do MIG. Ao usar esse modo em massa, o MIG aguarda a disponibilidade total de recursos e cria instâncias de uma só vez.

Console

  1. Acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Clique em Criar grupo de instâncias. A página Criar grupo de instâncias é aberta.

  3. No campo Nome, insira um nome para o MIG.

  4. Antes de selecionar um modelo de instância, faça o seguinte:

    1. Se você usa o modelo de provisionamento de início flexível, desative os reparos da seguinte maneira:
      1. Na seção Ciclo de vida da instância de VM, desmarque a caixa de seleção Permitir a correção de VMs em uma zona alternativa.
      2. Na lista Ação padrão em caso de falha, selecione Nenhuma ação.
    2. Na seção Local, faça o seguinte:
      • Para criar um MIG zonal, selecione Zona única.
      • Para criar um MIG regional, selecione Várias zonas. Em Forma de distribuição de destino, selecione Qualquer zona única. Na caixa de diálogo que aparece, selecione Desativar redistribuição de instâncias.
  5. Volte ao campo Modelo de instância. Na lista Modelo de instância, selecione o modelo de instância que você criou na seção anterior.

  6. No campo Número de instâncias, especifique o número de instâncias que você quer criar de uma só vez.

  7. Marque a caixa de seleção Obter VMs de uma só vez com a política de tamanho de destino em massa.

  8. Clique em Criar.

gcloud

Para criar um MIG com a criação em massa ativada, use o comando gcloud compute instance-groups managed create com a flag --target-size-policy-mode definida como bulk.

Se você usar o modelo de provisionamento de início flexível, desative os reparos no MIG incluindo a flag --default-action-on-vm-failure=do-nothing nos comandos a seguir.

  • Para criar um MIG zonal, execute o seguinte comando:
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --size=SIZE \
    --target-size-policy-mode=bulk \
    --template=INSTANCE_TEMPLATE_URL \
    --zone=ZONE \
  • Para criar um MIG regional, execute o seguinte 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 \

Substitua:

  • INSTANCE_GROUP_NAME: o nome do MIG;
  • SIZE: o número de instâncias no MIG.
  • INSTANCE_TEMPLATE_URL: o URL do modelo de instância que você quer usar para criar instâncias no MIG. O URL pode conter o ID ou o nome do modelo de instância. Especifique um dos seguintes valores:
    • Para um modelo de instância regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID.
    • Para um modelo de instância global: INSTANCE_TEMPLATE_ID
  • ZONE: a zona em que o MIG cria instâncias.
  • LIST_OF_ZONES: uma lista separada por vírgulas de zonas em que o MIG regional cria instâncias. Por exemplo, us-central1-a, us-central1-b, us-central1-c.

REST

Para criar um MIG com a criação em massa ativada, faça uma solicitação POST da seguinte maneira. No corpo da solicitação, defina o campo targetSizePolicy.mode como bulk.

Se você usar o modelo de provisionamento de início flexível, desative os reparos no MIG incluindo o campo "instanceLifecyclePolicy": {"defaultActionOnFailure": "DO_NOTHING"} nas seguintes solicitações.

  • Para criar um MIG zonal, faça uma solicitação POST para o 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 criar um MIG regional, faça uma solicitação POST para o 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"
        }
      ]
    }
    

Substitua:

  • PROJECT_ID:o ID do projeto.
  • ZONE:a zona em que o MIG cria instâncias.
  • REGION:a região em que o MIG cria instâncias.
  • INSTANCE_GROUP_NAME:o nome do MIG.
  • SIZE:o número de instâncias no MIG.
  • INSTANCE_TEMPLATE_URL: o URL do modelo de instância que você quer usar para criar instâncias no MIG. O URL pode conter o ID ou o nome do modelo de instância. Especifique um dos seguintes valores:
    • Para um modelo de instância regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID.
    • Para um modelo de instância global: INSTANCE_TEMPLATE_ID

Adicionar ou excluir instâncias

Em um MIG que usa o modo em massa, é possível adicionar ou remover instâncias aumentando ou diminuindo manualmente o tamanho de destino do MIG.

  • Adicionar instâncias: quando você aumenta o tamanho de destino de zero, o MIG adiciona instâncias da mesma forma que ao criar um MIG. Também é possível criar instâncias com nomes específicos usando o método createInstances quando não há instância no MIG. Para criar instâncias com nomes específicos, consulte Como criar instâncias com nomes específicos em MIGs.

  • Excluir instâncias: quando você diminui o tamanho de destino para zero, o MIG exclui todas as instâncias atuais no grupo e cancela qualquer operação de criação em andamento. É possível remover instâncias diminuindo o tamanho de destino para 0. Para diminuir para um tamanho diferente de zero, o MIG não pode ter uma operação de instância em massa em andamento (bulkInstanceOperation.inProgress precisa ser false).

Para adicionar ou remover instâncias de um MIG mudando o tamanho de destino, consulte Definir manualmente o tamanho de um MIG.

A seguir