Ativar o encerramento normal em uma instância do Compute Engine


Este documento explica como ativar o encerramento normal em uma instância nova ou existente do Compute Engine. Para saber mais sobre o desligamento normal, consulte Visão geral do desligamento normal .

Ao ativar o encerramento normal em uma instância, você pode conceder ao sistema operacional convidado até uma hora para encerrar corretamente ao interromper ou excluir a instância. Isso ajuda a evitar possíveis perdas de dados ou sistemas de arquivos corrompidos.

Antes de começar

  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

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

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Funções obrigatórias

Para obter as permissões necessárias para ativar o encerramento normal em uma instância de computação, peça ao administrador para conceder a você a função do IAM Compute Instance Admin (v1) ( roles/compute.instanceAdmin.v1 ) em seu projeto. Para obter mais informações sobre a concessão de funções, consulte Gerenciar acesso a projetos, pastas e organizações .

Essa função predefinida contém as permissões necessárias para permitir o desligamento normal em uma instância de computação. Para ver 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 ativar o encerramento normal em uma instância de computação:

  • Para criar instâncias:
    • compute.instances.create no projeto
    • Para usar uma imagem personalizada para criar a VM: compute.images.useReadOnly na imagem
    • Para usar um instantâneo para criar a VM: compute.snapshots.useReadOnly no instantâneo
    • Para usar um modelo de instância para criar a VM: compute.instanceTemplates.useReadOnly no modelo de instância
    • Para atribuir uma rede legada à VM: compute.networks.use no projeto
    • Para especificar um endereço IP estático para a VM: compute.addresses.use no projeto
    • Para atribuir um endereço IP externo à VM ao usar uma rede legada: compute.networks.useExternalIp no projeto
    • Para especificar uma sub-rede para a VM: compute.subnetworks.use no projeto ou na sub-rede escolhida
    • Para atribuir um endereço IP externo à VM ao usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
    • Para definir metadados de instância de VM para a VM: compute.instances.setMetadata no projeto
    • Para definir tags para a VM: compute.instances.setTags na VM
    • Para definir rótulos para a VM: compute.instances.setLabels na VM
    • Para definir uma conta de serviço para a VM usar: compute.instances.setServiceAccount na VM
    • Para criar um novo disco para a VM: compute.disks.create no projeto
    • Para anexar um disco existente no modo somente leitura ou leitura-gravação: compute.disks.use no disco
    • Para anexar um disco existente no modo somente leitura: compute.disks.useReadOnly no disco
  • Para criar um modelo de instância: compute.instanceTemplates.create no projeto
  • Para ativar o encerramento normal em uma instância existente: compute.instances.update na instância

Você também poderá obter essas permissões com funções personalizadas ou outras funções predefinidas .

Habilitar desligamento normal

Para ativar o encerramento normal em uma instância de computação, use um dos seguintes métodos:

Habilitar o encerramento normal em uma instância existente

Você pode habilitar o desligamento normal em uma instância de computação existente sem interrompê-la ou reiniciá-la. O período de desligamento normal padrão é de 10 minutos, mas você pode especificar um período de desligamento personalizado entre um segundo e uma hora.

Para ativar o encerramento normal em uma instância existente, selecione uma das seguintes opções:

Console

  1. No console do Google Cloud, acesse a página de instâncias de VM .

    Acesse as instâncias de VM

  2. Na coluna Nome , clique no nome da instância na qual você deseja ativar o encerramento normal.

    A página de detalhes da instância é aberta.

  3. Clique em Editar .

  4. Na seção Gerenciamento , faça o seguinte:

    1. Marque a caixa de seleção Desligar normalmente a VM .

    2. Opcional: Para especificar um período de desligamento normal personalizado, especifique uma duração no campo Duração máxima .

  5. Clique em Salvar .

gcloud

Para ativar o encerramento normal em uma instância existente, use o comando gcloud beta compute instances update com a sinalização --graceful-shutdown :

