Ripristinare 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 con l'archiviazione, la rete o la configurazione errata del sistema operativo, vuoi ripristinare in modo efficiente l'integrità del cluster. Dopo aver ripristinato l'integrità del cluster, puoi risolvere i problemi relativi all'errore del nodo. Questo documento mostra come eseguire il ripristino 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.

Reimposta nodi

Quando si verifica un errore del nodo, a volte non è possibile eseguire comandi di ripristino sui nodi perché il nodo potrebbe essere irraggiungibile. Potrebbe essere necessario rimuovere forzatamente il nodo dal cluster.

Quando reimposti in modo pulito un nodo e aggiorni il cluster, vengono eseguite le seguenti azioni:

  1. Il nodo viene ripristinato, 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 pool di nodi e del cluster.

In alcuni dei seguenti comandi bmctl per reimpostare i nodi, il parametro --force indica se i comandi di ripristino (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 ripristino.

Rimuovere un nodo worker

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

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

    Se questo comando ha esito positivo, 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 riesce, rimuovi forzatamente il nodo dal cluster. Questa rimozione forzata salta il passaggio precedente che esegue i comandi di ripristino 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
    

Rimuovi un singolo nodo del control plane

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

Il cluster non è più in stato di alta disponibilità (HA) dopo la rimozione del nodo non riuscito. 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 ripristinare il nodo in modo pulito. Dopo il ripristino 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 riusciti.
    • ADMIN_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione.

    Se questo comando ha esito positivo, 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 rimuovere forzatamente il nodo dal cluster. Questa rimozione forzata salta il passaggio precedente che esegue i comandi di ripristino 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
    

    Reimpostare un nodo quando il control plane non è accessibile

    Puoi eseguire il seguente comando per ripristinare gli stati preinstallati di una macchina quando il control plane 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 separato da virgole di indirizzi IP dei nodi, 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), viene utilizzato root.

  • AR_SERVICE_ACCOUNT_KEY: il percorso del file JSON con le chiavi 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 control plane del cluster, devi rimuovere forzatamente il nodo dal cluster se vuoi conservarlo.

Quorum perso nel control plane 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 ripristino. Se fornisci il file kubeconfig per un cluster di gestione, viene forzato un nuovo cluster per eseguire l'operazione di ripristino. Quando ripristini un cluster utente, fornisci il percorso del file kubeconfig.

  1. Per recuperare un cluster che ha perso il quorum, esegui questo 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 riusciti.
    • KUBECONFIG_FILE: se recuperi un cluster utente, il percorso del file kubeconfig del cluster utente.
  2. Dopo aver recuperato i nodi non riusciti, 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 riusciti.
    • KUBECONFIG_FILE: il percorso del file kubeconfig del cluster di amministrazione.

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

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

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, vedi Aggiornare i cluster.

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

  • Requisiti per l'apertura di una richiesta di assistenza.
  • Strumenti per aiutarti a risolvere i problemi, ad esempio la configurazione dell'ambiente, i log e le metriche.
  • Componenti supportati.