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.

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 da seguinte maneira.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init
    2. Defina uma região e uma zona padrão.

    REST

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

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

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 do Compute (v1) (roles/compute.instanceAdmin.v1) no projeto. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

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 papéis personalizados 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:

Console

Para criar um modelo de instância configurado para a criação de solicitações de redimensionamento em um MIG, faça o seguinte:

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

    Acesse "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 (padrão).

    • 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. Expanda a seção Opções avançadas e depois 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:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE \
    --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 ou IMAGE_FAMILY - especifique uma das seguintes opções:

    • IMAGE: uma versão específica da imagem do SO, por exemplo, debian-10-buster-v20200309.

    • IMAGE_FAMILY: uma família de imagens. Especifica a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar debian-10, a versão mais recente na família de imagens do 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: 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 ao método instanceTemplates.insert. No corpo da solicitação, faça o seguinte:

  • Defina o campo scheduling.onHostMaintenance como TERMINATE

  • Defina o campo reservationAffinity.consumeReservationType como NO_RESERVATION.

Por exemplo, faça uma solicitação POST desta maneira:

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

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "mode": "READ_WRITE",
        "type": "PERSISTENT",
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ],
        "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.

  • 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 ou IMAGE_FAMILY - especifique uma das seguintes opções:

    • IMAGE: uma versão específica da imagem do SO, por exemplo, debian-10-buster-v20200309.

    • IMAGE_FAMILY: uma família de imagens. Especifica a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar debian-10, a versão mais recente na família de imagens do 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: 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 um MIG ou criá-lo conforme a seguir. Além disso, faça o seguinte a fim de prepará-lo para as solicitações de redimensionamento:

Console

Se você quiser criar um MIG zonal configurado para a criação solicitações de redimensionamento, faça o seguinte:

  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, faça o seguinte:

    1. Selecione Única zona (padrão).

    2. Selecione a Região e a Zona do MIG.

  6. Para excluir a configuração de escalonamento automático, faça o seguinte:

    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. Para desativar os reparos, na seção Ciclo de vida da instância de VM, clique na lista Ação padrão em caso de falha e 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

Se você quiser criar um MIG zonal configurado para a criação de solicitações de redimensionamento, use o comando instance-groups managed create com a flag --default-action-on-vm-failure definida como do_nothing.

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template=INSTANCE_TEMPLATE_NAME \
    --size=0 \
    --zone=ZONE \
    --default-action-on-vm-failure=do_nothing

Substitua:

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

  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância que você criou na seção anterior.

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

REST

Se você quiser criar um MIG zonal configurado para a criação de solicitações de redimensionamento, faça uma solicitação POST para o método instanceGroupManagers.insert. No corpo da solicitação, inclua o campo defaultActionOnFailure definido como DO_NOTHING.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers

{
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
    }
  ],
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": 0,
  "instanceLifecyclePolicy": {
    "defaultActionOnFailure": "DO_NOTHING"
  }
}

Substitua:

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

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

  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância que você criou na seção anterior.

  • 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 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é você excluí-las.

Console

Para criar uma solicitação de redimensionamento em um MIG, faça o seguinte:

  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, 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 \
    --zone=ZONE

Substitua:

  • INSTANCE_GROUP_NAME: o nome de um MIG zonal atual 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.

REST

Para criar uma solicitação de redimensionamento em um MIG, faça uma solicitação POST ao método beta.instanceGroupManagerResizeRequests.insert.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests

{
  "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.

  • INSTANCE_GROUP_NAME: o nome de um MIG zonal atual 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).

A seguir