gcloud beta compute instances update INSTANCE_NAME \
    --graceful-shutdown \
    --zone=ZONE

Substitua o seguinte:

  • INSTANCE_NAME : o nome da instância.

  • ZONE : a zona onde a instância está localizada.

Opcionalmente, para especificar um período de desligamento normal personalizado, inclua o sinalizador --graceful-shutdown-max-duration :

gcloud beta compute instances update INSTANCE_NAME \
    --graceful-shutdown \
    --graceful-shutdown-max-duration=MAX_DURATION \
    --zone=ZONE

Substitua MAX_DURATION pela duração do período de desligamento. O valor deve ser formatado como o número de horas, minutos ou segundos seguido por h , m e s respectivamente. Por exemplo, especifique 1h para uma hora ou 20m10s para 20 minutos e 10 segundos.

DESCANSAR

  1. Crie um arquivo JSON vazio.

  2. Para visualizar as propriedades de uma instância existente, faça uma solicitação GET para o método beta instances.get :

    GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
    

    Substitua o seguinte:

    • PROJECT_ID : o ID do projeto onde a instância está localizada.

    • ZONE : a zona onde a instância está localizada.

    • INSTANCE_NAME : o nome de uma instância existente.

  3. No arquivo JSON vazio criado nas etapas anteriores, faça o seguinte:

    1. Insira os detalhes de configuração da instância na saída da solicitação GET .

    2. No campo scheduling , adicione o campo gracefulShutdown da seguinte forma:

      {
        ...
        "scheduling": {
          ...
          "gracefulShutdown": {
            "enabled": true
          }
        },
        ...
      }
      

      Opcionalmente, para especificar um período de desligamento normal personalizado, inclua o campo maxDuration :

      {
        ...
        "scheduling": {
          ...
          "gracefulShutdown": {
            ...
            "enabled": true,
            "maxDuration": {
              "seconds": "MAX_DURATION"
            }
          }
        },
        ...
      }
      

      Substitua MAX_DURATION por uma duração em segundos para o período de desligamento normal. O valor deve estar entre 1 e 3600 , que é 3.600 segundos (uma hora).

  4. Para atualizar a instância e reiniciá-la, faça uma solicitação PUT para o método beta instances.update . Na solicitação, faça o seguinte:

    • No URL de solicitação, inclua o parâmetro de consulta mostDisruptiveAllowedAction definido como RESTART .

    • No corpo da solicitação, inclua as propriedades da instância do arquivo JSON que você criou e atualizou nas etapas anteriores.

    A solicitação PUT para atualizar a instância é semelhante a esta:

    PUT https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?mostDisruptiveAllowedAction=RESTART
    
    {
      ...
      "scheduling": {
        ...
        "gracefulShutdown": {
          "enabled": true
        }
      },
      ...
    }
    

Para obter mais informações sobre como atualizar as propriedades de uma instância, consulte Atualizar propriedades da instância .

Habilite o desligamento normal ao criar uma instância

Quando você cria uma instância de computação com desligamento normal habilitado, o período de desligamento padrão é de 10 minutos. Opcionalmente, você pode especificar um período de desligamento personalizado entre um segundo e uma hora.

Para criar uma instância com desligamento normal habilitado, selecione uma das seguintes opções:

Console

  1. No console do Google Cloud, acesse a página de instâncias de VM .

    Acesse as instâncias de VM

  2. Clique em Criar instância .

    A página Criar uma instância é aberta.

  3. Especifique um nome para a instância.

  4. Especifique a região e a zona nas quais deseja criar a instância.

  5. Especifique um tipo de máquina para a instância.

  6. No menu de navegação, clique em Avançado .

  7. Expanda a seção de configurações avançadas do modelo de provisionamento de VM e faça o seguinte:

    1. Marque a caixa de seleção Desligar normalmente a VM .

    2. Opcional: Para especificar um período de desligamento normal personalizado, especifique uma duração no campo Duração máxima .

  8. Clique em Criar .

