Resiliência da VM

Este documento oferece uma visão geral da resiliência da máquina virtual (VM) e das verificações opcionais que os operadores de aplicativos podem ativar para insights mais detalhados de uma VM no Google Distributed Cloud (GDC) com isolamento físico.

Este documento é destinado a desenvolvedores do grupo de operadores de aplicativos que operam VMs. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

As VMs no GDC oferecem alta disponibilidade para melhorar a continuidade do serviço em caso de falhas na infraestrutura ou no convidado. Também é possível configurar o sistema para emitir indicadores de integridade opcionais que oferecem insights mais detalhados sobre o status da VM.

Verificações de disponibilidade da VM

O sistema oferece as seguintes verificações de disponibilidade da VM:

Nome da verificação Descrição Suporte à ação de mitigação Disponibilidade do indicador
Verificação de integridade do convidado Verifica a integridade do SO convidado. Um pré-requisito para outras verificações no convidado. Sim Verificação no convidado
Verificação de armazenamento Verifica a integridade do armazenamento subjacente da VM. Sim Verificação no convidado
Verificação de saída Verifica a conectividade com um endpoint interno conhecido. Não Verificação no convidado e fora dele
Verificação de entrada Verifica a acessibilidade da VM usando a entrada configurada (VirtualMachineExternalAccess). Não Verificação no convidado

As ações de mitigação podem reiniciar a VM e reprogramar para outro nó em falhas frequentes.

Solicitar permissões e acesso

Para realizar as tarefas listadas nesta página, você precisa ter o papel de administrador de máquinas virtuais do projeto. Siga as etapas para verificar se você tem o papel de administrador de máquinas virtuais do projeto (project-vm-admin) no namespace do projeto em que a VM reside.

Ativar verificações no convidado

Por padrão, a verificação no convidado é desativada se o guestHealthCheck não estiver presente.

Para ativar ou desativar a verificação no convidado de uma VM, é necessário atualizar o GuestEnvironment na especificação da VM. Essa configuração coleta métricas de dentro da VM, desde que o agente convidado esteja instalado. Se o guestHealthCheck não estiver presente, as verificações no convidado serão desativadas por padrão.

  1. Abra o arquivo de configuração da VM.
  2. Navegue até a seção spec:.
  3. Adicione ou modifique os campos guestEnvironment: e guestHealthCheck: para ativar a verificação.
  4. Defina o campo enable como verdadeiro.

Confira um exemplo da configuração em um arquivo YAML:

spec:
  compute:
    virtualMachineType: n2-standard-2-gdc
  guestEnvironment:
    guestHealthCheck:
      enable: true

Verificar as verificações

Depois de configurar a VM, é possível verificar o status das verificações de disponibilidade inspecionando a Condition da máquina virtual no Status.

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n NAMESPACE_NAME \
  get gvm -o yaml

A saída mostra o status das várias verificações. Por exemplo, se o guestHealthCheck estiver ativado, as condições de status gvm serão preenchidas com o indicador VMGuestHealth.

Desativar a alta disponibilidade da VM

Por padrão, a alta disponibilidade da VM é ativada se a anotação não estiver presente. É possível desativar explicitamente a alta disponibilidade de uma VM específica adicionando uma anotação. Adicione a anotação para desativar a alta disponibilidade da VM:

  1. Abra o arquivo de configuração da VM.
  2. Adicione a anotação highavailability.virtualmachine.gdc.goog/enable: false aos metadados da VM para desativar a alta disponibilidade.

Confira um exemplo da anotação em um arquivo YAML:

metadata:
  annotations:
    highavailability.virtualmachine.gdc.goog/enable: false

Mitigação de falhas de nós

As ações de mitigação automatizadas resolvem falhas de VM e mantêm a alta disponibilidade. Quando a infraestrutura subjacente não consegue mais oferecer suporte a uma VM em execução, o sistema tenta isolar o nó não íntegro e reprogramar a VM para um nó íntegro. Os cenários a seguir podem acionar essa mitigação no nível do nó:

  • Partição de nó do servidor da API: o nó de metal nu que hospeda a VM é particionado do servidor da API Management devido a uma condição como a seguinte:

    • Perda de conectividade de rede entre o servidor da API e o nó.
    • O agente kubelet no nó está inativo.
    • O nó observa uma falha de energia.
  • Partição de VM de cluster de usuário: uma VM de worker de cluster de usuário é particionada de seu servidor da API Management do cluster.