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
- Leia sobre VMs spot, especialmente as limitações.
- Verifique se você tem cota suficiente para os recursos que quer solicitar. Para mais informações, consulte Cotas de alocação.
-
Antes de criar VMs Spot para uma carga de trabalho, siga estas etapas:
Configure sua carga de trabalho para gerenciar a remoção. Recomendamos que você prepare um script para processar a preempção que seja executado como parte da carga de trabalho ou seja um arquivo que possa ser adicionado aos metadados da VM para ser executado durante o desligamento. Para instruções, consulte Gerenciar a preempção de VMs spot.
Recomendamos que você consulte os dados das VMs spot para escolher um tipo de máquina e um local. Ao selecionar um tipo de máquina e um local com maior disponibilidade de recursos, você aumenta suas chances de evitar erros de disponibilidade de recursos e ter um tempo de atividade mais longo antes da remoção.
Para dados históricos de preempção e preços, que são especialmente úteis ao planejar cargas de trabalho de longo prazo, consulte Conferir a taxa de preempção e os dados de preços das VMs spot.
Para dados de disponibilidade atuais, que são especialmente úteis imediatamente antes de criar VMs spot para cargas de trabalho de curto prazo, consulte Ver 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 Cloud de Confiance by S3NS . 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 Cloud de Confiance para acessar os serviços e as APIs Cloud de Confiance by S3NS , não é necessário configurar a autenticação.
gcloud
-
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud init
-
- 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 faça login na CLI gcloud com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Cloud de Confiance .
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.createno projeto -
Para criar um MIG:
compute.instanceGroupManagers.createno 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:
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
No console do Cloud de Confiance , acesse a página Modelos de instância.
Clique em Criar modelo de instância. A página Criar um modelo de instância é exibida.
No campo Nome, insira um nome para o modelo de instância.
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 com disponibilidade.
Para um modelo de instância global, selecione Global.
Na seção Configuração da máquina, selecione uma série de máquinas compatível para VMs spot.
Na seção Modelo de provisionamento, faça o seguinte:
Na lista Modelo de provisionamento de VM, selecione Spot. A seção Configurações avançadas do modelo de provisionamento de VM é aberta.
Na lista Duração do aviso de remoção, selecione uma opção com base em como você quer lidar com a remoção.
Se você selecionar 120 segundos (recomendado), processe a preempção na sua carga de trabalho antes de criar uma VM spot. Por exemplo, verifique se sua carga de trabalho inclui um script para salvar seu progresso que aguarda a execução até que a remoção seja detectada.
Se você selecionar 0 segundos (padrão), processe a preempção usando um script de encerramento. Antes de criar uma VM Spot, crie um arquivo que contenha um script de desligamento que salve seu progresso quando o desligamento for causado por preempção. Anexe esse script de desligamento conforme explicado em uma etapa posterior.
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 do Spot, selecione Parar.
Para excluir VMs Spot, selecione Excluir.
Para adicionar um script de desligamento, siga estas etapas. Se você selecionou 0 segundos (padrão) para a Duração do aviso de remoção, esta etapa é necessária para lidar com a remoção. Caso contrário, se você selecionou 120 segundos, esta etapa é opcional.
- Expanda a seção Opções avançadas.
- Expanda a seção Gerenciamento.
- Na seção Metadados, clique em Adicionar item.
- No campo Chave, insira
shutdown-scriptpara a chave de metadados. - No campo Valor, adicione o conteúdo de um script de desligamento que lida com a remoção.
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.
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 \
--preemption-notice-duration=PREEMPTION_NOTICE_DURATION \
--metadata shutdown-script=SHUTDOWN_SCRIPT
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ê especificardebian-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 com disponibilidade.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 com VMs Spot. Se você especificar um tipo de máquina N1, inclua a flag--acceleratorpara definir o número e o tipo de GPUs a serem anexadas às VMs.PREEMPTION_NOTICE_DURATION: se uma duração de aviso de remoção será ativada. Para a CLI gcloud, o valor precisa ser120sou0s.Se você especificar
120s(recomendado), processe a remoção preventiva na sua carga de trabalho. (Também é possível especificar um script de desligamento.)Se você especificar
0s(padrão), processe a preempção em um script de desligamento.
SHUTDOWN_SCRIPT: um script de desligamento.Se você definir
PREEMPTION_NOTICE_DURATIONcomo0s(padrão), especifique um script de desligamento para lidar com a remoção. Para mais informações sobre como formatar e especificar um script de encerramento, consulte Executar scripts de encerramento.Caso contrário, se você não quiser especificar um script de desligamento, remova a flag
--metadata shutdown-script.
REST
Para criar um modelo de instância configurado para criar
VMs Spot, faça uma das seguintes solicitações POST:
Para criar um modelo de instância regional: método
regionInstanceTemplates.insertPara criar um modelo de instância global: método
instanceTemplates.insert
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",
"preemptionNoticeDuration": { "seconds": PREEMPTION_NOTICE_DURATION }
},
"metadata": {
"items": [
{
"key": "shutdown-script",
"value": "SHUTDOWN_SCRIPT"
}
]
}
}
}
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 com disponibilidade.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ê especificarfamily/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 com VMs Spot. Se você especificar um tipo de máquina N1, inclua o campoguestAcceleratorspara 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).PREEMPTION_NOTICE_DURATION: se uma duração de aviso de remoção será ativada. Para REST, o valor precisa ser120ou0.Se você especificar
120(recomendado), processe a remoção preventiva na sua carga de trabalho. (Também é possível especificar um script de desligamento.)Se você especificar
0(padrão), processe a preempção em um script de desligamento.
SHUTDOWN_SCRIPT: um script de desligamento.Se você definir
PREEMPTION_NOTICE_DURATIONcomo0s(padrão), especifique um script de desligamento para lidar com a remoção. Para mais informações sobre como formatar e especificar um script de encerramento, consulte Executar scripts de encerramento.Caso contrário, se você não quiser especificar um script de desligamento, remova o campo
metadatae os subcampos.
TERMINATION_ACTION: opcional: especifique qual ação de encerramento a ser realizada quando o Compute Engine forçar a interrupção da VM,STOP(comportamento padrão) ouDELETE.
Depois de criar o modelo de instância, é possível 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
No console, do Cloud de Confiance , acesse a página Grupos de instâncias.
Clique em Criar grupo de instâncias. A página Criar grupo de instâncias é aberta.
No campo Nome, insira um nome para o MIG.
Na lista Modelo de instância, selecione o modelo de instância que você criou na seção anterior.
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
0para pular a criação de VMs nesta etapa. Depois de criar o MIG, adicione VMs com nomes específicos a ele.Na seção Local, especifique se você quer criar um MIG zonal ou regional da seguinte maneira:
Para criar um MIG zonal, selecione Zona única. Ou, para criar um MIG regional, selecione Várias zonas.
Selecione a Região e as Zonas do MIG.
Clique em Criar.
gcloud
Para criar um MIG, use o
comando gcloud compute instance-groups managed create.
De acordo com o 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=ZONEPara 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_IDPara um modelo de instância global:
INSTANCE_TEMPLATE_ID
SIZE: o número de VMs do Spot a serem criadas no MIG. Se a carga de trabalho exigir nomes de VM específicos, especifique0para 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
POSTpara o métodoinstanceGroupManagers.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
POSTpara o métodoregionInstanceGroupManagers.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_IDPara um modelo de instância global:
INSTANCE_TEMPLATE_ID
SIZE: o número de VMs do Spot a serem criadas no MIG. Se a carga de trabalho exigir nomes específicos de VM, especifique0para 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, você pode conferir os detalhes dele para revisar as propriedades.
A seguir
Saiba mais sobre as práticas recomendadas para VMs spot.
Saiba mais sobre como reparar VMs para alta disponibilidade em MIGs.
Saiba mais sobre como escalonar automaticamente VMs em MIGs.
Saiba mais sobre MIGs com estado.