gcloud

Para criar uma instância com o desligamento normal ativado, use o gcloud beta compute instances create com a sinalização --graceful-shutdown :

gcloud beta compute instances create INSTANCE_NAME \
    --graceful-shutdown \
    --machine-type=MACHINE_TYPE \
    --zone=ZONE

Substitua o seguinte:

  • INSTANCE_NAME : o nome da instância.

  • MACHINE_TYPE : o tipo de máquina a ser usado para a instância.

  • ZONE : a zona na qual criar a instância.

Opcionalmente, para especificar um período de desligamento normal personalizado, inclua o sinalizador --graceful-shutdown-max-duration :

gcloud beta compute instances create INSTANCE_NAME \
    --graceful-shutdown \
    --graceful-shutdown-max-duration=MAX_DURATION \
    --machine-type=MACHINE_TYPE \
    --zone=ZONE

Substitua MAX_DURATION por uma duração para o período de desligamento normal. O valor deve ser formatado como o número de horas, minutos ou segundos seguido por h , m e s respectivamente. Por exemplo, especifique 1h para uma hora ou 20m10s para 20 minutos e 10 segundos.

DESCANSAR

Para criar uma instância com desligamento normal habilitado, faça uma solicitação POST para o método beta.instances.insert . No corpo da solicitação, inclua o campo gracefulShutdown :

POST https://compute.googleapis.com/compute/beta/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"
    }
  ],
  "scheduling": {
    "gracefulShutdown": {
      "enabled": true
    }
  }
}

Substitua o seguinte:

  • PROJECT_ID : o ID do projeto no qual a instância será criada.

  • ZONE : a zona na qual criar a instância.

  • INSTANCE_NAME : o nome da instância.

  • MACHINE_TYPE : o tipo de máquina da instância.

  • IMAGE_PROJECT : o projeto de imagem que contém a imagem — por exemplo, debian-cloud . Para obter mais informações sobre os projetos de imagem suportados, consulte Imagens públicas .

  • IMAGE : especifique um dos seguintes:

    • Uma versão específica da imagem do sistema operacional — por exemplo, debian-12-bookworm-v20240617 .

    • Uma família de imagens , que deve ser formatada como family/ IMAGE_FAMILY . Essa formatação especifica a imagem do sistema operacional mais recente e não obsoleta. Por exemplo, se você especificar family/debian-12 , a versão mais recente da família de imagens Debian 12 será usada. Para obter mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens .

Opcionalmente, para especificar um período de desligamento normal personalizado, inclua o campo maxDuration no corpo da solicitação:

POST https://compute.googleapis.com/compute/beta/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"
    }
  ],
  "scheduling": {
    "gracefulShutdown": {
      "enabled": true,
      "maxDuration": {
        "seconds": "MAX_DURATION"
      }
    }
  }
}

Substitua MAX_DURATION por uma duração em segundos para o período de desligamento normal. O valor deve estar entre 1 e 3600 , que é 3.600 segundos (uma hora).

Para mais opções de configuração ao criar uma instância, consulte Criar e iniciar uma instância do Compute Engine .

Habilite o encerramento normal ao criar instâncias em massa

Quando você cria instâncias de computação em massa com desligamento normal habilitado, o período de desligamento padrão é de 10 minutos. Opcionalmente, você pode especificar um período de desligamento personalizado entre um segundo e uma hora.

Para criar instâncias em massa com desligamento normal ativado, selecione uma das seguintes opções:

gcloud

Para criar instâncias em massa com o desligamento normal ativado, use o gcloud beta compute instances bulk create com a sinalização --graceful-shutdown .

Por exemplo, para criar instâncias em massa em uma única zona e especificar um padrão de nome para as instâncias, execute o seguinte comando:

gcloud beta compute instances bulk create \
    --count=COUNT \
    --graceful-shutdown \
    --machine-type=MACHINE_TYPE \
    --name-pattern="NAME_PATTERN" \
    --zone=ZONE

