Minimizar o tempo de inicialização da VM

Se você precisar que as VMs sejam inicializadas o mais rápido possível, minimize o tempo de inicialização da máquina virtual (VM) seguindo as instruções desta página. A minimização do tempo de inicialização tem um custo de eficiência de recursos: seu projeto consome recursos adicionais e tem uma superfície de segurança maior.

Este documento é destinado a desenvolvedores em grupos de administradores de plataforma ou operadores de aplicativos que configuram o tempo de inicialização da instância de VM em um ambiente do Distributed Cloud. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Antes de começar

Para usar comandos da interface de linha de comando (CLI) gdcloud, faça o download, a instalação, e a configuração da gdcloud CLI. Todos os comandos do Distributed Cloud usam a CLI gdcloud ou kubectl e exigem um ambiente de sistema operacional (SO).

Receber o caminho do arquivo kubeconfig

Para executar comandos no servidor da API Management, verifique se você tem os seguintes recursos:

  1. Faça login e gere o arquivo kubeconfig do servidor da API Management, se você não tiver um.

  2. Use o caminho para o arquivo kubeconfig do servidor da API Management para substituir MANAGEMENT_API_SERVER nestas instruções.

Solicitar papéis do IAM

Para minimizar o tempo de inicialização da VM, entre em contato com o administrador do IAM do projeto para solicitar o papel de Administrador do projeto da máquina virtual (project-vm-admin).

Todos os papéis da VM precisam ser vinculados ao namespace do projeto em que a VM reside. Siga as etapas para verificar seu acesso.

Manter as conexões de disco ativas

Quando uma VM é iniciada, a conexão do nó da VM com o disco dela leva alguns segundos. Para que a VM seja inicializada mais rapidamente, a conexão de disco precisa ser mantida ativa quando a VM é desligada. Assim, a conexão de disco não é reiniciada nas inicializações subsequentes da VM. Para isso, quando você executa o comando para ativar o sinal de atividade da conexão de disco, o sistema cria automaticamente um pod fictício que monta todos os discos da VM.

Ativar o sinal de atividade da conexão de disco

Para manter as conexões de disco ativas para uma VM chamada VM_NAME no projeto PROJECT, execute o comando a seguir. Quando você faz isso, o sistema cria automaticamente o pod fictício:

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n PROJECT \
  patch virtualmachines.virtualmachine.gdc.goog VM_NAME \
  --type merge --patch $'
metadata:
  annotations:
    disk.virtualmachine.gdc.goog/enable-connection-keep-alive: "true"
'

Substitua as variáveis nestas instruções usando as definições a seguir.

VariávelDefinição
MANAGEMENT_API_SERVER O arquivo kubeconfig do servidor da API de gerenciamento.
VM_NAME O nome da VM.
PROJECT O projeto do GDC em que a VM reside.

Quando o sinal de atividade da conexão de disco está ativado, um pod chamado disk-connection-keep-alive-VM_NAME é criado no mesmo projeto da VM. A próxima reinicialização da VM é mais rápida, assim como os tempos de inicialização subsequentes, porque as conexões de disco da VM são mantidas ativas pelo pod.

Configurar a afinidade de conexão de disco sinal de atividade

O programador do Kubernetes pode selecionar um nó diferente para a VM quando ela for reiniciada. Para reduzir as chances de isso acontecer, configure uma regra de afinidade entre VMs entre a VM e o pod de sinal de atividade. Configure isso para acontecer automaticamente:

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n PROJECT \
  patch virtualmachines.virtualmachine.gdc.goog VM_NAME \
  --type merge --patch $'
metadata:
  annotations:
    disk.virtualmachine.gdc.goog/add-connection-keep-alive-affinity: "true"
'

Isso adiciona uma configuração de afinidade preferencial na VM ao pod de sinal de atividade.

Advertências

Há duas advertências para manter as conexões de disco ativas:

  • O pod de sinal de atividade incorre em uso adicional de recursos:
    • Ele conta para o limite do número de pods por nó.
    • Ele usa um endereço IP adicional atribuído pelo Kubernetes.
    • Ele usa uma quantidade adicional insignificante de CPU e memória.
  • A superfície de segurança aumenta, porque o nó em que o pod de sinal de atividade está presente sempre tem os discos da VM anexados, mesmo quando a VM está desligada.

Usar firmware da BIOS

No GDC, iniciar uma VM com firmware UEFI (Unified Extensible Firmware Interface) é mais lento do que iniciar uma VM com firmware da BIOS.

  1. Para garantir que o tempo de inicialização seja mínimo, defina o tipo de firmware da VM como BIOS:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      patch virtualmachines.virtualmachine.gdc.goog VM_NAME \
      -type merge --patch $'
    spec:
      firmware:
        type: bios
        enableSecureBoot:
    '
    
  2. Se a VM estiver em execução, reinicie-a usando as instruções para reiniciar a VM.

Advertências

A advertência para usar o firmware da BIOS é que ele não oferece suporte à inicialização segura.

Usar um disco de inicialização grande

Para minimizar o tempo de inicialização da VM, anexe um disco de inicialização com um tamanho de 500 GB ou maior à VM.