Configurazione della riparazione automatica dei nodi

Questa pagina mostra come abilitare la riparazione automatica dei nodi per i cluster GKE On-Prem.

La funzionalità di riparazione automatica dei nodi rileva e ripara continuamente i nodi non integri in un cluster. La funzionalità è disattivata per impostazione predefinita. Puoi abilitare la funzionalità durante la creazione dell'amministratore o del cluster utente. Puoi anche abilitare la funzionalità per un cluster utente esistente, ma non per un cluster di amministrazione esistente.

Malattie

Le seguenti condizioni indicano che un nodo non è integro:

  • La condizione del nodo NotReady è true per circa 10 minuti.

  • Lo stato della macchina è Unavailable per circa 10 minuti dopo la creazione.

  • Lo stato della macchina non è Available per circa 30 minuti dopo la creazione della VM.

  • Non esiste un oggetto nodo (nodeRef è nil) corrispondente a una macchina nello stato Available per circa 10 minuti.

Strategia di riparazione

GKE On-Prem avvia una riparazione su un nodo se soddisfa almeno una delle condizioni dell'elenco precedente.

La riparazione drena il nodo in stato non integro e crea una nuova VM. Se lo svuotamento del nodo non riesce per un'ora, la riparazione forza lo svuotamento e scollega in modo sicuro i dischi gestiti Kubernetes collegati.

Se nello stesso MachineDeployment sono presenti più nodi non integri, la riparazione viene eseguita solo su uno di questi nodi alla volta.

File di configurazione del cluster v1

Per abilitare la riparazione automatica dei nodi, devi utilizzare un file di configurazione v1, il file di configurazione del cluster di amministrazione v1 o il file di configurazione del cluster utente v1. La riparazione automatica dei nodi non è supportata nel file di configurazione v0.

Abilitazione della riparazione automatica dei nodi per un nuovo cluster

Nel file di configurazione del cluster admin o utente, imposta autoRepair.enabled su true:

autoRepair:
  enabled: true

Continua con i passaggi per creare il tuo cluster admin o utente.

Abilitazione della riparazione automatica dei nodi per un cluster utente esistente:

Nel tuo file di configurazione del cluster utente, imposta autoRepair.enabled su true:

autoRepair:
  enabled: true

Aggiorna il cluster:

gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_KUBECONFIG

Sostituisci quanto segue:

  • USER_CLUSTER_CONFIG: percorso del file di configurazione del cluster utente

  • ADMIN_KUBECONFIG: percorso del file kubeconfig del cluster di amministrazione

Disabilitazione della riparazione automatica dei nodi per un cluster utente

Nel tuo file di configurazione del cluster utente, imposta autoRepair.enabled su false:

autoRepair:
  enabled: false

Aggiorna il cluster:

gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_KUBECONFIG

Disabilitazione della riparazione automatica dei nodi per un cluster di amministrazione

Per disabilitare la riparazione automatica dei nodi per un cluster di amministrazione, elimina il deployment cluster-health-controller:

kubectl --kubeconfig ADMIN_KUBECONFIG] delete deployment cluster-health-controller --namespace kube-system

Riparazione automatica dei nodi di debug

Puoi esaminare i problemi della riparazione automatica dei nodi descrivendo gli oggetti macchina e nodo nel cluster di amministrazione. Ecco un esempio:

Elenca gli oggetti della macchina:

kubectl --kubeconfig kubeconfig get machines

Output:

default     gke-admin-master-wc
default     gke-admin-node-7458969ff8-5cg8d
default     gke-admin-node-7458969ff8-svqj7
default     xxxxxx-user-cluster-41-25j8d-567f9c848f-fwjqt

Descrivi uno degli oggetti Machine:

kubectl --kubeconfig kubeconfig describe machine gke-admin-master-wcbrj

Nell'output, cerca gli eventi da cluster-health-controller.

Allo stesso modo, puoi elencare e descrivere gli oggetti nodo. Ad esempio:

kubectl --kubeconfig kubeconfig get nodes
...
kubectl --kubeconfig kubeconfig describe node gke-admin-master-wcbrj

Riparazione manuale dei nodi

In caso di problemi dei nodi che non sono coperti dalla logica di riparazione automatica o se non hai attivato la riparazione automatica dei nodi, puoi eseguire una riparazione manuale. In questo modo, il nodo viene eliminato e ricreato.

Ottieni il nome dell'oggetto Machine che corrisponde al nodo:

kubectl --kubeconfig KUBECONFIG get machines

Sostituisci KUBECONFIG con il percorso del file kubeconfig di amministrazione o cluster utente.

Aggiungi l'annotazione repair all'oggetto Machine:

kubectl annotate --kubeconfig KUBECONFIG machine MACHINE_NAME onprem.cluster.gke.io/repair-machine=true

Sostituisci MACHINE_NAME con il nome dell'oggetto Machine.

Elimina l'oggetto Machine:

kubectl delete --kubeconfig KUBECONFIG machine MACHINE_NAME