Substitua o seguinte:

  • COUNT : o número de instâncias a serem criadas.

  • MACHINE_TYPE : o tipo de máquina para as instâncias.

  • NAME_PATTERN : o padrão de nome para as instâncias. Para substituir uma sequência de números em um nome de instância, use uma sequência de caracteres hash ( # ). Por exemplo, usar instance-# para o padrão de nome gera instâncias com nomes começando com instance-1 , instance-2 e continuando até o número de instâncias especificado por COUNT .

  • ZONE : a zona na qual criar instâncias em massa.

Opcionalmente, para especificar um período de desligamento normal personalizado, inclua o sinalizador --graceful-shutdown-max-duration :

gcloud beta compute instances bulk create \
    --count=COUNT \
    --graceful-shutdown \
    --graceful-shutdown-max-duration=MAX_DURATION \
    --machine-type=MACHINE_TYPE \
    --name-pattern="NAME_PATTERN" \
    --zone=ZONE

Substitua MAX_DURATION por uma duração para o período de desligamento normal. O valor deve ser formatado como o número de horas, minutos ou segundos seguido por h , m e s respectivamente. Por exemplo, especifique 1h para uma hora ou 20m10s para 20 minutos e 10 segundos.

DESCANSAR

Para criar instâncias em massa com desligamento normal ativado, faça uma solicitação POST para o método beta instances.bulkInsert . No corpo da solicitação, inclua o campo gracefulShutdown .

Por exemplo, para criar instâncias em massa em uma única zona e especificar um padrão de nome para as instâncias, faça uma solicitação POST da seguinte forma:

POST https://compute.googleapis.com/compute/beta/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"
      }
    ],
    "scheduling": {
      "gracefulShutdown": {
        "enabled": true
      }
    }
  }
}

Substitua o seguinte:

  • PROJECT_ID : o ID do projeto no qual serão criadas instâncias em massa.

  • ZONE : a zona na qual criar instâncias em massa.

  • COUNT : o número de instâncias a serem criadas.

  • NAME_PATTERN : o padrão de nome para as instâncias. Para substituir uma sequência de números em um nome de instância, use uma sequência de caracteres hash ( # ). Por exemplo, usar instance-# para o padrão de nome gera instâncias com nomes começando com instance-1 , instance-2 e continuando até o número de instâncias especificado por COUNT .

  • MACHINE_TYPE : o tipo de máquina para as instâncias.

  • IMAGE_PROJECT : o projeto de imagem que contém a imagem — por exemplo, debian-cloud . Para obter mais informações sobre os projetos de imagem suportados, consulte Imagens públicas .

  • IMAGE : especifique um dos seguintes:

    • Uma versão específica da imagem do sistema operacional — por exemplo, debian-12-bookworm-v20240617 .

    • Uma família de imagens , que deve ser formatada como family/ IMAGE_FAMILY . Essa formatação especifica a imagem do sistema operacional mais recente e não obsoleta. Por exemplo, se você especificar family/debian-12 , a versão mais recente da família de imagens Debian 12 será usada. Para obter mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens .

  • ZONE : a zona na qual criar instâncias em massa.

Opcionalmente, para especificar um período de desligamento normal personalizado, inclua o campo maxDuration no corpo da solicitação:

POST https://compute.googleapis.com/compute/beta/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"
      }
    ],
    "scheduling": {
      "gracefulShutdown": {
        "enabled": true,
        "maxDuration": {
          "seconds": "MAX_DURATION"
        }
      }
    }
  }
}

Substitua MAX_DURATION por uma duração em segundos para o período de desligamento normal. O valor deve estar entre 1 e 3600 , que é 3.600 segundos (uma hora).

Para obter mais opções de configuração ao criar instâncias em massa, consulte Criar VMs em massa .

Habilite o desligamento normal ao criar um modelo de instância

Quando você cria um modelo de instância com desligamento normal habilitado, o período de encerramento padrão é de 10 minutos. Opcionalmente, você pode especificar um período de desligamento personalizado entre um segundo e uma hora.

