Neste documento, explicamos como impedir que as instâncias do Compute Engine consumam reservas. Para saber mais sobre reservas, consulte Reservas para recursos zonais do Compute Engine.
Reservas consumidas automaticamente permitem que instâncias com propriedades correspondentes às reservas as consumam automaticamente. Para impedir que as instâncias consumam uma reserva, faça o seguinte:
Configure as instâncias para não consumir reservas, conforme descrito neste documento.
Crie ou atualize instâncias com propriedades que não correspondam à reserva.
É possível evitar o consumo de reservas quando você quer usar as instâncias para tarefas como testes, depuração ou implantações isoladas.
Limitações
Só é possível atualizar uma instância para não consumir reservas se ela estiver configurada para consumir automaticamente as reservas correspondentes.
Antes de começar
-
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
-
Instale a CLI do Google Cloud. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud initAo usar 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.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Go
Para usar os exemplos de Go nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para usar os exemplos do Java nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para usar os exemplos do Node.js nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para usar os exemplos do Python nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para CLI gcloud.
Instale a CLI do Google Cloud.
Ao usar 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
impedir que uma instância de computação consuma reservas,
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 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 impedir que uma instância de computação consuma reservas. 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 impedir que uma instância de computação consuma reservas:
-
Para criar reservas:
compute.reservations.createno projeto -
Para criar instâncias:
compute.instances.createno projeto- Usar uma imagem personalizada para criar a VM:
compute.images.useReadOnlyna imagem - Utilizar um snapshot para criar a VM:
compute.snapshots.useReadOnlyno snapshot - Usar um modelo de instância para criar a VM:
compute.instanceTemplates.useReadOnlyno modelo de instância - Atribuir uma rede legada à VM:
compute.networks.useno projeto - Especificar um endereço IP estático para a VM:
compute.addresses.useno projeto - Atribuir um endereço IP externo à VM ao usar uma rede legada:
compute.networks.useExternalIpno projeto - Especificar uma sub-rede para a VM:
compute.subnetworks.useno projeto ou na sub-rede escolhida - Atribuir um endereço IP externo à VM ao usar uma rede VPC:
compute.subnetworks.useExternalIpno projeto ou na sub-rede escolhida - Definir os metadados da instância da VM:
compute.instances.setMetadatano projeto - Definir tags para a VM:
compute.instances.setTagsna VM - Definir rótulos para a VM:
compute.instances.setLabelsna VM - Definir uma conta de serviço para a VM usar:
compute.instances.setServiceAccountna VM - Criar um disco para a VM:
compute.disks.createno projeto - Anexar um disco atual no modo somente leitura ou de leitura e gravação:
compute.disks.useno disco - Anexar um disco atual no modo somente leitura:
compute.disks.useReadOnlyno disco
-
Para criar modelos de instância:
compute.instanceTemplates.createno projeto
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Impedir o consumo de reserva
Para evitar que uma instância de computação consuma reservas, defina a propriedade de afinidade de reserva (reservationAffinity) para não consumir reservas. Essa propriedade controla se uma instância pode consumir reservas correspondentes, uma reserva específica ou nenhuma reserva.
Para impedir que uma ou mais instâncias consumam reservas, use um dos seguintes métodos:
Impedir o consumo em uma instância atual
É possível atualizar uma instância em execução para que ela não consuma mais reservas automaticamente. É necessário reiniciar a instância para que as mudanças entrem em vigor, conforme descrito nesta seção.
Para impedir que uma instância consuma reservas, selecione uma das seguintes opções:
gcloud
Crie um arquivo YAML vazio.
Para exportar as propriedades de uma instância para o arquivo YAML que você acabou de criar, use o comando
gcloud compute instances export:gcloud compute instances export INSTANCE_NAME \ --destination=YAML_FILE \ --zone=ZONESubstitua:
INSTANCE_NAME: o nome da instância.YAML_FILE: o caminho para o arquivo YAML vazio que você criou na etapa anterior.ZONE: a zona em que a instância está.
No arquivo de configuração YAML, defina
consumeReservationTypecomoNO_RESERVATION:reservationAffinity: consumeReservationType: NO_RESERVATIONPara atualizar e reiniciar a instância, use o comando
gcloud compute instances update-from-filecom a flag--most-disruptive-allowed-actiondefinida comoRESTART:gcloud compute instances update-from-file INSTANCE_NAME \ --most-disruptive-allowed-action=RESTART \ --source=YAML_FILE \ --zone=ZONESubstitua:
INSTANCE_NAME: o nome da instância.YAML_FILE: o caminho para o arquivo YAML com os dados de configuração que você modificou na etapa anterior.ZONE: a zona em que a instância está.
REST
Para conferir as propriedades de uma instância atual, faça uma solicitação
GETpara o métodoinstances.get:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAMESubstitua:
PROJECT_ID: o ID do projeto em que você criou a instância.ZONE: a zona em que a instância está.INSTANCE_NAME: o nome da instância.
Armazene a saída da solicitação
GETem um arquivo ou editor de texto. Modifique a saída copiada para mudar o campoconsumeReservationTypeparaNO_RESERVATION:{ ... "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" }, ... }Para atualizar e reiniciar a instância, faça uma solicitação
PUTao métodoinstances.update. Na solicitação, faça o seguinte:No URL da solicitação, inclua o parâmetro de consulta
mostDisruptiveAllowedActiondefinido comoRESTART.Para o corpo da solicitação, use a saída da solicitação
GETque você editou em uma etapa anterior.
A solicitação é semelhante ao exemplo a seguir:
PUT https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central-1/instances/instance-01?mostDisruptiveAllowedAction=RESTART { ... "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" }, ... }
Para mais informações sobre como atualizar uma instância, consulte Atualizar propriedades da instância.
Evitar o consumo ao criar uma instância
Para criar uma instância de computação que não possa consumir reservas, selecione uma das seguintes opções:
Console
No console do Google Cloud , acesse a página Criar uma instância.
No campo Nome, dê um nome para a instância.
Nas listas Região e Zona, selecione a região e a zona em que a instância será criada.
Especifique o tipo de máquina a ser usado para a instância.
No menu de navegação, clique em Avançado.
Na seção Reservas, selecione Não usar uma reserva.
Clique em Criar.
gcloud
Para criar uma instância que não possa consumir reservas, use o
comando gcloud compute instances create
com a flag --reservation-affinity definida como none:
gcloud compute instances create INSTANCE_NAME \
--machine-type=MACHINE_TYPE \
--reservation-affinity=none \
--zone=ZONE
Substitua:
INSTANCE_NAME: o nome da instância.MACHINE_TYPE: o tipo de máquina a ser usado para a instância.ZONE: a zona em que a instância será criada.
Go
Para criar uma instância que não possa consumir reservas, use o seguinte exemplo de código:
Java
Para criar uma instância que não possa consumir reservas, use o seguinte exemplo de código:
Node.js
Para criar uma instância que não possa consumir reservas, use o seguinte exemplo de código:
Python
Para criar uma instância que não possa consumir reservas, use o seguinte exemplo de código:
REST
Para criar uma instância que não possa consumir reservas, faça uma solicitação POST
para o
método instances.insert.
No corpo da solicitação, inclua o campo consumeReservationType definido como
NO_RESERVATION:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
"name": "INSTANCE_NAME",
"machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"reservationAffinity": {
"consumeReservationType": "NO_RESERVATION"
}
}
Substitua:
PROJECT_ID: o ID do projeto em que você quer criar a instância.ZONE: a zona em que a instância será criada.INSTANCE_NAME: o nome da instância.MACHINE_TYPE: o tipo de máquina a ser usado para a instância.IMAGE_PROJECT: o projeto de imagem que contém a imagem do SO, 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, por exemplo,
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.
Saiba como criar uma instância em Criar e iniciar uma instância do Compute Engine.
Evitar o consumo ao criar instâncias em massa
Para criar instâncias de computação em massa que não podem consumir reservas, selecione uma das seguintes opções:
gcloud
Para criar instâncias em massa que não podem consumir reservas, use o
comando gcloud compute instances bulk create
com a flag --reservation-affinity definida como none.
Por exemplo, para criar instâncias em massa em uma única zona e especificar um padrão de nome, execute o seguinte comando:
gcloud compute instances bulk create \
--count=COUNT \
--machine-type=MACHINE_TYPE \
--name-pattern="NAME_PATTERN" \
--reservation-affinity=none \
--zone=ZONE
Substitua:
COUNT: o número de instâncias que serão criadas.MACHINE_TYPE: o tipo de máquina a ser usado para as instâncias.NAME_PATTERN: o padrão de nome das instâncias. Para substituir uma sequência de números no nome de uma instância, use uma sequência de caracteres hash (#). Por exemplo, usarinstance-#para o padrão de nome gera instâncias com nomes que começam cominstance-1,instance-2e continuam até o número de instâncias especificado porCOUNT.ZONE: a zona em que as instâncias serão criadas em massa.
REST
Para criar instâncias em massa que não podem consumir reservas, faça uma solicitação POST
para o
método instances.bulkInsert.
No corpo da solicitação, inclua o campo consumeReservationType definido como
NO_RESERVATION.
Por exemplo, para criar instâncias em massa em uma única zona e especificar um padrão de nome, faça uma solicitação da seguinte maneira:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"reservationAffinity": {
"consumeReservationType": "NO_RESERVATION"
}
}
}
Substitua:
PROJECT_ID: o ID do projeto em que as instâncias serão criadas em massa.ZONE: a zona em que as instâncias serão criadas em massa.COUNT: o número de instâncias a serem criadas.NAME_PATTERN: o padrão de nome das instâncias. Para substituir uma sequência de números no nome de uma instância, use uma sequência de caracteres hash (#). Por exemplo, usarinstance-#para o padrão de nome gera instâncias com nomes que começam cominstance-1,instance-2e continuam até o número de instâncias especificado porCOUNT.MACHINE_TYPE: o tipo de máquina a ser usado para as instâncias.IMAGE_PROJECT: o projeto de imagem que contém a imagem do SO, 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, por exemplo,
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.
Para mais detalhes, consulte Criar VMs em massa.
Impedir o consumo ao criar um modelo de instância
Depois de criar um modelo de instância que configura as instâncias para não consumir reservas, é possível usar o modelo para fazer o seguinte:
Impeça que as instâncias de computação em um grupo gerenciado de instâncias (MIG) consumam reservas fazendo o seguinte:
Para criar um modelo de instância que configure instâncias para não consumir reservas, selecione uma das seguintes opções:
Console
No console do Google Cloud , acesse a página Criar um modelo de instância.
No campo Nome, insira um nome para o modelo de instância.
Na seção Local, especifique se você quer criar um modelo de instância regional (padrão) ou global.
Na seção Configuração da máquina, especifique o tipo de máquina a ser usado para as instâncias criadas com o modelo.
Expanda a seção Opções avançadas e depois faça o seguinte:
Expanda a seção Gerenciamento.
Na seção Reservas, selecione Não usar uma reserva.
Clique em Criar.
gcloud
Para criar um modelo de instância que configure instâncias para não consumir
reservas, use o
comando gcloud compute instances-templates create
com a flag --reservation-affinity definida como none.
Para criar um modelo de instância regional que configure instâncias para não
consumir reservas, execute o seguinte comando. Se 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 \
--instance-template-region=REGION \
--machine-type=MACHINE_TYPE \
--reservation-affinity=none
Substitua:
INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.REGION: a região em que o modelo de instância será criado.MACHINE_TYPE: o tipo de máquina a ser usado para as instâncias criadas com o modelo de instância.
Go
Para criar um modelo de instância que configure instâncias para não consumir reservas, use o exemplo de código a seguir:
Java
Para criar um modelo de instância que configure instâncias para não consumir reservas, use o exemplo de código a seguir:
Node.js
Para criar um modelo de instância que configure instâncias para não consumir reservas, use o exemplo de código a seguir:
Python
Para criar um modelo de instância que configure instâncias para não consumir reservas, use o exemplo de código a seguir:
REST
Para criar um modelo de instância que configure instâncias para não consumir
reservas, faça uma solicitação POST para um dos seguintes métodos:
Para criar um modelo de instância global: método
instanceTemplates.insert.Para criar um modelo de instância regional: método
regionInstanceTemplates.insert.
No corpo da solicitação, inclua o campo consumeReservationType e defina-o como NO_RESERVATION.
Por exemplo, para criar um modelo de instância regional e especificar que ele não consuma reservas, 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": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"reservationAffinity": {
"consumeReservationType": "NO_RESERVATION"
}
}
}
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.MACHINE_TYPE: o tipo de máquina a ser usado para as instâncias criadas com o modelo de instância.IMAGE_PROJECT: o projeto de imagem que contém a imagem do SO, 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, por exemplo,
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 mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens.
Para mais informações sobre como criar modelos de instância, consulte Como criar modelos de instância.