Criar um MIG que use VMs Spot

Neste documento, explicamos como criar um grupo gerenciado de instâncias (MIG) que usa VMs Spot.

As VMs spot são instâncias de máquina virtual (VM) que podem ser adquiridas com um desconto significativo. No entanto, o Compute Engine pode interromper ou excluir VMs spot a qualquer momento para recuperar a capacidade. Use as VMs do Spot para executar cargas de trabalho tolerantes a falhas, como jobs de processamento em lote ou aplicativos sem estado, a um baixo custo.

Para outros métodos que podem ser usados para criar MIGs, consulte Cenários básicos para criar um MIG.

Antes de começar

  • Verifique se você tem cota suficiente para os recursos que quer solicitar. Para mais informações, consulte Cotas de alocação.
  • Verifique a disponibilidade de recursos na região ou zona em que você quer criar VMs spot. Isso ajuda a reduzir as chances de encontrar erros de disponibilidade de recursos ao criar VMs. Para instruções, consulte Verificar a disponibilidade de VMs spot.
  • Configure a autenticação, caso ainda não tenha feito isso. Com isso, você confirma 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:

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

    Console

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

    gcloud

    1. Instale a CLI do Google Cloud. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:

      gcloud init

      Se você usa um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  • 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 CLI do Google Cloud.

      Se você usa um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

    Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .

Funções exigidas

Para receber as permissões necessárias para criar MIGs que usam VMs Spot, 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 MIGs que usam VMs spot. Para acessar 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 MIGs que usam VMs do Spot:

  • Para criar um modelo de instância: compute.instanceTemplates.create no projeto
  • Para criar um MIG: compute.instanceGroupManagers.create no projeto

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

Criar um MIG que use VMs Spot

Para criar um MIG que use VMs Spot, siga estas etapas:

  1. Criar um modelo de instância configurado para criar VMs spot

  2. Criar um MIG regional ou zonal

Criar um modelo de instância configurado para criar VMs Spot

Para criar um modelo de instância configurado para criar VMs Spot, 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 um modelo de instância é exibida.

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

  4. Na seção Local, selecione o tipo de modelo de instância que você quer criar:

    • Para um modelo de instância regional, selecione Regional e escolha a região em que você quer criar o modelo. Com base no tipo de máquina que você quer que as VMs do Spot usem, especifique uma região compatível.

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

  5. Na seção Configuração da máquina, selecione uma série de máquinas compatível para VMs spot.

  6. Na seção Modelo de provisionamento, faça o seguinte:

    1. Na lista Modelo de provisionamento de VM, selecione Spot.

    2. Para especificar se as VMs Spot serão interrompidas ou excluídas na preempção, na lista No encerramento da VM, selecione uma das seguintes opções:

      • Para interromper as VMs spot, selecione Parar.

      • Para excluir VMs Spot, 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. Clique em Criar.

gcloud

Para criar um modelo de instância configurado para criar VMs Spot, use o comando gcloud compute instance-templates create.

O 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=TERMINATION_ACTION \
    --machine-type=MACHINE_TYPE \
    --provisioning-model=SPOT

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

  • REGION: a região em que o modelo de instância será criado. Com base no tipo de máquina que você quer que as VMs Spot usem, especifique uma região compatível.

  • TERMINATION_ACTION: se o Compute Engine interrompe ou exclui as VMs spot na preempção. É necessário especificar se as VMs serão interrompidas (STOP) ou excluídas (DELETE).

  • MACHINE_TYPE: um tipo de máquina compatível para VMs Spot. 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.

REST

Para criar um modelo de instância configurado para criar VMs Spot, faça uma das seguintes solicitações POST:

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"
      }
    ],
    "scheduling": {
      "instanceTerminationAction": "TERMINATION_ACTION",
      "provisioningModel": "SPOT"
    }
  }
}

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. Com base no tipo de máquina que você quer que as VMs Spot usem, especifique uma região compatível.

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

  • 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. Ela 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 saber como usar famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

  • MACHINE_TYPE: um tipo de máquina compatível para VMs Spot. 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.

  • TERMINATION_ACTION: se o Compute Engine interrompe ou exclui as VMs spot na preempção. É necessário especificar se as VMs serão interrompidas (STOP) ou excluídas (DELETE).

Depois de criar o modelo de instância, você pode conferir os detalhes dele para revisar as propriedades.

Criar um MIG regional ou zonal

Para criar um MIG regional ou zonal, 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.

  5. No campo Número de instâncias, insira o número de VMs Spot a serem criadas no MIG. Se a carga de trabalho exigir VMs com nomes específicos, insira 0 para pular a criação de VMs nesta etapa. Depois de criar o MIG, adicione VMs com nomes específicos a ele.

  6. Na seção Local, especifique se você quer criar um MIG zonal ou regional 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.

  7. Clique em Criar.

gcloud

Para criar um MIG, use o comando gcloud compute instance-groups managed create.

Com base no tipo de MIG que você quer criar, inclua as seguintes flags no comando:

  • Para criar um MIG zonal, inclua a flag --zone:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --size=SIZE \
        --template=INSTANCE_TEMPLATE_URL \
        --zone=ZONE
    
  • Para criar um MIG regional, inclua a flag --region:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --size=SIZE \
        --template=INSTANCE_TEMPLATE_URL \
        --region=REGION
    

Substitua:

  • INSTANCE_GROUP_NAME: o nome do MIG;

  • INSTANCE_TEMPLATE_URL: o URL do modelo de instância que você criou na seção anterior. 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

  • SIZE: o número de VMs spot a serem criadas no MIG. Se sua carga de trabalho exigir nomes de VM específicos, especifique 0 para pular a criação de VMs nesta etapa. Depois de criar o MIG, adicione VMs com nomes específicos a ele.

  • ZONE: a zona em que o MIG zonal será criado. Se você usar um modelo de instância regional para criar o MIG, especifique uma zona na mesma região do modelo.

  • REGION: a região em que o MIG regional será criado. Se você usar um modelo de instância regional para criar o MIG, especifique a mesma região do modelo.

REST

Para criar um MIG, faça uma solicitação POST a um dos seguintes métodos:

  • 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",
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ],
      "targetSize": SIZE
    }
    
  • 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",
      "instanceTemplate": "INSTANCE_TEMPLATE_URL",
      "targetSize": SIZE
    }
    

Substitua:

  • PROJECT_ID: o ID do projeto em que o MIG regional ou zonal será criado.

  • ZONE: a zona em que o MIG zonal será criado. Se você usar um modelo de instância regional para criar o MIG, especifique uma zona na mesma região do modelo.

  • REGION: a região em que o MIG regional será criado. Se você usar um modelo de instância regional para criar o MIG, especifique a mesma região do modelo.

  • INSTANCE_GROUP_NAME: o nome do MIG;

  • INSTANCE_TEMPLATE_URL: o URL do modelo de instância que você criou na seção anterior. 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

  • SIZE: o número de VMs spot a serem criadas no MIG. Se sua carga de trabalho exigir nomes de VM específicos, especifique 0 para pular a criação de VMs nesta etapa. Depois de criar o MIG, adicione VMs com nomes específicos a ele.

Depois de criar o MIG, é possível conferir os detalhes dele para analisar as propriedades.

A seguir