Rilevamento problemi dei nodi è una libreria open source che monitora l'integrità dei nodi e rileva problemi relativi ai nodi, ad esempio problemi di runtime hardware, kernel o container. Nel Google Distributed Cloud, funziona come systemd su ciascun nodo.
A partire dalla release 1.10.0 di Google Distributed Cloud, è abilitato Node Problem Detector per impostazione predefinita.
Se hai bisogno di ulteriore assistenza, contatta Assistenza clienti Google Cloud.Quali problemi rileva?
Il rilevatore di problemi del nodo è in grado di rilevare i seguenti tipi di problemi:
- Problemi di runtime dei container, ad esempio i daemon di runtime che non rispondono
- Problemi hardware, ad esempio guasti di CPU, memoria o disco
- Problemi del kernel, ad esempio condizioni di deadlock del kernel o file system danneggiati
Viene eseguito su un nodo e segnala i problemi all'API Kubernetes
server come NodeCondition
o come Event
.
(un NodeCondition
è un problema che impedisce a un nodo di eseguire pod, mentre
Event
è un problema temporaneo che ha un effetto limitato sui pod, ma
comunque considerata abbastanza importante da riferire).
Alcuni dei NodeConditions
rilevati dal rilevatore di problemi relativi ai nodi sono:
KernelDeadlock
ReadonlyFilesystem
FrequentKubeletRestart
FrequentDockerRestart
FrequentContainerdRestart
FrequentUnregisterNetDevice
KubeletUnhealthy
ContainerRuntimeUnhealthy
CorruptDockerOverlay2
Alcuni esempi dei tipi di Events
segnalati dal rilevatore di problemi relativi ai nodi sono:
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 il tuo ambiente:
KUBECONFIG_PATH
: il percorso del cluster di destinazione kubeconfig. Il percorso del file kubeconfig è di solitobmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Tuttavia, se 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 che ti interessa informazioni sanitarie.
Come abilitare/disabilitare il rilevatore dei problemi dei nodi
Ecco i passaggi da seguire per abilitare il rilevatore dei problemi dei nodi in un determinato cluster:
Modifica il file
ConfigMap
del cluster, denominatonode-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 che puoi modificare il file
node-problem-detector-config
. Nella sostituisci le voci seguenti con informazioni specifiche per il tuo nell'ambiente del cluster:- KUBECONFIG_PATH: il percorso di kubeconfig del cluster di amministrazione
. Il percorso del file kubeconfig è di solito
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Tuttavia, se 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 rilevatore dei problemi dei nodi.
- KUBECONFIG_PATH: il percorso di kubeconfig del cluster di amministrazione
. Il percorso del file kubeconfig è di solito
Inizialmente, l'elemento
node-problem-detector-config
ConfigMap
non ha undata
. Aggiungi il campodata
alla mappa di configurazione con quanto segue coppia chiave-valore:data: enabled: "true"
Per disabilitare il rilevatore di problemi con i nodi in uno spazio dei nomi del cluster, esegui la procedura precedente
passaggi 1 e 2, ma nel passaggio 2, modifica il valore della chiave enabled
in
"false".
Come arrestare/avviare il rilevatore dei problemi del nodo
Il rilevatore di problemi dei nodi viene eseguito come servizio systemd
su ciascun nodo. Per gestire il rilevatore di problemi dei nodi per un determinato nodo, utilizza SSH per accedere al nodo ed esegui i seguenti comandi systemctl
.
Per disabilitare il rilevatore di problemi con i nodi, esegui questo comando:
systemctl stop node-problem-detector
Per riavviare il rilevatore di problemi relativi ai nodi, esegui questo comando:
systemctl restart node-problem-detector
Per verificare se il rilevatore di problemi dei nodi è in esecuzione su un determinato nodo, esegui questo comando:
systemctl is-active node-problem-detector
Funzionalità non supportate
Google Distributed Cloud non supporta le seguenti personalizzazioni del problema relativo ai nodi Rilevatore:
- Esportazione dei report di rilevamento dei problemi dei nodi in altri sistemi di monitoraggio, come Stackdriver o Prometheus.
- Personalizzazione di quali elementi
NodeConditions
oEvents
cercare. - Esecuzione di script di monitoraggio definiti dall'utente.
Passaggi successivi
- Se hai bisogno di ulteriore assistenza, contatta Assistenza clienti Google Cloud.