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