Reimposta un nodo non riuscito in Google Distributed Cloud

Quando i nodi in Google Distributed Cloud non funzionano, il che può accadere a causa di problemi di archiviazione, rete o configurazione errata del sistema operativo, è necessario ripristinare in modo efficiente l'integrità del cluster. Dopo aver ripristinato l'integrità del cluster, puoi risolvere i problemi relativi al malfunzionamento del nodo. Questo documento mostra come eseguire il ripristino da scenari di malfunzionamento dei nodi reimpostando un nodo e rimuovendolo forzatamente, se necessario.

Se vuoi aggiungere o rimuovere nodi da un cluster quando un nodo non ha subito un errore, consulta Aggiornare i cluster.

Reimpostare i nodi

Quando i nodi in Google Distributed Cloud non funzionano a causa di guasti hardware, danneggiamento del disco o problemi del sistema operativo, devi ripristinare l'integrità del cluster prima di risolvere i problemi della macchina sottostante.

Architettura di ripristino dei nodi

I nodi fisici in Google Distributed Cloud sono progettati come unità di infrastruttura usa e getta. Se il sistema operativo di un nodo è danneggiato, devi rimuovere il nodo dal cluster, reinstallare un sistema operativo Linux di base e aggiungerlo di nuovo al cluster.

Non tentare di ripristinare un nodo da un backup dell'immagine del sistema operativo a livello di host o da uno snapshot del disco. Il ripristino di un nodo da uno stato precedente del sistema operativo danneggia il consenso Raft sui nodi del piano di controllo e introduce conflitti di indirizzi IP Dataplane V2 sui nodi worker. Per ulteriori informazioni sui vincoli di backup e ripristino di emergenza, consulta Eseguire il backup e il ripristino dei cluster con bmctl.

Quando si verifica un errore del nodo, a volte non è possibile eseguire i comandi di reimpostazione sui nodi se il nodo non è raggiungibile. Potrebbe essere necessario rimuovere forzatamente il nodo dal cluster.

Quando reimposti correttamente un nodo e aggiorni il cluster, vengono eseguite le seguenti azioni:

  1. Il nodo viene reimpostato, in modo simile a kubeadm reset, e la macchina torna allo stato preinstallato.
  2. I riferimenti correlati al nodo vengono rimossi dalle risorse personalizzate del node pool e del cluster.

In alcuni dei seguenti comandi bmctl per reimpostare i nodi, il parametro --force indica se i comandi di reimpostazione (passaggio 1) devono essere ignorati. Se viene utilizzato il parametro --force, bmctl esegue solo il passaggio di rimozione (passaggio 2) e non esegue i comandi di reimpostazione.

Rimuovere il nodo worker

Per rimuovere un nodo worker da un cluster, completa i seguenti passaggi:

  1. Prova a reimpostare correttamente il nodo. Dopo la reimpostazione del nodo, questo viene rimosso dal cluster:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

    Sostituisci quanto segue:

    • COMMA_SEPARATED_IP: gli indirizzi IP dei nodi da reimpostare, ad esempio 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: il nome del cluster di destinazione che contiene i nodi non funzionanti.
    • ADMIN_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione.

    Se questo comando ha esito positivo, puoi diagnosticare il nodo e correggere eventuali configurazioni errate che hanno causato il malfunzionamento iniziale. Salta i passaggi rimanenti in questa sezione.

  2. Se il passaggio precedente per reimpostare il nodo non riesce, rimuovi forzatamente il nodo dal cluster. Questa rimozione forzata salta il passaggio precedente che esegue i comandi di reimpostazione ed esegue solo il passaggio per rimuovere i riferimenti correlati al nodo dalle risorse personalizzate del node pool e del cluster:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG \
        --force
    

    Ora puoi diagnosticare il nodo e correggere eventuali configurazioni errate che hanno causato il malfunzionamento iniziale.

  3. Se hai rimosso forzatamente il nodo dal cluster di nodi nel passaggio precedente, esegui di nuovo il comando bmctl reset per reimpostare i nodi:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

Se il sistema operativo sottostante sulla macchina è danneggiato o non è recuperabile:

  1. Cancella le unità di archiviazione locali della macchina.
  2. Installa un sistema operativo Linux supportato e configura i prerequisiti del nodo descritti in Requisiti di configurazione del sistema operativo e Prerequisiti di workstation e nodi.
  3. Aggiungi di nuovo il nodo integro al cluster seguendo la procedura descritta in Aggiornare i cluster.

Rimuovere un singolo nodo del piano di controllo

La procedura è la stessa dei nodi worker. Per i nodi del piano di controllo, bmctl pulisce anche l'appartenenza a etcd.

Dopo aver rimosso il nodo non funzionante, il cluster non è più in uno stato a elevata disponibilità (HA). Per tornare a uno stato HA, aggiungi un nodo integro al cluster.

Per rimuovere un nodo da un cluster, completa i seguenti passaggi:

  1. Prova a reimpostare correttamente il nodo. Dopo la reimpostazione del nodo, questo viene rimosso dal cluster:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

    Sostituisci i seguenti valori:

    • COMMA_SEPARATED_IP: gli indirizzi IP dei nodi da reimpostare, ad esempio 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: il nome del cluster di destinazione che contiene i nodi non funzionanti.
    • ADMIN_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione.

    Se questo comando ha esito positivo, puoi diagnosticare il nodo e correggere eventuali configurazioni errate che hanno causato il malfunzionamento iniziale. Salta i passaggi rimanenti in questa sezione.

  2. Se il passaggio precedente per reimpostare il nodo non riesce, puoi rimuovere forzatamente il nodo dal cluster. Questa rimozione forzata salta il passaggio precedente che esegue i comandi di reimpostazione ed esegue solo il passaggio per rimuovere i riferimenti correlati al nodo dalle risorse personalizzate del node pool e del cluster:

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      --kubeconfig ADMIN_KUBECONFIG \
      --force
    

    Ora puoi diagnosticare il nodo e correggere eventuali configurazioni errate che hanno causato il malfunzionamento iniziale.

  3. Se hai rimosso forzatamente il nodo dal cluster di nodi nel passaggio precedente, esegui di nuovo il comando bmctl reset per reimpostare i nodi:

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      --kubeconfig ADMIN_KUBECONFIG
    

Se il sistema operativo sottostante sulla macchina è danneggiato o non è recuperabile:

  1. Cancella le unità di archiviazione locali della macchina.
  2. Installa un sistema operativo Linux supportato e configura i prerequisiti del nodo descritti in Requisiti di configurazione del sistema operativo e Prerequisiti di workstation e nodi.
  3. Aggiungi di nuovo il nodo integro al cluster seguendo la procedura descritta in Aggiornare i cluster.

Reimpostare un nodo quando il piano di controllo non è accessibile

Puoi eseguire il seguente comando per ripristinare lo stato preinstallato di una macchina quando il piano di controllo del cluster non è accessibile:

bmctl reset nodes \
    --addresses NODE_IP_ADDRESSES \
    --ssh-private-key-path SSH_PRIVATE_KEY_PATH \
    --login-user LOGIN_USER \
    --gcr-service-account-key AR_SERVICE_ACCOUNT_KEY

Sostituisci quanto segue:

  • NODE_IP_ADDRESSES: un elenco di indirizzi IP dei nodi separati da virgole, uno per ogni nodo che stai reimpostando.

  • SSH_PRIVATE_KEY_PATH: il percorso del file della chiave privata SSH.

  • LOGIN_USER: il nome utente utilizzato per l'accesso SUDO senza password alle macchine dei nodi. A meno che tu non specifichi esplicitamente un nome utente non root per l'accesso ai nodi nella configurazione del cluster (nodeAccess.loginUser), root viene utilizzato.

  • AR_SERVICE_ACCOUNT_KEY: il percorso del file della chiave JSON dell'account di servizio Artifact Registry.