Todas as instâncias de computação criadas usando o modelo de instância têm o desligamento normal habilitado.

Para criar um modelo de instância com desligamento normal ativado, selecione uma das seguintes opções:

Console

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

    Vá para modelos de instância

  2. Clique em Criar modelo de instância .

    A página Criar um modelo de instância é aberta.

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

  4. Selecione o local da seguinte forma:

    • Para reduzir a dependência entre regiões criando um modelo de instância regional, faça o seguinte:

      1. Escolha Regional , se ainda não estiver selecionado.

      2. No campo Região , selecione a região na qual deseja criar o modelo de instância.

    • Caso contrário, para usar o modelo de instância entre regiões, escolha Global .

  5. Na seção Configuração da máquina , especifique um tipo de máquina.

  6. Expanda a seção de configurações avançadas do modelo de provisionamento de VM e faça o seguinte:

    1. Marque a caixa de seleção Desligar normalmente a VM .

    2. Opcional: Para especificar um período de desligamento normal personalizado, especifique uma duração no campo Duração máxima .

  7. Clique em Criar .

gcloud

Para criar um modelo de instância com desligamento normal ativado, use o gcloud beta compute instance-templates create com a sinalização --graceful-shutdown .

Por exemplo, para criar um modelo de instância regional com desligamento normal habilitado, execute o seguinte comando:

gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --graceful-shutdown \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE

Substitua o seguinte:

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

  • REGION : a região na qual o modelo de instância será criado.

  • MACHINE_TYPE : o tipo de máquina para as instâncias criadas usando o modelo de instância.

Opcionalmente, para especificar um período de desligamento normal personalizado, inclua o sinalizador --graceful-shutdown-max-duration .

gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --graceful-shutdown \
    --graceful-shutdown-max-duration=MAX_DURATION \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE

Substitua MAX_DURATION pela duração do período de desligamento. O valor deve ser formatado como o número de horas, minutos ou segundos seguido por h , m e s respectivamente. Por exemplo, especifique 1h para uma hora ou 20m10s para 20 minutos e 10 segundos.

DESCANSAR

Para criar um modelo de instância com desligamento normal ativado, faça uma solicitação POST para um dos seguintes métodos:

Por exemplo, para criar um modelo de instância regional com desligamento normal habilitado, faça uma solicitação POST da seguinte maneira:

POST https://compute.googleapis.com/compute/beta/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": {
      "gracefulShutdown": {
        "enabled": true
      }
    }
  }
}

Substitua o seguinte:

  • PROJECT_ID : o ID do projeto onde criar o modelo de instância.

  • REGION : a região onde criar o modelo de instância.

  • 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 obter mais informações sobre os projetos de imagem suportados, consulte Imagens públicas .

  • IMAGE : especifique um dos seguintes:

    • Uma versão específica da imagem do sistema operacional — por exemplo, debian-12-bookworm-v20240617 .

    • Uma família de imagens , que deve ser formatada como family/ IMAGE_FAMILY . Essa formatação especifica a imagem do sistema operacional mais recente e não obsoleta. Por exemplo, se você especificar family/debian-12 , a versão mais recente da família de imagens Debian 12 será usada. Para obter mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens .

  • MACHINE_TYPE : o tipo de máquina para as instâncias criadas usando o modelo de instância.

Opcionalmente, para especificar um período de desligamento normal personalizado, inclua o campo maxDuration no corpo da solicitação.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/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": {
      "gracefulShutdown": {
        "enabled": true,
        "maxDuration": {
          "seconds": "MAX_DURATION"
        }
      }
    }
  }
}

Substitua MAX_DURATION por uma duração em segundos para o período de desligamento. O valor deve estar entre 1 e 3600 , que é 3.600 segundos (uma hora).

Para obter mais opções de configuração ao criar um modelo de instância, consulte Criar modelos de instância .

O que vem a seguir