Criar solicitações de redimensionamento em um MIG


Neste documento, descrevemos como criar solicitações de redimensionamento em um grupo gerenciado de instâncias (MIG) de máquina virtual (VM) com GPUs anexadas.

Criar solicitações de redimensionamento em um MIG ajuda você a receber recursos com alta demanda, como GPUs, e otimizar custos ao criar o número exato de VMs de uma só vez.

Antes de começar

  • Saiba como funcionam as solicitações de redimensionamento.
  • Para garantir que haja cota de GPU suficiente para os recursos solicitados, verifique sua cota de GPU.
  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine selecionando uma das seguintes opções:

    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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Funções exigidas

Para receber as permissões necessárias a fim de criar solicitações de redimensionamento em um MIG, peça ao administrador para conceder a você o papel do IAm de Administrador da instância da computação (v1) (roles/compute.instanceAdmin.v1) no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém as permissões necessárias para criar solicitações de redimensionamento em um MIG. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para criar solicitações de redimensionamento em um MIG:

  • Para criar um modelo de instância: compute.instanceTemplates.create no projeto
  • Para criar um MIG zonal: compute.instanceGroupManagers.create no projeto
  • Para criar solicitações de redimensionamento em um MIG: compute.instanceGroupManagers.update no projeto

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Preparar um MIG para solicitações de redimensionamento

Para criar solicitações de redimensionamento em um MIG, configure um modelo de instância e o MIG conforme descrito nas seções a seguir.

Criar um modelo de instância

Se você quiser criar solicitações de redimensionamento em um MIG, ele precisará usar um modelo de instância com as seguintes configurações:

Para criar um modelo de instância configurado para a criação de solicitações de redimensionamento em um MIG, 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.

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

  4. Na seção Local, selecione uma das seguintes opções:

    • Para criar um modelo de instância global, selecione Global, se ele ainda não estiver selecionado.

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

  5. Na seção Configuração da máquina, faça o seguinte:

    1. Clique na guia GPUs.

    2. Na lista Tipo de GPU, selecione o tipo de GPU.

    3. Na lista Número de GPUs, selecione o número de GPUs.

    4. Opcional: se o modelo de GPU der suporte a estações de trabalho virtuais (vWS) NVIDIA RTX para cargas de trabalho de gráficos e você planeja executar cargas de trabalho com muitos gráficos, selecione Ativar estação de trabalho virtual (NVIDIA GRID).

    5. Na lista Tipo de máquina, selecione um tipo de máquina.

  6. 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.

  7. Abra a seção Opções avançadas e faça o seguinte:

    1. Expanda a seção Gerenciamento.

    2. Na lista Reservas, selecione Não usar.

  8. Clique em Criar.

gcloud

Para criar um modelo de instância configurado para a criação de solicitações de redimensionamento em um MIG, use o comando instance-templates create com as seguintes flags:

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

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

Por exemplo, use o seguinte comando para criar 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 \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --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 informações sobre os projetos de imagem com suporte, consulte Imagens públicas.

  • IMAGE_FAMILY: uma família de imagens. Especifica 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.

    Se você quiser usar uma versão específica da imagem do SO, como debian-12-buster-v20240701, substitua a flag --image-family pela flag --image.

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

  • MACHINE_TYPE: um tipo de máquina que dá suporte a GPUs. Se você especificar um tipo de máquina N1, inclua a flag --accelerator para especificar o número e o tipo de GPUs a serem anexadas às VMs.

REST

Para criar um modelo de instância configurado para a criação de solicitações de redimensionamento em um MIG, faça uma solicitação POST para um dos seguintes métodos:

No corpo da solicitação, faça o seguinte:

  • Inclua o campo scheduling.onHostMaintenance e defina-o como TERMINATE.

  • Inclua o campo reservationAffinity.consumeReservationType e defina-o como NO_RESERVATION.

Por exemplo, para criar um modelo de instância regional, faça uma solicitação POST 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": "NO_RESERVATION"
    },
    "scheduling": {
      "onHostMaintenance": "TERMINATE"
    }
  }
}

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 informações sobre os projetos de imagem com suporte, consulte Imagens públicas.

  • IMAGE: especifique uma destas opções:

    • Uma versão específica da imagem do SO. Por exemplo: debian-12-bookworm-v20240617

    • Uma família de imagens, que precisa ser formatada como family/IMAGE_FAMILY. Especifica 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 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.

  • MACHINE_TYPE: um tipo de máquina que dá suporte a GPUs. Se você especificar um tipo de máquina N1, inclua o campo guestAccelerators no corpo da solicitação para especificar o número e o tipo de GPUs a serem anexadas às VMs.

