In Google Distributed Cloud, i controlli di integrità periodici e la riparazione automatica dei nodi sono abilitati per impostazione predefinita.
La funzionalità di riparazione automatica dei nodi rileva e ripara continuamente i nodi non integri in un cluster.
I controlli di integrità periodici vengono eseguiti ogni 15 minuti. I controlli sono gli stessi eseguiti da gkectl diagnose cluster. I risultati vengono visualizzati come log ed eventi sugli oggetti Cluster nel cluster di amministrazione.
Assicurati che i cluster di amministrazione e utente abbiano ciascuno un indirizzo IP aggiuntivo disponibile per la riparazione automatica dei nodi.
Se è abilitato il cluster avanzato, i controlli di integrità periodici non vengono eseguiti nell'ambito della riparazione automatica.
Condizioni dei nodi non integri quando il cluster avanzato non è abilitato
Le seguenti condizioni indicano che un nodo non è integro
quando
enableAdvanceCluster
è false.
La condizione del nodo
NotReadyètrueper circa 10 minuti.Lo stato della macchina è
Unavailableper circa 10 minuti dopo la creazione.Lo stato della macchina non è
Availableper circa 30 minuti dopo la creazione della VM.Non è presente alcun oggetto nodo (nodeRef è
nil) corrispondente a una macchina nello statoAvailableper circa 10 minuti.La condizione del nodo
DiskPressureètrueper circa 30 minuti.
Condizioni dei nodi non integri quando il cluster avanzato è abilitato
Le seguenti condizioni indicano che un nodo non è integro quando
enableAdvanceCluster
è true.
La condizione del nodo
NotReadyètrueper circa 10 minuti.La condizione del nodo
DiskPressureètrueper circa 30 minuti.
Strategia di riparazione dei nodi
Google Distributed Cloud avvia una riparazione su un nodo se questo soddisfa almeno una delle condizioni nell'elenco precedente.
La riparazione esegue il drain del nodo non integro e crea una nuova VM. Se il drain del nodo non va a buon fine per un'ora, la riparazione forza il drain e scollega in sicurezza i dischi gestiti di Kubernetes collegati.
Se sono presenti più nodi non integri nello stesso MachineDeployment, la riparazione viene eseguita su uno solo di questi nodi alla volta.
Il numero di riparazioni all'ora per un pool di nodi è limitato al massimo di:
- Tre
- Il 10% del numero di nodi nel pool di nodi
Abilitazione della riparazione dei nodi e dei controlli di integrità per un nuovo cluster
Nel file di configurazione del cluster di amministrazione o
utente, imposta autoRepair.enabled su true:
autoRepair: enabled: true
Continua con i passaggi per creare il tuo cluster di amministrazione o utente.
Abilitazione della riparazione dei nodi e dei controlli di integrità per un cluster utente esistente
Nel file di configurazione del cluster utente, imposta autoRepair.enabled su true:
Aggiorna il cluster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione
USER_CLUSTER_CONFIG: il percorso del file di configurazione del cluster utente
Abilitazione della riparazione dei nodi e dei controlli di integrità per un cluster di amministrazione esistente
Nel file di configurazione del cluster di amministrazione
,
imposta autoRepair.enabled su true:
Aggiorna il cluster:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG
Sostituisci ADMIN_CLUSTER_CONFIG con il percorso del file di configurazione del cluster di amministrazione.
Visualizzazione dei log di un controllo di integrità
Elenca tutti i pod del controllo di integrità nel cluster di amministrazione:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods --all-namespaces | grep cluster-health-controller
L'output è simile al seguente:
kube-system cluster-health-controller-6c7df455cf-zlfh7 2/2 Running my-user-cluster cluster-health-controller-5d5545bb75-rtz7c 2/2 Running
Per visualizzare i log di un controllo di integrità specifico, recupera i log del container cluster-health-controller in uno dei pod. Ad esempio, per recuperare i log di my-user-cluster mostrati nell'output precedente:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG --namespace my-user-cluster logs \
cluster-health-controller-5d5545bb75-rtz7c cluster-health-controller
Visualizzazione degli eventi di un controllo di integrità
Elenca tutti gli oggetti Cluster nel cluster di amministrazione:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get clusters --all-namespaces
L'output è simile al seguente:
default gke-admin-ldxh7 2d15h my-user-cluster my-user-cluster 2d12h
Per visualizzare gli eventi di un cluster specifico, esegui kubectl describe cluster con il flag --show-events. Ad esempio, per visualizzare gli eventi di my-user-cluster mostrati nell'output precedente:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG --namespace my-user-cluster \
describe --show-events cluster my-user-cluster
Output di esempio:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning ValidationFailure 17s cluster-health-periodics-controller validator for Pod returned with status: FAILURE, reason: 1 pod error(s).
Disabilitazione della riparazione dei nodi e dei controlli di integrità per un cluster utente
Nel file di configurazione del cluster utente, imposta autoRepair.enabled su false:
Aggiorna il cluster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Disabilitazione della riparazione dei nodi e dei controlli di integrità per un cluster di amministrazione
Nel file di configurazione del cluster di amministrazione, imposta autoRepair.enabled su false:
Aggiorna il cluster:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG
Debug della riparazione automatica dei nodi quando il cluster avanzato non è abilitato
Puoi esaminare i problemi relativi alla riparazione automatica dei nodi descrivendo gli oggetti Machine e Node nel cluster di amministrazione. Ecco un esempio:
Elenca gli oggetti Machine:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get machines
Output di esempio:
default gke-admin-master-wcbrj 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 ADMIN_CLUSTER_KUBECONFIG describe machine gke-admin-master-wcbrj
Nell'output, cerca gli eventi di cluster-health-controller.
Allo stesso modo, puoi elencare e descrivere gli oggetti nodo. Ad esempio:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get nodes ... kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG describe node gke-admin-master-wcbrj
Debug della riparazione automatica dei nodi quando il cluster avanzato è abilitato
Puoi esaminare i problemi relativi alla riparazione automatica dei nodi descrivendo gli oggetti Machine e Node nel cluster di amministrazione e nel cluster corrispondente. Ecco un esempio:
Elenca gli oggetti Machine:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get machines
Output di esempio:
NAMESPACE NAME NODEPOOL ci-1f6861fe28cac8fb390bc798927c717b 10.251.172.47 ci-1f6861fe28cac8fb390bc798927c717b-np ci-1f6861fe28cac8fb390bc798927c717b 10.251.173.64 ci-1f6861fe28cac8fb390bc798927c717b-cp ci-1f6861fe28cac8fb390bc798927c717b 10.251.173.66 ci-1f6861fe28cac8fb390bc798927c717b-cp ci-1f6861fe28cac8fb390bc798927c717b 10.251.174.19 ci-1f6861fe28cac8fb390bc798927c717b-np ci-1f6861fe28cac8fb390bc798927c717b 10.251.175.15 ci-1f6861fe28cac8fb390bc798927c717b-np ci-1f6861fe28cac8fb390bc798927c717b 10.251.175.30 ci-1f6861fe28cac8fb390bc798927c717b-cp kube-system 10.251.172.239 gke-admin-bnbp9-cp kube-system 10.251.173.39 gke-admin-bnbp9-cp kube-system 10.251.173.6 gke-admin-bnbp9-cp
Descrivi la macchina corrispondente all'oggetto Machine:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG describe machine -n ci-1f6861fe28cac8fb390bc798927c717b 10.251.172.47
Nell'output, cerca gli eventi di auto-repair-controller.
Allo stesso modo, puoi elencare e descrivere gli oggetti nodo. Ad esempio:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes ... kubectl --kubeconfig USER_CLUSTER_KUBECONFIG describe node ci-1f6861fe28cac8fb390bc798927c717b-np
Riparazione manuale dei nodi quando il cluster avanzato non è abilitato
Nodo del control plane di controllo amministratore
Il nodo del control plane di amministrazione ha un comando di riparazione dedicato, perché la normale riparazione manuale non funziona.
Utilizza gkectl repair
admin-master per riparare il
nodo del control plane di controllo amministratore.
Nodo del control plane del cluster utente Controlplane V2
I nodi del control plane del cluster utente Controlplane V2 vengono gestiti in modo diverso rispetto agli altri nodi.
Analogamente ai cluster utente kubeception, gli oggetti Machine del control plane dei cluster utente Controlplane V2 si trovano nel cluster di amministrazione. La riparazione automatica dei nodi è coperta dalla riparazione automatica dei nodi del cluster di amministrazione.
Se si verificano problemi con i nodi non coperti dalla logica di riparazione automatica dei nodi del cluster di amministrazione o se non hai abilitato la riparazione automatica dei nodi del cluster di amministrazione, puoi eseguire una riparazione manuale. Questa operazione elimina e ricrea il nodo.
Recupera il nome dell'oggetto Machine corrispondente al nodo:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME get machines
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione.USER_CLUSTER_NAME: il nome del cluster utente di destinazione.
Aggiungi l'annotazione
repairall'oggetto Machine:kubectl annotate --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME machine MACHINE_NAME onprem.cluster.gke.io/repair-machine=true
Sostituisci
MACHINE_NAMEcon il nome dell'oggetto Machine.Elimina l'oggetto Machine:
kubectl delete --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME machine MACHINE_NAME
Ricrea i nodi uno alla volta per un control plane ad alta disponibilità, altrimenti potrebbe causare un arresto anomalo imprevisto del control plane.
Altri nodi
Se si verificano problemi con i nodi non coperti dalla logica di riparazione automatica o se non hai abilitato la riparazione automatica dei nodi, puoi eseguire una riparazione manuale. Questa operazione elimina e ricrea il nodo.
Recupera il nome dell'oggetto Machine corrispondente al nodo:
kubectl --kubeconfig CLUSTER_KUBECONFIG get machines
Sostituisci CLUSTER_KUBECONFIG con il percorso del file kubeconfig del cluster di amministrazione o utente.
Aggiungi l'annotazione repair all'oggetto Machine:
kubectl annotate --kubeconfig CLUSTER_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 CLUSTER_KUBECONFIG machine MACHINE_NAME
Riparazione manuale dei nodi quando il cluster avanzato è abilitato
Nodo del control plane di controllo amministratore
La riparazione manuale del nodo del control plane di amministrazione non è supportata
Nodo del control plane del cluster utente / nodi worker
Recupera il nome dell'oggetto Machine dell'inventario corrispondente al nodo utilizzando l'IP del nodo per trovare gli oggetti:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get inventorymachines
Sostituisci quanto segue: ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig di amministrazione.
Aggiungi l'annotazione force-remove all'oggetto Machine dell'inventario:
kubectl annotate --kubeconfig ADMIN_CLUSTER_KUBECONFIG inventorymachine MACHINE_NAME baremetal.cluster.gke.io/force-remove=true
Sostituisci MACHINE_NAME con il nome dell'oggetto Machine.
Elimina l'oggetto Machine dell'inventario:
kubectl delete --kubeconfig ADMIN_CLUSTER_KUBECONFIG inventorymachine MACHINE_NAME
Ricrea i nodi uno alla volta per un control plane ad alta disponibilità, altrimenti potrebbe causare un arresto anomalo imprevisto del control plane.