Rilevamento problemi dei nodi è una libreria open source che monitora l'integrità dei nodi e rileva i problemi comuni dei nodi, ad esempio problemi di runtime dell'hardware, del kernel o del container. In Cluster Anthos on bare metal, viene eseguito come servizio systemd su ogni nodo.
A partire dai cluster Anthos su Bare Metal release 1.10.0, il rilevatore di problemi dei nodi è abilitato per impostazione predefinita.
Quali problemi rileva?
Il rilevatore dei problemi dei nodi può rilevare i seguenti tipi di problemi:
- Problemi di runtime dei container, ad esempio daemon di runtime che non rispondono
- Problemi hardware, come CPU, memoria o guasti del disco
- Problemi del kernel, come condizioni di deadlock del kernel o file system danneggiati
Viene eseguito su un nodo e segnala i problemi al server API Kubernetes come NodeCondition
o come Event
.
Un NodeCondition
è un problema che impedisce a un nodo di eseguire i pod, mentre un Event
è un problema temporaneo che ha un effetto limitato sui pod, ma è comunque considerato abbastanza importante da essere segnalato.
Ecco alcuni degli NodeConditions
rilevati da Node Detection Detect:
KernelDeadlock
ReadonlyFilesystem
FrequentKubeletRestart
FrequentDockerRestart
FrequentContainerdRestart
FrequentUnregisterNetDevice
KubeletUnhealthy
ContainerRuntimeUnhealthy
CorruptDockerOverlay2
Ecco alcuni esempi dei tipi di Events
segnalati da Detector Problemi Detect:
Warning TaskHung node/vm-worker-1-user-a12fabb4a99cb92-ddfce8832fd90f6f.lab.anthos kernel: task docker:7 blocked for more than 300 seconds.
Warning KernelOops node/vm-worker-1-user-a12fabb4a99cb92-ddfce8832fd90f6f.lab.anthos kernel: BUG: unable to handle kernel NULL pointer dereference at 00x0.
Come visualizzare i problemi rilevati
Esegui questo comando kubectl describe
su un nodo per cercare NodeConditions
e Events
:
kubectl --kubeconfig=KUBECONFIG_PATH describe node NODE_NAME
Nel comando, sostituisci le voci seguenti con informazioni specifiche per l'ambiente:
KUBECONFIG_PATH
: il percorso del file kubeconfig del cluster di destinazione. (Il percorso del file kubeconfig è in generebmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Tuttavia, se hai specificato l'area di lavoro con il flag WORKSPACE_DIR, il percorso èWORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
.NODE_NAME
: il nome del nodo per il quale vuoi ricevere informazioni sanitarie.
Come abilitare/disabilitare il rilevamento dei problemi dei nodi
Ecco i passaggi da seguire per abilitare il rilevamento dei problemi dei nodi su un determinato cluster:
Utilizza il comando
kubectl
per modificare la configurazione dinode-problem-detector-config
.kubectl --kubeconfig=KUBECONFIG_PATH edit configmap \ node-problem-detector-config --namespace=CLUSTER_NAMESPACE
Questo comando avvia automaticamente un editor di testo (come vim o nano) in cui puoi modificare il file
node-problem-detector-config
. Nel comando, sostituisci le seguenti voci con informazioni specifiche per l'ambiente del cluster:- KUBECONFIG_PATH: il percorso del file kubeconfig del cluster di amministrazione. (Il percorso del file kubeconfig è in genere
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Tuttavia, se hai specificato l'area di lavoro con il flag WORKSPACE_DIR, il percorso èWORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. - CLUSTER_NAMESPACE: lo spazio dei nomi del cluster in cui vuoi abilitare il rilevamento dei problemi dei nodi.
- KUBECONFIG_PATH: il percorso del file kubeconfig del cluster di amministrazione. (Il percorso del file kubeconfig è in genere
Inizialmente,
node-problem-detector-config
ConfigMap
non ha un campodata
. Aggiungi il campodata
alla mappa di configurazione con la seguente coppia chiave-valore:data: enabled: "true"
Per disabilitare il rilevatore dei problemi dei nodi in uno spazio dei nomi del cluster, esegui i passaggi precedenti 1 e 2, ma nel passaggio 2 modifica il valore della chiave enabled
in "false".
Come arrestare/avviare il rilevamento dei problemi dei nodi
Node Detector viene eseguito come servizio systemd
su ogni nodo. Per gestire il rilevamento dei problemi dei nodi per un determinato nodo, utilizza SSH per accedere al nodo ed eseguire i seguenti comandi systemctl
.
Per disabilitare il rilevatore dei problemi dei nodi, esegui questo comando:
systemctl stop node-problem-detector
Per riavviare il Rilevatore di problemi di nodo, esegui questo comando:
systemctl restart node-problem-detector
Per verificare se il rilevatore dei problemi dei nodi è in esecuzione su un determinato nodo, esegui questo comando:
systemctl is-active node-problem-detector