Para mais informações sobre como criar um modelo de instância, consulte Criar modelos de instância.

Criar ou atualizar um MIG

Depois de criar o modelo de instância conforme descrito na seção anterior, use esse modelo para atualizar ou criar um MIG da seguinte maneira. Além disso, faça o seguinte a fim de prepará-lo para as solicitações de redimensionamento:

Para criar um MIG compatível com solicitações de redimensionamento, selecione uma das seguintes opções:

Console

  1. No Console do Google Cloud, 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. Na lista Modelo de instância, selecione o modelo de instância que você criou na seção anterior. Se você selecionar um modelo de instância regional, a lista Região será definida como a região do modelo de instância.

  5. Na seção Local, especifique se você quer criar um MIG regional ou por zona da seguinte maneira:

    1. Para criar um MIG zonal, selecione Zona única. Ou, para criar um MIG regional, selecione Várias zonas.

    2. Selecione a Região e as Zonas do MIG.

    3. Se você estiver criando um MIG regional, faça o seguinte:

      1. No campo Forma de distribuição de destino, selecione Qualquer zona única. Só é possível selecionar essa opção depois de excluir a configuração de escalonamento automático nas próximas etapas.

      2. Depois de selecionar a opção de qualquer zona única, na caixa de diálogo que aparecer, clique em Desativar redistribuição de instâncias.

  6. Exclua a configuração de escalonamento automático da seguinte maneira:

    1. Na seção Escalonamento automático, clique na lista Modo de escalonamento automático e depois em Excluir configuração de escalonamento automático.

    2. Na caixa de diálogo de confirmação, clique em Excluir.

  7. Desative os reparos da seguinte maneira:

    1. Na seção Ciclo de vida da instância de VM, clique na lista Ação padrão em caso de falha.

    2. Selecione Nenhuma ação.

  8. Escolha uma destas opções:

    • Para criar uma solicitação de redimensionamento nesse momento, faça o seguinte:

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

        O campo do número de instâncias na página "Criar grupo de instâncias".

      2. Marque a caixa de seleção Usar solicitação de redimensionamento para criar VMs de uma só vez.

      3. No campo Duração da execução solicitada e na lista Unidade, especifique a duração da execução das VMs. A duração precisa ser de 1 hora a 7 dias.

    • Caso contrário, no campo Número de instâncias, digite 0. Mais tarde, será possível adicionar VMs ao grupo criando solicitações de redimensionamento.

  9. Clique em Criar.

gcloud

Use o comando instance-groups managed create com a flag --default-action-on-vm-failure definida como do_nothing. Se você estiver criando um MIG regional, também precisará incluir a flag --target-distribution-shape definida como any-single-zone e a flag --instance-redistribution-type definida como none.

  • Para criar um MIG zonal, execute o seguinte comando:

    gcloud compute instance-groups managed create INSTANCE_GROUP_URL \
      --template=INSTANCE_TEMPLATE_NAME \
      --size=0 \
      --zone=ZONE \
      --default-action-on-vm-failure=do_nothing
    
  • Para criar um MIG regional, execute o seguinte comando:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --template=INSTANCE_TEMPLATE_URL \
        --size=0 \
        --region=REGION \
        --target-distribution-shape=any-single-zone \
        --instance-redistribution-type=none \
        --default-action-on-vm-failure=do_nothing
    

Substitua:

  • INSTANCE_GROUP_NAME: o nome do MIG que será criado.

  • INSTANCE_TEMPLATE_URL: o URL parcial do modelo de instância que você criou na seção anterior. Se você querer usar um modelo de instância regional para criar o MIG, só poderá criar o MIG na região do modelo. Especifique um destes valores:

    • Para um modelo de instância regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_NAME

    • Para um modelo de instância global: INSTANCE_TEMPLATE_NAME

  • ZONE: a zona em que o MIG será criado.

  • REGION: a região em que o MIG será criado.

REST

  • Para criar um MIG por zona, envie uma solicitação POST usando o método instanceGroupManagers.insert da seguinte maneira:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ],
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": 0,
      "instanceLifecyclePolicy": {
        "defaultActionOnFailure": "DO_NOTHING"
      }
    }
    
  • Para criar um MIG regional, envie uma solicitação POST usando o método regionInstanceGroupManagers.insert da seguinte maneira:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
    
    {
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ],
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": 0,
      "distributionPolicy": {
        "targetShape": "ANY_SINGLE_ZONE"
      },
      "updatePolicy": {
        "instanceRedistributionType": "NONE"
      },
      "instanceLifecyclePolicy": {
        "defaultActionOnFailure": "DO_NOTHING"
      }
    }
    

