Neste documento, explicamos como usar o encerramento automático para limitar o ambiente de execução de instâncias de máquina virtual (VM) novas ou atuais e como monitorar esse ambiente.
É possível otimizar cargas de trabalho temporárias limitando de modo automático os ambientes de execução da VM, o que ajuda a minimizar os custos e liberar cotas. O encerramento automático permite programar uma VM para ser encerrada (interrompida ou excluída) ao atingir um limite de tempo específico (duração ou tempo).
Para saber como interromper uma VM, consulte Interromper e iniciar uma VM. Para saber mais sobre como excluir uma VM, consulte Excluir uma VM.
Como alternativa, para programar ambientes de execução de VM com relação a cargas de trabalho recorrentes, consulte Programar uma VM para ser iniciada e encerrada.
Antes de começar
-
Para receber as permissões necessárias para o encerramento automático, 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.Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
-
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
-
Instale a Google Cloud CLI e inicialize-a 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 inicialize-a executando o seguinte comando:
gcloud init
-
Restrições
O encerramento automático tem as seguintes restrições:
O encerramento automático é apagado sempre que a VM for interrompida ou suspensa. Essa restrição visa evitar o encerramento acidental de uma VM que concluiu a execução ou foi encerrada e iniciada novamente sem ser atualizada.
A rescisão automática tem um limite de tempo mínimo de 30 segundos e máximo de 120 dias.
O encerramento automático pode levar até 30 segundos a mais do que a duração ou o tempo especificado para começar o processo de interrupção ou exclusão da VM.
Não é possível usar o encerramento automático com VMs preemptivas legadas. Em vez disso, use o encerramento automático com VMs spot.
Também é possível usar as programações de instância quando você quer programar uma VM para ser encerrada independentemente de interrupções ou com relação a um limite máximo de tempo maior.
Limitar o ambiente de execução de uma nova VM
Confira nas seções a seguir como configurar o encerramento automático ao criar uma nova VM.
Para especificar quando a VM será encerrada, defina o limite de tempo como duration ou tempo.
Definir uma duração
Uma duração representa o ambiente de execução total desejado de uma VM. Para criar uma VM que é encerrada de modo automático após ser executada por uma duração específica, use o console do Google Cloud, a CLI do Google Cloud ou a API Compute Engine.
Console
No console do Google Cloud, acesse a página Criar uma instância.
Na seção Políticas de disponibilidade, abra Configurações avançadas do modelo de provisionamento de VM.
Para ativar o encerramento automático, marque a caixa de seleção Definir um limite de tempo para a VM. O campo Tipo de limite de tempo é exibido.
No campo Tipo de limite de tempo, selecione Por horas (padrão) para especificar o limite de tempo como uma duração. No campo a seguir, insira a duração em horas.
Na lista No encerramento da VM, selecione o que acontece quando o ambiente de execução da VM atinge o limite de tempo especificado:
- Para encerrar a VM de modo automático, selecione Parar (padrão).
- Para excluir a VM, selecione Excluir.
Opcional: especifique outras opções de VM. Para mais informações, consulte Como criar e iniciar uma instância de VM.
Para criar e iniciar a VM, clique em Criar.
gcloud
Para criar uma VM a partir da CLI gcloud, use o
comando gcloud beta compute instances create
.
Para criar uma VM que é encerrada automaticamente após um período específico,
inclua o flag --max-run-duration
. Para especificar a
ação de encerramento, inclua o flag --instance-termination-action
,
que é opcional para VMs do Spot.
gcloud beta compute instances create VM_NAME \ --max-run-duration=DURATION \ --instance-termination-action=TERMINATION_ACTION
Substitua:
VM_NAME
: o nome da nova VM.DURATION
: a duração desejada para a execução da VM antes de ela ser encerrada de modo automático. Formate a duração como o número de dias, horas, minutos e segundos seguidos pord
,h
,m
es
, respectivamente. Por exemplo, especifique30m
para uma duração de 30 minutos ou especifique1d2h3m4s
para uma duração de um dia, duas horas, três minutos e quatro segundos. A duração mínima é de 30 segundos (30s
) e a máxima é de 120 dias (120d
).TERMINATION_ACTION
: a ação de encerramento da VM, que pode ser uma ação de parada (STOP
) ou exclusão (DELETE
). A imposição desse campo como obrigatório ou a inclusão de um valor padrão para ele variam com base no modelo de provisionamento da VM:- Se for uma VM spot (se a VM usar o flag
--provisioning-model=SPOT
), o flag--instance-termination-action=TERMINATION_ACTION
será opcional. Se esse flag for omitida, a ação de encerramento padrão será interrompida. - Caso contrário,
o padrão é
o flag
--instance-termination-action=TERMINATION_ACTION
.
- Se for uma VM spot (se a VM usar o flag
Para mais informações sobre as opções que você pode especificar ao criar uma VM, consulte Como criar e iniciar uma instância de VM.
REST
Para criar uma VM a partir da API Compute Engine, use o
método Beta instances.insert
.
Especifique um nome, um tipo de máquina e um disco de inicialização para a VM.
Para criar uma VM que seja encerrada de modo automático após um período específico,
inclua o campo maxRunDuration
. Para especificar a
ação de encerramento, inclua o campo instanceTerminationAction
,
que é opcional para VMs spot.
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID
/zones/ZONE
/instances { "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "name": "VM_NAME
", "disks": [ { "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot": true } ] "scheduling": { "maxRunDuration": { "seconds": DURATION }, "instanceTerminationAction": "TERMINATION_ACTION" }, }
Substitua:
PROJECT_ID
: o ID do projeto em que a VM será criada.ZONE
: a zona em que a VM será criada. A zona também precisa ser compatível com o tipo de máquina a ser usado na nova VM;MACHINE_TYPE
: o tipo de máquina predefinido ou personalizado da nova VM.VM_NAME
: o nome da nova VM.IMAGE_PROJECT
: o projeto que contém a imagem. Por exemplo, se você especificarfamily/debian-10
como a imagem, especifiquedebian-cloud
como o projeto da imagem.IMAGE
: a imagem da nova VM. Você pode especificar uma versão específica de uma imagem pública ou uma família de imagens. Por exemplo, se você especificarfamily/debian-10
como a imagem edebian-cloud
como o projeto de imagem, o Compute Engine criará uma VM a partir da versão mais recente da imagem do SO na família de imagens Debian 10.DURATION
: a duração em segundos da execução dessa VM antes do encerramento automático. A duração mínima é de 30 segundos (30s
) e a máxima é de 120 dias (120d
).TERMINATION_ACTION
: a ação de encerramento da VM, que pode ser uma ação de parada (STOP
) ou exclusão (DELETE
). A imposição desse campo como obrigatório ou a inclusão de um valor padrão para ele variam com base no modelo de provisionamento da VM:- No caso de uma VM spot (quando ela usa o
campo
"provisioningModel": "SPOT"
), o campo"instanceTerminationAction": "TERMINATION_ACTION"
é opcional. Se esse campo for omitido, a ação de encerramento padrão será interrompida. - Caso contrário, como padrão, o
campo
"instanceTerminationAction": "TERMINATION_ACTION"
é obrigatório.
- No caso de uma VM spot (quando ela usa o
campo
Para mais informações sobre as opções que você pode especificar ao criar uma VM, consulte Como criar e iniciar uma instância de VM.
Definir um tempo
Um tempo representa a data, a hora e o fuso horário em que você quer que a VM seja encerrada. Para criar uma VM que é encerrada automaticamente em um tempo específico, use o console do Google Cloud, a Google Cloud CLI ou a API Compute Engine.
Console
No console do Google Cloud, acesse a página Criar uma instância.
Na seção Políticas de disponibilidade, abra Configurações avançadas do modelo de provisionamento de VM.
Para ativar o encerramento automático, marque a caixa de seleção Definir um limite de tempo para a VM. O campo Tipo de limite de tempo é exibido.
No campo Tipo de limite de tempo, selecione Por data para especificar o limite como um horário e data. No campo a seguir, clique em
Selecionar data e hora e escolha a data, a hora e o fuso horário para o encerramento automático.Na lista No encerramento da VM, selecione o que acontece quando o ambiente de execução da VM atinge o limite de tempo especificado:
- Para encerrar a VM de modo automático, selecione Parar (padrão).
- Para excluir a VM, selecione Excluir.
Opcional: especifique outras opções de VM. Para mais informações, consulte Como criar e iniciar uma instância de VM.
Para criar e iniciar a VM, clique em Criar.
gcloud
Para criar uma VM a partir da CLI gcloud, use o
comando gcloud beta compute instances create
.
Para criar uma VM que é encerrada automaticamente em um horário específico,
é preciso incluir o flag --termination-time
. Para especificar a
ação de encerramento, inclua o flag --instance-termination-action
,
que é opcional para VMs do Spot.
gcloud beta compute instances create VM_NAME \ --termination-time=TIME \ --instance-termination-action=TERMINATION_ACTION
Substitua:
VM_NAME
: o nome da nova VM.TIME
: o tempo em que você quer que a VM seja encerrada automaticamente. O tempo especificado precisa ser pelo menos 30 segundos no futuro e no máximo 120 dias no futuro. Formate o tempo como um carimbo de data/hora RFC 3339:YYYY-MM-DDTHH:MM:SSOFFSET
Substitua:
YYYY-MM-DD
: uma data formatada como um ano de quatro dígitos, um mês de dois dígitos e um dia de dois dígitos do mês, separado por hifens.HH:MM:SS
: um horário formatado como uma hora de dois dígitos usando o horário de 24 horas, minutos de dois dígitos e segundos de dois dígitos separados por hífens.OFFSET
: fuso horário formatado como um deslocamento Tempo Universal Coordenado (UTC). Por exemplo, para usar o Horário Padrão do Pacífico (PST), que é oito horas antes do UTC, especifique-08:00
. Como alternativa, para não usar deslocamento (UTC+0), especifiqueZ
.
TERMINATION_ACTION
: a ação de encerramento desta VM, que pode ser parar (STOP
) ou excluir (DELETE
). Se o campo é obrigatório ou tem um valor padrão varia com base no modelo de provisionamento da VM:- Se for uma VM spot (se a VM usar o flag
--provisioning-model=SPOT
), o flag--instance-termination-action=TERMINATION_ACTION
será opcional. Se esse flag for omitida, a ação de encerramento padrão será interrompida. - Caso contrário,
o padrão é
o flag
--instance-termination-action=TERMINATION_ACTION
.
- Se for uma VM spot (se a VM usar o flag
Para mais informações sobre as opções que você pode especificar ao criar uma VM, consulte Como criar e iniciar uma instância de VM.
REST
Para criar uma VM a partir da API Compute Engine, use o
método Beta instances.insert
.
Especifique um nome, um tipo de máquina e um disco de inicialização para a VM.
Para criar uma VM que é encerrada de modo automático em um horário específico,
é preciso incluir o campo terminationTime
. Para especificar a
ação de encerramento, inclua o campo instanceTerminationAction
,
que é opcional para VMs spot.
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID
/zones/ZONE
/instances { "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "name": "VM_NAME
", "disks": [ { "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot": true } ] "scheduling": { "terminationTime": "TIME", "instanceTerminationAction": "TERMINATION_ACTION" }, }
Substitua:
PROJECT_ID
: o ID do projeto em que a VM será criada.ZONE
: a zona em que a VM será criada. A zona também precisa ser compatível com o tipo de máquina a ser usado na nova VM;MACHINE_TYPE
: o tipo de máquina predefinido ou personalizado da nova VM.VM_NAME
: o nome da nova VM.IMAGE_PROJECT
: o projeto que contém a imagem. Por exemplo, se você especificarfamily/debian-10
como a imagem, especifiquedebian-cloud
como o projeto da imagem.IMAGE
: a imagem da nova VM. Você pode especificar uma versão específica de uma imagem pública ou uma família de imagens. Por exemplo, se você especificarfamily/debian-10
como a imagem edebian-cloud
como o projeto de imagem, o Compute Engine criará uma VM a partir da versão mais recente da imagem do SO na família de imagens Debian 10.TIME
: o tempo em que você quer que a VM seja encerrada automaticamente. O tempo especificado precisa ser pelo menos 30 segundos no futuro e no máximo 120 dias no futuro. Formate o tempo como um carimbo de data/hora RFC 3339:YYYY-MM-DDTHH:MM:SSOFFSET
Substitua:
YYYY-MM-DD
: uma data formatada como um ano de quatro dígitos, um mês de dois dígitos e um dia de dois dígitos do mês, separado por hifens.HH:MM:SS
: um horário formatado como uma hora de dois dígitos usando o horário de 24 horas, minutos de dois dígitos e segundos de dois dígitos separados por hífens.OFFSET
: fuso horário formatado como um deslocamento Tempo Universal Coordenado (UTC). Por exemplo, para usar o Horário Padrão do Pacífico (PST), que é oito horas antes do UTC, especifique-08:00
. Como alternativa, para não usar deslocamento (UTC+0), especifiqueZ
.
TERMINATION_ACTION
: a ação de encerramento da VM, que pode ser uma ação de parada (STOP
) ou exclusão (DELETE
). A imposição desse campo como obrigatório ou a inclusão de um valor padrão para ele variam com base no modelo de provisionamento da VM:- No caso de uma VM spot (quando ela usa o
campo
"provisioningModel": "SPOT"
), o campo"instanceTerminationAction": "TERMINATION_ACTION"
é opcional. Se esse campo for omitido, a ação de encerramento padrão será interrompida. - Caso contrário, como padrão, o
campo
"instanceTerminationAction": "TERMINATION_ACTION"
é obrigatório.
- No caso de uma VM spot (quando ela usa o
campo
Para mais informações sobre as opções que você pode especificar ao criar uma VM, consulte Como criar e iniciar uma instância de VM.
Limitar o ambiente de execução de uma VM existente
É possível limitar o ambiente de execução de uma VM atual atualizando a programação dela. Se você ainda não sabe como definir as configurações do encerramento automático, reveja primeiro as seções anteriores sobre como limitar o ambiente de execução de uma nova VM.
É possível usar o console do Google Cloud, a CLI do Google Cloud ou a API Compute Engine para atualizar a programação da VM, conforme descrito nesta seção. No entanto, esse método exige que você primeiro interrompa a VM, defina a programação dela e a reinicie. Como alternativa, para atualizar várias propriedades da VM de uma só vez e interromper e reiniciar uma VM de modo automático durante a definição das propriedades dela, consulte Atualizar as propriedades da instância.
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Na coluna Nome, clique no nome da VM que você quer atualizar.
Na página Detalhes da instância, siga estas etapas:
- Se a VM estiver em execução, clique em Parar.
- Para editar a VM, clique em Editar.
Na página Editar instância, siga estas etapas:
Na seção Políticas de disponibilidade, modifique a caixa de seleção Definir um limite de tempo para a VM e todos os campos abaixo dela como quiser.
Para saber como configurar as propriedades relacionadas ao encerramento automático, consulte Limitar o ambiente de execução de uma nova VM.
Para salvar as alterações, clique em Save.
Opcional: para começar a executar a VM agora, clique em Iniciar.
gcloud
Para atualizar a programação de uma VM com relação ao encerramento automático usando a gcloud CLI, siga estas etapas:
Se a VM estiver em execução, interrompa-a usando o comando
gcloud compute instances stop
:gcloud compute instances stop VM_NAME
Substitua
VM_NAME
pelo nome da VM a ser atualizada.Use o comando
gcloud beta compute instances set-scheduling
para atualizar as configurações da VM com relação ao encerramento automático. É necessário incluir o flag--max-run-duration
ou--termination-time
para definir o limite de tempo como uma duração ou tempo, respectivamente:Para definir uma duração, use o seguinte comando:
gcloud beta compute instances set-scheduling VM_NAME \ --max-run-duration=DURATION \ --instance-termination-action=TERMINATION_ACTION
Para definir um tempo, use o seguinte comando:
gcloud beta compute instances set-scheduling VM_NAME \ --termination-time=TIME \ --instance-termination-action=TERMINATION_ACTION
Substitua:
VM_NAME
: o nome da VM que você quer atualizar.DURATION
: a duração desejada para a execução da VM antes de ela ser encerrada de modo automático. Formate a duração como o número de dias, horas, minutos e segundos seguidos pord
,h
,m
es
, respectivamente. Por exemplo, especifique30m
para uma duração de 30 minutos ou especifique1d2h3m4s
para uma duração de um dia, duas horas, três minutos e quatro segundos. A duração mínima é de 30 segundos (30s
) e a máxima é de 120 dias (120d
).TIME
: o tempo em que você quer que a VM seja encerrada automaticamente. O tempo especificado precisa ser pelo menos 30 segundos no futuro e no máximo 120 dias no futuro. Formate o tempo como um carimbo de data/hora RFC 3339:YYYY-MM-DDTHH:MM:SSOFFSET
Substitua:
YYYY-MM-DD
: uma data formatada como um ano de quatro dígitos, um mês de dois dígitos e um dia de dois dígitos do mês, separado por hifens.HH:MM:SS
: um horário formatado como uma hora de dois dígitos usando o horário de 24 horas, minutos de dois dígitos e segundos de dois dígitos separados por hífens.OFFSET
: fuso horário formatado como um deslocamento Tempo Universal Coordenado (UTC). Por exemplo, para usar o Horário Padrão do Pacífico (PST), que é oito horas antes do UTC, especifique-08:00
. Como alternativa, para não usar deslocamento (UTC+0), especifiqueZ
.
TERMINATION_ACTION
: a ação de encerramento desta VM, que pode ser parar (STOP
) ou excluir (DELETE
). Se o campo é obrigatório ou tem um valor padrão varia com base no modelo de provisionamento da VM:- Se for uma VM spot (se a VM usar o flag
--provisioning-model=SPOT
), o flag--instance-termination-action=TERMINATION_ACTION
será opcional. Se esse flag for omitida, a ação de encerramento padrão será interrompida. - Caso contrário,
o padrão é
o flag
--instance-termination-action=TERMINATION_ACTION
.
- Se for uma VM spot (se a VM usar o flag
Para que a VM comece a ser executada, inicie-a usando o comando
gcloud compute instances start
:gcloud compute instances start VM_NAME
Substitua
VM_NAME
pelo nome da VM.
REST
Para atualizar a programação de uma VM para o encerramento automático usando a API Compute Engine, siga estas etapas:
Se a VM estiver em execução, interrompa-a usando o método
instances.stop
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
Substitua:
PROJECT_ID
: o ID do projeto que contém a VM.ZONE
: a zona que contém a VM.VM_NAME
: o nome da VM que você quer atualizar.
Atualize a propriedade
scheduling
da VM incluindo campos para o encerramento automático por meio do método Betainstances.setScheduling
. Inclua o campomaxRunDuration
outerminationTime
para definir o limite de tempo como uma duração ou tempo, respectivamente:Para definir uma duração, use a seguinte solicitação:
POST https://compute.googleapis.com/compute/beta/projects/
PROJECT_ID
/zones/ZONE
/instances/VM_NAME/setScheduling { "maxRunDuration": { "seconds": DURATION }, "instanceTerminationAction": "TERMINATION_ACTION" }Para definir um tempo, use a seguinte solicitação:
POST https://compute.googleapis.com/compute/beta/projects/
PROJECT_ID
/zones/ZONE
/instances/VM_NAME/setScheduling { "terminationTime": "TIME", "instanceTerminationAction": "TERMINATION_ACTION" }
Substitua:
PROJECT_ID
: o ID do projeto em que a VM será criada.ZONE
: a zona em que a VM será criada. A zona também precisa ser compatível com o tipo de máquina a ser usado na nova VM;MACHINE_TYPE
: o tipo de máquina predefinido ou personalizado da nova VM.VM_NAME
: o nome da nova VM.IMAGE_PROJECT
: o projeto que contém a imagem. Por exemplo, se você especificarfamily/debian-10
como a imagem, especifiquedebian-cloud
como o projeto da imagem.IMAGE
: a imagem da nova VM. Você pode especificar uma versão específica de uma imagem pública ou uma família de imagens. Por exemplo, se você especificarfamily/debian-10
como a imagem edebian-cloud
como o projeto de imagem, o Compute Engine criará uma VM a partir da versão mais recente da imagem do SO na família de imagens Debian 10.DURATION
: a duração em segundos da execução dessa VM antes do encerramento automático. A duração mínima é de 30 segundos (30s
) e a máxima é de 120 dias (120d
).TIME
: o tempo em que você quer que a VM seja encerrada automaticamente. O tempo especificado precisa ser pelo menos 30 segundos no futuro e no máximo 120 dias no futuro. Formate o tempo como um carimbo de data/hora RFC 3339:YYYY-MM-DDTHH:MM:SSOFFSET
Substitua:
YYYY-MM-DD
: uma data formatada como um ano de quatro dígitos, um mês de dois dígitos e um dia de dois dígitos do mês, separado por hifens.HH:MM:SS
: um horário formatado como uma hora de dois dígitos usando o horário de 24 horas, minutos de dois dígitos e segundos de dois dígitos separados por hífens.OFFSET
: fuso horário formatado como um deslocamento Tempo Universal Coordenado (UTC). Por exemplo, para usar o Horário Padrão do Pacífico (PST), que é oito horas antes do UTC, especifique-08:00
. Como alternativa, para não usar deslocamento (UTC+0), especifiqueZ
.
TERMINATION_ACTION
: a ação de encerramento desta VM, que pode ser parar (STOP
) ou excluir (DELETE
). Se o campo é obrigatório ou tem um valor padrão varia com base no modelo de provisionamento da VM:- No caso de uma VM spot (quando ela usa o
campo
"provisioningModel": "SPOT"
), o campo"instanceTerminationAction": "TERMINATION_ACTION"
é opcional. Se esse campo for omitido, a ação de encerramento padrão será interrompida. - Caso contrário, como padrão, o
campo
"instanceTerminationAction": "TERMINATION_ACTION"
é obrigatório.
- No caso de uma VM spot (quando ela usa o
campo
Para que a VM comece a ser executada, inicie-a usando o método
instances.start
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
Substitua:
PROJECT_ID
: o ID do projeto que contém a VM.ZONE
: a zona que contém a VM.VM_NAME
: o nome da VM.
Monitorar o ambiente de execução de uma VM
Para monitorar o ambiente de execução de uma VM, por exemplo, para conferir se uma VM foi interrompida antes de ser programada para o encerramento automático, consulte as operações da VM. Para identificar operações de VM causadas pelo encerramento automático, procure os seguintes tipos de operação:
compute.instances.deferredStop
para uma ação de encerramento de paradacompute.instances.deferredDelete
para uma ação de encerramento de exclusão
A seguir
- Saiba como otimizar ainda mais as VMs:
- Se as cargas de trabalho forem tolerantes a falhas, use VMs spot para receber descontos significativos e uma cota dedicada opcional.
- Saiba mais sobre outros recursos do Compute Engine para programar VMs: