Ripristinare un nodo non riuscito in Google Distributed Cloud

Quando i nodi di Google Distributed Cloud si arrestano in modo anomalo, 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 il problema di guasto del nodo. Questo documento spiega come recuperare da scenari di errore del nodo reimpostando un nodo e rimuovendolo forzatamente, se necessario.

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

Se hai bisogno di ulteriore assistenza, contatta l'assistenza clienti Google Cloud.

Ripristina i nodi

In caso di guasto di un nodo, a volte non è possibile eseguire comandi di reimpostazione sui nodi poiché il nodo potrebbe non essere raggiungibile. Potrebbe essere necessario rimuovere forzatamente il nodo dal cluster.

Quando reinizializzi correttamente un nodo e aggiorni il cluster, si verificano le seguenti azioni:

  1. Il nodo viene reimpostato, come per kubeadm reset, e la macchina torna allo stato preinstallato.
  2. I riferimenti correlati al nodo vengono rimossi dalle risorse personalizzate del pool di nodi e del cluster.

In alcuni dei seguenti comandi bmctl per reimpostare i nodi, il parametro --force indica se saltare i comandi di reimpostazione (passaggio 1). 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:

  1. Prova a reimpostare il nodo in modo pulito. Dopo il ripristino, il nodo 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 riusciti.
    • ADMIN_KUBECONFIG: il percorso del filekubeconfig del cluster di amministrazione.

    Se questo comando va a buon fine, ora puoi diagnosticare il nodo e correggere eventuali configurazioni errate che hanno causato l'errore iniziale. Salta i passaggi rimanenti di questa sezione.

  2. Se il passaggio precedente per reimpostare il nodo non va a buon fine, rimuovilo forzatamente 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 l'errore 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
    

Rimuovere un singolo nodo del control plane

La procedura è la stessa utilizzata per i nodi worker. Per i nodi del control plane, bmctl pulisce anche l'appartenenza a etcd.

Il cluster non è più in uno stato di elevata disponibilità (HA) dopo la rimozione del nodo non funzionante. Per tornare a uno stato HA, aggiungi un nodo funzionante al cluster.

Per rimuovere un nodo da un cluster:

  1. Prova a reimpostare il nodo in modo pulito. Dopo il ripristino, il nodo 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 riusciti.
    • ADMIN_KUBECONFIG: il percorso del filekubeconfig del cluster di amministrazione.

    Se questo comando va a buon fine, ora puoi diagnosticare il nodo e correggere eventuali configurazioni errate che hanno causato l'errore iniziale. Salta i passaggi rimanenti di questa sezione.

  2. Se il passaggio precedente per reimpostare il nodo non va a buon fine, puoi rimuoverlo forzatamente 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 l'errore 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
    

    Ripristinare un nodo quando il piano di controllo non è accessibile

    Puoi eseguire il seguente comando per ripristinare una macchina agli stati preinstallati 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 GCR_SERVICE_ACCOUNT_KEY

Sostituisci quanto segue:

  • NODE_IP_ADDRESSES: un elenco separato da virgole di indirizzi IP dei nodi, uno per ogni nodo di cui vuoi reimpostare la password.

  • 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 non specifichi esplicitamente un nome utente diverso da root per l'accesso ai nodi nella configurazione del cluster (nodeAccess.loginUser), viene utilizzato root.

  • GCR_SERVICE_ACCOUNT_KEY: il percorso del file della chiave JSON dell'account di servizio Container 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 conservarlo.

Quorum perso nel piano di controllo HA

Se troppi nodi del piano di controllo in un cluster ad alta disponibilità entrano in uno stato di errore, il cluster perde il quorum e non è più 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 forzato un nuovo cluster per eseguire l'operazione di reimpostazione. Quando ripristina 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 funzionante 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 all'interno del cluster.
    • CLUSTER_NAME: il nome del cluster di destinazione che contiene i nodi non riusciti.
    • KUBECONFIG_FILE: se stai recuperando un cluster utente, il percorso al file kubeconfig del cluster utente.
  2. Dopo aver recuperato i nodi non riusciti, esegui il comando bmctl reset per reimpostarli:

    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 riusciti.
    • KUBECONFIG_FILE: il percorso del filekubeconfig del cluster di amministrazione.

    Se i nodi con errori facevano parte dei pool di nodi del bilanciatore del carico, dopo il recupero 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 riusciti il più rapidamente possibile dopo averli recuperati.

Questo processo 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 almeno 5 nodi.

Passaggi successivi

  • Per ulteriori informazioni su come aggiungere o rimuovere nodi da un cluster in assenza di errori e controllare lo stato dei nodi, consulta Aggiornare i cluster.

  • <>