Substitua:

  • PROJECT_ID: o ID do projeto em que está o modelo de instância criado na seção anterior.

  • INSTANCE_TEMPLATE_URL: o URL parcial do modelo de instância que você criou na seção anterior. Se você querer usar um modelo de instância regional para criar o MIG, só poderá criar o MIG na região do modelo. Especifique um destes valores:

    • Para um modelo de instância regional: regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_NAME

    • Para um modelo de instância global: global/instanceTemplates/INSTANCE_TEMPLATE_NAME

  • ZONE: a zona em que o MIG será criado.

  • REGION: a região em que o MIG será criado.

  • INSTANCE_GROUP_NAME: o nome do MIG que será criado.

Criar uma solicitação de redimensionamento em um MIG

Antes de criar solicitações de redimensionamento, verifique se você preparou o MIG conforme descrito na seção anterior.

Depois que você cria uma solicitação de redimensionamento, ela é aceita e todos os recursos solicitados ficam disponíveis, o MIG cria o número solicitado de VMs de uma só vez. As VMs são executadas até que o MIG as exclua após o término da duração de execução especificada ou até que você as exclua.

Para criar uma solicitação de redimensionamento em um MIG, selecione uma das seguintes opções:

Console

  1. No Console do Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Na coluna Nome, clique no nome do MIG em que você quer criar a solicitação de redimensionamento.

    A página de visão geral do MIG será aberta.

  3. Na linha Solicitações de redimensionamento, clique em Editar solicitações de redimensionamento.

  4. Clique em Nova solicitação de redimensionamento.

    O painel Novas solicitações de redimensionamento será exibido.

  5. No campo Nome, digite o nome da solicitação de redimensionamento.

  6. No campo Número de instâncias extras necessárias, insira o número de VMs a serem adicionadas ao MIG de uma só vez.

  7. Nos campos Duração da execução solicitada e Unidade, especifique a duração das VMs solicitadas. A duração precisa ser entre 1 hora e 7 dias.

  8. Clique em Criar.

gcloud

  • Para criar uma solicitação de redimensionamento em um MIG zonal, use o comando instance-groups managed resize-requests create.

    gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
        --resize-request=RESIZE_REQUEST_NAME \
        --resize-by=COUNT \
        --requested-run-duration=RUN_DURATION \
        --zone=ZONE
    
  • Para criar uma solicitação de redimensionamento em um MIG regional, use o comando beta instance-groups managed resize-requests create.

    gcloud beta compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
        --resize-request=RESIZE_REQUEST_NAME \
        --resize-by=COUNT \
        --requested-run-duration=RUN_DURATION \
        --region=REGION
    

Substitua:

  • INSTANCE_GROUP_NAME: o nome do MIG configurado para a criação de solicitações de redimensionamento.

  • RESIZE_REQUEST_NAME: o nome da solicitação de redimensionamento, que precisa ser exclusivo no MIG especificado. Caso contrário, a criação da solicitação de redimensionamento falha.

  • COUNT: o número de VMs a serem adicionadas ao MIG de uma só vez.

  • RUN_DURATION: a duração da execução das VMs solicitadas. O valor precisa ser formatado com 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 um dia, duas horas, três minutos e quatro segundos. O valor precisa estar entre 10 minutos e sete dias.

  • ZONE: a zona em que o MIG está localizado.

  • REGION: a região em que o MIG está localizado.

REST

  • Para criar uma solicitação de redimensionamento em um MIG zonal, envie uma solicitação POST usando o método instanceGroupManagerResizeRequests.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests
    
  • Para criar uma solicitação de redimensionamento em um MIG regional, envie uma solicitação POST usando o método beta.regionInstanceGroupManagerResizeRequests.insert.

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests
    

No corpo da solicitação, inclua o seguinte:

{
  "name": "RESIZE_REQUEST_NAME",
  "resizeBy": COUNT,
  "requestedRunDuration": {
    "seconds": "RUN_DURATION"
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que o MIG especificado está.

  • ZONE: a zona em que o MIG está localizado.

  • REGION: a região em que o MIG está localizado.

  • INSTANCE_GROUP_NAME: o nome do MIG configurado para a criação de solicitações de redimensionamento.

  • RESIZE_REQUEST_NAME: o nome da solicitação de redimensionamento, que precisa ser exclusivo no MIG especificado. Caso contrário, a criação da solicitação de redimensionamento falha.

  • COUNT: o número de VMs a serem adicionadas de uma só vez ao MIG.

  • 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).

Depois de criar uma solicitação de redimensionamento, é possível conferir o status dela ou resolver problemas abrindo os detalhes da solicitação.

A seguir