Resilienza delle VM

Questo documento fornisce una panoramica della resilienza delle macchine virtuali (VM) e dei controlli facoltativi che gli operatori delle applicazioni possono attivare per ottenere informazioni più approfondite dall'interno di una VM in Google Distributed Cloud (GDC) air-gapped.

Questo documento è destinato agli sviluppatori del gruppo di operatori di applicazioni che gestiscono le VM. Per saperne di più, consulta la documentazione relativa ai segmenti di pubblico per GDC air-gap.

Le VM in GDC forniscono l'alta disponibilità per migliorare la continuità del servizio in caso di errori dell'infrastruttura sottostante o degli ospiti. Puoi anche configurare il sistema per emettere indicatori di integrità facoltativi che offrono informazioni più approfondite sullo stato della VM.

Controlli di disponibilità delle VM

Il sistema fornisce i seguenti controlli di disponibilità delle VM:

Nome del controllo Descrizione Supporto per l'azione di mitigazione Disponibilità dell'indicatore
Controllo di integrità dell'ospite Verifica l'integrità del sistema operativo guest. Un prerequisito per altri controlli in-guest. Controllo in-guest
Controllo dello spazio di archiviazione Verifica l'integrità dello spazio di archiviazione sottostante della VM. Controllo in-guest
Controllo dell'uscita Verifica la connettività a un endpoint interno noto. No Controllo in loco e all'esterno
Controllo in entrata Verifica l'accessibilità della VM utilizzando l'ingresso configurato (VirtualMachineExternalAccess). No Controllo in-guest

Le azioni di mitigazione possono riavviare la VM e ripianificarla su un altro nodo in caso di errori frequenti.

Richiedere autorizzazioni e accesso

Per eseguire le attività elencate in questa pagina, devi disporre del ruolo Amministratore macchina virtuale progetto. Segui i passaggi per verificare di disporre del ruolo Amministratore macchina virtuale progetto (project-vm-admin) nello spazio dei nomi del progetto in cui si trova la VM.

Attivare i controlli in-guest

Per impostazione predefinita, il controllo in-guest è disattivato se guestHealthCheck non è presente.

Per attivare o disattivare il controllo in-guest per una VM, devi aggiornare GuestEnvironment nella specifica della VM. Questa impostazione raccoglie le metriche dall'interno della VM, a condizione che l'agente guest sia installato. Se guestHealthCheck non è presente, i controlli in-guest sono disattivati per impostazione predefinita.

  1. Apri il file di configurazione della VM.
  2. Vai alla sezione spec:.
  3. Aggiungi o modifica i campi guestEnvironment: e guestHealthCheck: per attivare il controllo.
  4. Imposta il campo enable su true.

Ecco un esempio della configurazione in un file YAML:

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

Verifica i controlli

Dopo aver configurato la VM, puoi verificare lo stato dei controlli di disponibilità ispezionando Condition della macchina virtuale in Status.

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

L'output mostra lo stato dei vari controlli. Ad esempio, se guestHealthCheck è attivato, le condizioni di stato di gvm vengono compilate con l'indicatore VMGuestHealth.

Disattiva l'alta disponibilità della VM

Per impostazione predefinita, l'alta disponibilità delle VM è abilitata se l'annotazione non è presente. Puoi disattivare esplicitamente l'alta affidabilità per una VM specifica aggiungendo un'annotazione. Aggiungi l'annotazione per disabilitare l'alta affidabilità della VM:

  1. Apri il file di configurazione della VM.
  2. Aggiungi l'annotazione highavailability.virtualmachine.gdc.goog/enable: false ai metadati della VM per disattivare l'alta disponibilità.

Ecco un esempio dell'annotazione in un file YAML:

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

Mitigazione degli errori dei nodi

Le azioni di mitigazione automatizzate risolvono gli errori delle VM e mantengono l'alta disponibilità. Quando l'infrastruttura sottostante non è più in grado di supportare una VM in esecuzione, il sistema tenta di isolare il nodo non integro e riprogramma la VM su un nodo integro. I seguenti scenari possono attivare questa mitigazione a livello di nodo:

  • Partizione del nodo dal server API: il nodo bare metal che ospita la VM è partizionato dal server API Management a causa di una condizione come la seguente:

    • Perdita della connettività di rete tra il server API e il nodo.
    • L'agente kubelet sul nodo non è attivo.
    • Il nodo rileva un'interruzione di corrente.
  • Partizione VM del cluster utente: una VM worker del cluster utente è partizionata dal server API Management del cluster.