Node Problem Detector è una raccolta open source che monitora lo stato dei nodi e rileva i problemi comuni dei nodi, come problemi di runtime dell'hardware, del kernel o del contenitore. In Google Distributed Cloud, viene eseguito come servizio systemd su ogni nodo.
A partire dalla versione 1.10.0 di Google Distributed Cloud, il rilevatore problemi nodo è abilitato per impostazione predefinita.
Se hai bisogno di ulteriore assistenza, contatta l'assistenza clienti Google Cloud.Quali problemi rileva?
Il rilevatore di problemi del nodo può rilevare i seguenti tipi di problemi:
- Problemi di runtime del contenitore, ad esempio demoni di runtime che non rispondono
- Problemi hardware, ad esempio guasti della CPU, della memoria o del 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 server 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 sufficientemente importante da segnalare.
Alcuni dei NodeConditions
rilevati dal Rilevamento dei problemi del nodo sono:
KernelDeadlock
ReadonlyFilesystem
FrequentKubeletRestart
FrequentDockerRestart
FrequentContainerdRestart
FrequentUnregisterNetDevice
KubeletUnhealthy
ContainerRuntimeUnhealthy
CorruptDockerOverlay2
Ecco alcuni esempi di tipi di Events
segnalati da Node Problem Detector:
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 il seguente comando kubectl describe
su un nodo per cercare NodeConditions
e Events
:
kubectl --kubeconfig=KUBECONFIG_PATH describe node NODE_NAME
Nel comando, sostituisci le seguenti voci con informazioni specifiche per il tuo ambiente:
KUBECONFIG_PATH
: il percorso del file kubeconfig del cluster di destinazione. In genere il percorso del file kubeconfig èbmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Tuttavia, se hai specificato lo spazio di lavoro con il flag WORKSPACE_DIR, il percorso èWORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
).NODE_NAME
: il nome del nodo di cui vuoi ricevere informazioni sullo stato.
Come attivare/disattivare il rilevatore problemi nodo
Di seguito sono riportati i passaggi da seguire per attivare il Rilevamento dei problemi relativi ai nodi in un determinato cluster:
Modifica il file
ConfigMap
del cluster, chiamatonode-problem-detector-config
kubectl --kubeconfig=KUBECONFIG_PATH edit configmap \ node-problem-detector-config --namespace=CLUSTER_NAMESPACE
Questo comando avvia automaticamente un editor di testo (ad esempio vim o nano) in cui puoi modificare il file
node-problem-detector-config
. Nel comando, sostituisci le seguenti voci con informazioni specifiche per il tuo ambiente cluster:- KUBECONFIG_PATH: il percorso del file kubeconfig del cluster di amministrazione. In genere il percorso del file kubeconfig è
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Tuttavia, se hai specificato lo spazio 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 attivare Node Problem Detector.
- KUBECONFIG_PATH: il percorso del file kubeconfig del cluster di amministrazione. In genere il percorso del file kubeconfig è
Inizialmente,
node-problem-detector-config
ConfigMap
non ha undata
campo. Aggiungi il campodata
alla mappa di configurazione con la seguente coppia chiave-valore:data: enabled: "true"
Per disattivare Node Problem Detector in uno spazio dei nomi del cluster, esegui i passaggi 1 e 2 precedenti, ma nel passaggio 2 modifica il valore della chiave enabled
in "false".
Come interrompere/avviare Node Problem Detector
Node Problem Detector viene eseguito come servizio systemd
su ogni nodo. Per gestire Node Problem Detector per un determinato nodo, utilizza SSH per accedere al nodo ed esegui i seguenti comandi systemctl
.
Per disattivare Node Problem Detector, esegui il seguente comando:
systemctl stop node-problem-detector
Per riavviare Node Problem Detector, esegui il seguente comando:
systemctl restart node-problem-detector
Per verificare se Node Problem Detector è in esecuzione su un determinato nodo, esegui il seguente comando:
systemctl is-active node-problem-detector
Funzionalità non supportate
Google Distributed Cloud non supporta le seguenti personalizzazioni di Node Problem detector:
- Esportazione dei report di Node Problem Detector in altri sistemi di monitoraggio, come Stackdriver o Prometheus.
- Personalizzare i
NodeConditions
o iEvents
da cercare. - Esecuzione di script di monitoraggio definiti dall'utente.
Passaggi successivi
- Se hai bisogno di ulteriore assistenza, contatta l'assistenza clienti Google Cloud.