Diminuir o tempo de encerramento das instâncias do Compute Engine

Neste documento, explicamos como diminuir o tempo de encerramento de uma instância do Compute Engine configurando-a para ignorar o encerramento do SO convidado ao parar ou excluir.

Se você configurar uma instância para ignorar o encerramento do SO convidado ao parar ou excluir, o Compute Engine encerra imediatamente o SO convidado quando o estado da instância muda para STOPPING. Essa ação ajuda a liberar cota ou recursos mais rapidamente, acelerando a interrupção ou exclusão de uma instância. Para saber mais sobre as fases que uma instância passa durante a interrupção ou exclusão, incluindo o intervalo padrão para o encerramento limpo do SO convidado, consulte Operação de interrupção.

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 Cloud de Confiance by S3NS . Para executar código ou exemplos em um ambiente de desenvolvimento local, faça a autenticação no Compute Engine com um destes métodos:

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

    gcloud

    1. Instale a CLI do Google Cloud e faça login na gcloud CLI com sua identidade federada. Depois de fazer login, inicialize a CLI do Google Cloud executando o seguinte comando:

      gcloud init
    2. Set a default region and zone.

    REST

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

      Instale a CLI do Google Cloud e faça login na gcloud CLI com sua identidade federada. Depois de fazer login, inicialize a CLI do Google Cloud executando o seguinte comando:

      gcloud init

    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 configurar uma instância para ignorar o encerramento do SO convidado, 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 configurar uma instância e ignorar o encerramento do SO convidado. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para configurar uma instância para ignorar o encerramento do SO convidado:

  • Criar uma instância:
    • compute.instances.create no projeto
    • Usar uma imagem personalizada para criar a VM: compute.images.useReadOnly na imagem
    • Utilizar um snapshot para criar a VM: compute.snapshots.useReadOnly no snapshot
    • Usar um modelo de instância para criar a VM: compute.instanceTemplates.useReadOnly no modelo de instância
    • Atribuir uma rede legada à VM: compute.networks.use no projeto
    • Especificar um endereço IP estático para a VM: compute.addresses.use no projeto
    • Atribuir um endereço IP externo à VM ao usar uma rede legada: compute.networks.useExternalIp no projeto
    • Especificar uma sub-rede para a VM: compute.subnetworks.use no projeto ou na sub-rede escolhida
    • Atribuir um endereço IP externo à VM ao usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
    • Definir os metadados da instância da VM: compute.instances.setMetadata no projeto
    • Definir tags para a VM: compute.instances.setTags na VM
    • Definir rótulos para a VM: compute.instances.setLabels na VM
    • Definir uma conta de serviço para a VM usar: compute.instances.setServiceAccount na VM
    • Criar um disco para a VM: compute.disks.create no projeto
    • Anexar um disco atual no modo somente leitura ou de leitura e gravação: compute.disks.use no disco
    • Anexar um disco atual no modo somente leitura: compute.disks.useReadOnly no disco
  • Criar um modelo de instância: compute.instanceTemplates.create no projeto
  • Para atualizar uma instância: compute.instances.update na instância

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

Configurar instâncias para ignorar o encerramento do SO convidado

Para configurar uma instância de computação para ignorar o encerramento do SO convidado ao parar ou excluir a instância, use um dos seguintes métodos:

Configurar o encerramento do SO convidado em uma instância atual

Só é possível configurar uma instância de computação para ignorar o encerramento do SO convidado se a instância estiver interrompida (TERMINATED).

Para configurar uma instância para ignorar o encerramento do SO convidado, selecione uma das seguintes opções:

gcloud

  1. Se ainda não tiver feito isso, pare a instância.

  2. Para configurar uma instância para ignorar o encerramento do SO convidado, use o comando gcloud beta compute instances set-scheduling com a flag --skip-guest-os-shutdown:

    gcloud compute instances set-scheduling INSTANCE_NAME \
        --skip-guest-os-shutdown \
        --zone=ZONE
    

    Substitua:

    • INSTANCE_NAME: o nome da instância.

    • ZONE: a zona em que a instância está.

REST

  1. Se ainda não tiver feito isso, pare a instância.

  2. Para configurar uma instância para ignorar o encerramento do SO convidado, faça uma solicitação POST para o método instances.setScheduling. No corpo da solicitação, inclua o campo skipGuestOsShutdown e defina-o como true:

    POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/setScheduling
    
    {
      "skipGuestOsShutdown": true
    }
    

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

Configurar o encerramento do SO convidado ao criar uma instância

Para criar uma instância de computação configurada para ignorar o encerramento do SO convidado, selecione uma das seguintes opções:

gcloud

Para criar uma instância configurada para ignorar o encerramento do SO convidado, use o comando gcloud compute instances create com a flag --skip-guest-os-shutdown:

gcloud compute instances create INSTANCE_NAME \
    --machine-type=MACHINE_TYPE \
    --skip-guest-os-shutdown \
    --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 você quer criar a instância.

REST

Para criar uma instância configurada para ignorar o encerramento do SO convidado, faça uma solicitação POST para o método instances.insert. No corpo da solicitação, inclua o campo skipGuestOsShutdown definido como true:

