Node Problem Detector ist eine Open-Source- Bibliothek, die den Status von Knoten überwacht und häufige Knotenprobleme wie Hardware-, Kernel- oder Container-Laufzeitprobleme erkennt. In Google Distributed Cloud wird sie als ein systemd-Dienst auf jedem Knoten ausgeführt.
Ab Google Distributed Cloud-Release 1.10.0 ist der Node Problem Detector standardmäßig aktiviert.
Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care. Weitere Informationen zu Supportressourcen finden Sie unter Support erhalten. Dazu gehören:
- Anforderungen zum Eröffnen eines Supportfalls
- Tools zur Fehlerbehebung, z. B. Konfiguration der Umgebung, Logs und Messwerte
- Unterstützte Komponenten.
Welche Probleme werden erkannt?
Der Node Problem Detector kann die folgenden Arten von Problemen erkennen:
- Probleme mit der Containerlaufzeit, z. B. nicht reagierende Laufzeit-Daemons
- Hardwareprobleme wie CPU-, Arbeitsspeicher- oder Laufwerksfehler
- Kernel-Probleme wie Kernel-Deadlock-Bedingungen oder beschädigte Dateisysteme
Er wird auf einem Knoten ausgeführt und meldet die Probleme an den Kubernetes API
Server entweder als NodeCondition
oder als ein Event.
Eine NodeCondition ist ein Problem, das dazu führt, dass ein Knoten Pods nicht ausführen kann, während ein Event ein vorübergehendes Problem ist, das sich nur begrenzt auf Pods auswirkt, aber trotzdem als wichtig genug für eine Meldung angesehen wird.
In der folgenden Tabelle werden die von Node Problem Detector erkannten NodeConditions beschrieben und es wird angegeben, ob sie automatisch repariert werden können:
| Bedingung | Grund | Automatische Reparatur unterstützt1 |
|---|---|---|
KernelDeadlock |
Kernelprozesse warten darauf, dass andere Kernelprozesse die erforderlichen Ressourcen freigeben. | Nein |
ReadonlyFilesystem |
Der Cluster kann aufgrund eines Problems, z. B. einer vollen Festplatte, nicht in das Dateisystem schreiben. | Nein |
FrequentKubeletRestart |
Das Kubelet wird häufig neu gestartet, wodurch der Knoten Pods nicht effektiv ausführen kann. | Nein |
FrequentDockerRestart |
Der Docker-Daemon wurde in 20 Minuten mehr als fünfmal neu gestartet. | Nein |
FrequentContainerdRestart |
Die Containerlaufzeit wurde in 20 Minuten mehr als fünfmal neu gestartet. | Nein |
FrequentUnregisterNetDevice |
Auf dem Knoten werden häufig Netzwerkgeräte abgemeldet. | Nein |
CorruptDockerOverlay2 |
Es gibt Dateisystemprobleme oder Inkonsistenzen im Verzeichnis des Docker-Speichertreibers overlay2. | Nein |
OrphanContainers2 |
Ein Pod, der für einen Container spezifisch ist, wurde gelöscht, der entsprechende Container ist aber weiterhin auf dem Knoten vorhanden. | Nein |
ContainerRuntimeUnhealthy |
Die Containerlaufzeit funktioniert nicht richtig, wodurch verhindert wird, dass Pods auf dem Knoten ausgeführt oder geplant werden. | Ja |
FailedCgroupRemoval2 |
Einige Cgroups sind eingefroren. | Ja |
KubeletUnhealthy |
Der Knoten funktioniert nicht richtig oder reagiert nicht auf die Steuerungsebene. | Ja |
1 Für Version 1.32 und höher wird die Möglichkeit unterstützt, erkannte Probleme für ausgewählte Bedingungen automatisch zu reparieren.
2 Wird für Version 1.32 und höher unterstützt.
Beispiele für Events, die vom Node Problem Detector gemeldet werden:
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.
Welche Probleme werden repariert?
Ab Version 1.32 kann der Node Problem Detector bestimmte NodeConditions erkennen und das entsprechende Problem auf dem Knoten automatisch reparieren. Die folgenden NodeConditions unterstützen die automatische Reparatur:
ContainerRuntimeUnhealthyFailedCgroupRemovalKubeletUnhealthy
Erkannte Probleme aufrufen
Führen Sie den folgenden kubectl describe-Befehl aus, um nach NodeConditions und Events zu suchen:
kubectl describe node NODE_NAME \
--kubeconfig=KUBECONFIG
Ersetzen Sie Folgendes:
NODE_NAME: der Name des Knotens, den Sie prüfen.KUBECONFIG: der Pfad der kubeconfig-Datei des Clusters.
Node Problem Detector aktivieren und deaktivieren
Der Node Problem Detector ist standardmäßig aktiviert, kann aber in der ConfigMap-Ressource node-problem-detector-config deaktiviert werden. Sofern Sie ihn nicht explizit deaktivieren, überwacht der Node Problem Detector Knoten kontinuierlich auf bestimmte Bedingungen, die auf Probleme für den Knoten hinweisen.
So deaktivieren Sie den Node Problem Detector auf einem bestimmten Cluster:
Bearbeiten Sie die ConfigMap-Ressource
node-problem-detector-config:kubectl edit configmap node-problem-detector-config \ --kubeconfig=KUBECONFIG \ --namespace=CLUSTER_NAMESPACEErsetzen Sie Folgendes:
KUBECONFIG: der Pfad der kubeconfig-Datei des Clusters.CLUSTER_NAMESPACE: der Namespace des Clusters, in dem Sie den Node Problem Detector aktivieren möchten.
Dieser Befehl startet automatisch einen Texteditor, in dem Sie die Ressource
node-problem-detector-configbearbeiten können.Setzen Sie
data.enabledin der Ressourcendefinitionnode-problem-detector-configauffalse.apiVersion: v1 kind: ConfigMap metadata: creationTimestamp: "2025-04-19T21:36:44Z" name: node-problem-detector-config ... data: enabled: "false"Zu Beginn hat die ConfigMap
node-problem-detector-configkeindata-Feld. Sie müssen es möglicherweise hinzufügen.Speichern Sie die Änderungen und schließen Sie den Editor, um die Ressource zu aktualisieren.
Wenn Sie den Node Problem Detector wieder aktivieren möchten, führen Sie die vorherigen Schritte aus, setzen Sie aber data.enabled in der Ressourcendefinition node-problem-detector-config auf true.
Automatische Reparatur aktivieren und deaktivieren
Ab Version 1.32 sucht der Node Problem Detector nach bestimmten NodeConditions und repariert das entsprechende Problem auf dem Knoten automatisch. Die automatische Reparatur ist standardmäßig für unterstützte NodeConditions aktiviert, kann aber in der ConfigMap-Ressource node-problem-detector-config deaktiviert werden.
So deaktivieren Sie die automatische Reparatur auf einem bestimmten Cluster:
Bearbeiten Sie die ConfigMap-Ressource
node-problem-detector-config:kubectl edit configmap node-problem-detector-config \ --kubeconfig=KUBECONFIG \ --namespace=CLUSTER_NAMESPACEErsetzen Sie Folgendes:
KUBECONFIG: der Pfad der kubeconfig-Datei des Clusters.CLUSTER_NAMESPACE: der Namespace des Clusters, in dem Sie den Node Problem Detector aktivieren möchten.
Dieser Befehl startet automatisch einen Texteditor, in dem Sie die Ressource
node-problem-detector-configbearbeiten können.Setzen Sie
data.check-onlyin der Ressourcendefinitionnode-problem-detector-configauftrue.apiVersion: v1 kind: ConfigMap metadata: creationTimestamp: "2025-04-19T21:36:44Z" name: node-problem-detector-config ... data: enabled: "true" check-only: "true"Zu Beginn hat die ConfigMap
node-problem-detector-configkeindata-Feld. Sie müssen es möglicherweise hinzufügen. Wenn Siecheck-onlyauf"true"setzen, wird die automatische Reparatur für alle unterstützten Bedingungen deaktiviert.Speichern Sie die Änderungen und schließen Sie den Editor, um die Ressource zu aktualisieren.
Wenn Sie die automatische Reparatur für alle NodeConditions wieder aktivieren möchten, die sie unterstützen, setzen Sie
data.check-only in der ConfigMap node-problem-detector-config auf "false".
Node Problem Detector anhalten und neu starten
Der Node Problem Detector wird als systemd-Dienst auf jedem Knoten ausgeführt. Wenn Sie den Node Problem Detector für einen bestimmten Knoten verwalten möchten, verwenden Sie SSH, um auf den Knoten zuzugreifen, und führen Sie die folgenden systemctl-Befehle aus.
Führen Sie den folgenden Befehl aus, um den Node Problem Detector zu deaktivieren:
systemctl stop node-problem-detectorFühren Sie den folgenden Befehl aus, um den Node Problem Detector neu zu starten:
systemctl restart node-problem-detectorFühren Sie den folgenden Befehl aus, um zu prüfen, ob der Node Problem Detector auf einem bestimmten Knoten ausgeführt wird:
systemctl is-active node-problem-detector
Nicht unterstützte Funktionen
Google Distributed Cloud unterstützt die folgenden Anpassungen des Node Problem Detector nicht:
- Exportieren von Node Problem Detector-Berichten in andere Monitoringsysteme wie Stackdriver oder Prometheus.
- Anpassen der Suche nach bestimmten
NodeConditionsoderEvents. - Benutzerdefinierte Monitoring-Skripts ausführen.
Nächste Schritte
Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care. Weitere Informationen zu Supportressourcen finden Sie unter Support erhalten. Dazu gehören:
- Anforderungen zum Eröffnen eines Supportfalls
- Tools zur Fehlerbehebung, z. B. Konfiguration der Umgebung, Logs und Messwerte
- Unterstützte Komponenten.