Questo comando non rimuove i riferimenti al nodo dalle risorse personalizzate del node pool e del cluster. Dopo aver ripristinato l'accesso al piano di controllo del cluster, devi rimuovere forzatamente il nodo dal cluster se vuoi conservare il cluster.

Perdita del quorum nel piano di controllo HA

Se troppi nodi del piano di controllo in un cluster HA entrano in uno stato di errore, il cluster perde il quorum e diventa non disponibile.

Quando devi ripristinare i cluster di gestione, non fornire il file kubeconfig nei comandi di reimpostazione. Se fornisci il file kubeconfig per un cluster di gestione, viene forzata l'esecuzione dell'operazione di reimpostazione di un nuovo cluster. Quando ripristini un cluster utente, fornisci il percorso del file kubeconfig.

  1. Per recuperare un cluster che ha perso il quorum, esegui il seguente comando su un nodo integro rimanente:

    bmctl restore --control-plane-node CONTROL_PLANE_NODE \
        --cluster CLUSTER_NAME \
        [--kubeconfig KUBECONFIG_FILE]
    

    Sostituisci quanto segue:

    • CONTROL_PLANE_NODE: gli indirizzi IP di un nodo integro che rimane parte del cluster.
    • CLUSTER_NAME: il nome del cluster di destinazione che contiene i nodi non funzionanti.
    • KUBECONFIG_FILE: se stai recuperando un cluster utente, il percorso del file kubeconfig del cluster utente.
  2. Dopo aver recuperato i nodi non funzionanti, esegui il comando bmctl reset per reimpostare i nodi:

    bmctl reset nodes \
       --addresses COMMA_SEPARATED_IPS \
       --cluster CLUSTER_NAME \
       [--kubeconfig KUBECONFIG_FILE]
    

    Sostituisci quanto segue:

    • COMMA_SEPARATED_IP: gli indirizzi IP dei nodi da reimpostare, ad esempio 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: il nome del cluster di destinazione che contiene i nodi non funzionanti.
    • KUBECONFIG_FILE: il percorso del file kubeconfig del cluster di amministrazione.

    Se i nodi non funzionanti facevano parte dei node pool del bilanciatore del carico, dopo il ripristino potrebbero competere per l'indirizzo IP virtuale del piano di controllo e rendere instabile il nuovo cluster. Esegui i comandi di reimpostazione sui nodi non funzionanti il prima possibile dopo averli recuperati.

Questa procedura gestisce solo il ripristino di emergenza per un deployment HA del piano di controllo a 3 nodi. Questa procedura non supporta il recupero per le configurazioni HA con 5 o più nodi.

Rimediare a un ripristino accidentale dell'immagine del sistema operativo

Se un nodo fisico è stato ripristinato da un backup o da uno snapshot dell'immagine a livello di sistema operativo e causa instabilità del cluster, errori di consenso etcd o conflitti IP Dataplane V2, completa i seguenti passaggi per ripristinare l'integrità del cluster:

  1. Scollega o spegni immediatamente il nodo interessato per evitare un ulteriore danneggiamento dello stato del cluster.
  2. Dalla workstation di amministrazione, esegui il comando bmctl reset nodes --force per rimuovere le risorse personalizzate del nodo dal cluster.
  3. Cancella le unità fisiche sulla macchina.
  4. Installa un sistema operativo Linux di base pulito seguendo i Requisiti di configurazione del sistema operativo.
  5. Aggiungi di nuovo il nodo al cluster seguendo la procedura descritta in Aggiornare i cluster.

Passaggi successivi

Per ulteriori informazioni su come aggiungere o rimuovere nodi da un cluster quando non si verifica un errore e per controllare lo stato dei nodi, consulta Aggiornare i cluster.

Se hai bisogno di ulteriore assistenza, contatta l'assistenza clienti Google Cloud. Puoi anche consultare Richiedere assistenza per ulteriori informazioni sulle risorse di assistenza, tra cui:

  • Requisiti per l'apertura di una richiesta di assistenza.
  • Strumenti per la risoluzione dei problemi, come la configurazione dell'ambiente, i log e le metriche.
  • Componenti supportati.