POST https://compute.s3nsapis.fr/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"
    }
  ],
  "scheduling": {
    "skipGuestOsShutdown": true
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar a instância.

  • ZONE: a zona em que você quer criar a instância.

  • 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 que contém a imagem, como 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. Esse valor especifica a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar family/debian-12, o Compute Engine usará a versão mais recente na família de imagens do Debian 12. Para mais informações sobre como usar famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

Para mais informações sobre como criar uma instância, consulte Criar e iniciar uma instância do Compute Engine.

Configurar o encerramento do SO convidado ao criar instâncias em massa

Para criar instâncias de computação em massa configuradas para ignorar o encerramento do SO convidado, selecione uma das seguintes opções:

gcloud

Para criar instâncias em massa configuradas para ignorar o encerramento do SO convidado, use o comando gcloud compute instances bulk create com a flag --skip-guest-os-shutdown.

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

gcloud compute instances bulk create \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern="NAME_PATTERN" \
    --skip-guest-os-shutdown \
    --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, se você usar instance-# como um padrão de nome, o Compute Engine vai gerar instâncias com nomes que começam com instance-1, instance-2 e continuam esse padrão incremental até o número de instâncias especificado em COUNT.

  • ZONE: a zona em que você quer criar instâncias.

REST

Para criar instâncias em massa configuradas para ignorar o encerramento do SO convidado, faça uma solicitação POST para o método instances.bulkInsert. No corpo da solicitação, inclua o campo skipGuestOsShutdown definido como true.

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

POST https://compute.s3nsapis.fr/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"
      }
    ],
    "scheduling": {
      "skipGuestOsShutdown": true
    }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar instâncias em massa.

  • ZONE: a zona em que você quer criar instâncias.

  • COUNT: o número de instâncias que serão 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, se você usar instance-# como um padrão de nome, o Compute Engine vai gerar instâncias com nomes que começam com instance-1, instance-2 e continuam esse padrão incremental até o número de instâncias especificado em COUNT.

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

  • IMAGE_PROJECT: o projeto que contém a imagem, como 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. Esse valor especifica a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar family/debian-12, o Compute Engine usará a versão mais recente na família de imagens do Debian 12. Para mais informações sobre como usar famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

Para mais informações sobre como criar instâncias em massa, consulte Criar instâncias em massa.

Configurar o encerramento do SO convidado ao criar um modelo de instância

Depois de criar um modelo de instância configurado para ignorar o encerramento do SO convidado ao parar ou excluir instâncias de computação, é possível usar o modelo de instância para fazer o seguinte:

Para criar um modelo de instância configurado para ignorar o encerramento do SO convidado, selecione uma das seguintes opções:

gcloud

Para criar um modelo de instância configurado para ignorar o encerramento do SO convidado, use o comando gcloud compute instance-templates create com a flag --skip-guest-os-shutdown.

Por exemplo, para criar um modelo de instância regional que especifique o encerramento do SO convidado, 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 \
    --skip-guest-os-shutdown

Substitua:

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

  • REGION: a região em que você quer criar o modelo de instância.

  • MACHINE_TYPE: o tipo de máquina a ser especificado no modelo de instância.

REST

Para criar um modelo de instância configurado para ignorar o encerramento do SO convidado, faça uma solicitação POST para um dos seguintes métodos:

No corpo da solicitação, inclua o campo skipGuestOsShutdown definido como true.

Por exemplo, para criar um modelo de instância regional que especifique pular o encerramento do SO convidado, faça uma solicitação POST da seguinte maneira:

POST https://compute.s3nsapis.fr/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": {
      "skipGuestOsShutdown": true
    }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar o modelo de instância.

  • REGION: a região em que você quer criar o modelo de instância.

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

  • IMAGE_PROJECT: o projeto que contém a imagem, como 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: o tipo de máquina a ser especificado no modelo de instância.

Para mais detalhes, consulte Criar modelos de instância.

Ver a configuração de desligamento do SO convidado

É possível verificar se o Compute Engine ignora o encerramento do SO convidado ao interromper ou excluir uma instância de computação.

Para conferir o tempo de encerramento do SO convidado em uma instância, selecione uma das seguintes opções:

gcloud

Para conferir os detalhes de uma instância e se ela ignora o desligamento do SO convidado, use o comando gcloud compute instances describe:

gcloud compute instances describe INSTANCE_NAME \
    --zone=ZONE

Substitua:

  • INSTANCE_NAME: o nome da instância.

  • ZONE: a zona em que a instância está.

Se você configurou a instância para ignorar o desligamento do SO convidado, a saída vai conter o campo skipGuestOsShutdown definido como true, como no exemplo a seguir:

...
scheduling:
  automaticRestart: true
  skipGuestOsShutdown: true
  onHostMaintenance: MIGRATE
  preemptible: false
  provisioningModel: STANDARD
...

Caso contrário, se o campo skipGuestOsShutdown estiver ausente ou definido como false, o SO convidado usará o tempo de desligamento padrão.

REST

Para conferir os detalhes de uma instância e saber se ela ignora o desligamento do SO convidado, faça uma solicitação GET para o método instances.get:

GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME

Substitua:

  • PROJECT_ID: o ID do projeto em que a instância está.

  • ZONE: a zona em que a instância está.

  • INSTANCE_NAME: o nome da instância.

Se você configurou a instância para ignorar o desligamento do SO convidado, a saída vai conter o campo skipGuestOsShutdown definido como true, como no exemplo a seguir:

{
  ...
  "scheduling": {
    "automaticRestart": true,
    "skipGuestOsShutdown": true,
    "onHostMaintenance": "MIGRATE",
    "preemptible": false,
    "provisioningModel": "STANDARD"
  },
  ...
}

Caso contrário, se o campo skipGuestOsShutdown estiver ausente ou definido como false, o SO convidado usará o tempo de desligamento padrão.

A seguir