Node Problem Detector ist eine Open-Source-Bibliothek, die den Zustand von Knoten überwacht und häufige Knotenprobleme wie Hardware-, Kernel- oder Container-Laufzeitprobleme erkennt. In Google Distributed Cloud wird es als 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. Dazu gehören:
- Anforderungen für das Eröffnen eines Supportfalls.
- Tools zur Fehlerbehebung, z. B. Ihre Umgebungskonfiguration, 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 Event
.
Ein 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 NodeConditions
beschrieben, die vom Node Problem Detector erkannt werden, und es wird angegeben, ob sie automatisch behoben werden können:
Bedingung | Grund | Automatische Reparatur wird unterstützt1 |
---|---|---|
KernelDeadlock |
Kernelprozesse warten darauf, dass andere Kernelprozesse erforderliche 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 verhindert wird, dass auf dem Knoten effektiv Pods ausgeführt werden. | Nein |
FrequentDockerRestart |
Der Docker-Daemon wurde innerhalb von 20 Minuten mehr als fünfmal neu gestartet. | Nein |
FrequentContainerdRestart |
Die Container-Laufzeit wurde innerhalb von 20 Minuten mehr als fünfmal neu gestartet. | Nein |
FrequentUnregisterNetDevice |
Die Registrierung von Netzwerkgeräten wird auf dem Knoten häufig aufgehoben. | Nein |
KubeletUnhealthy |
Der Knoten funktioniert nicht richtig oder reagiert nicht auf die Steuerungsebene. | Nein |
ContainerRuntimeUnhealthy |
Die Container-Laufzeit funktioniert nicht richtig, sodass Pods nicht auf dem Knoten ausgeführt oder geplant werden können. | Nein |
CorruptDockerOverlay2 |
Es gibt Probleme mit dem Dateisystem oder Inkonsistenzen im Verzeichnis des Docker-Speichertreibers „overlay2“. | Nein |
OrphanContainers 2 |
Ein Pod, der zu einem Container gehört, wurde gelöscht, der entsprechende Container ist jedoch weiterhin auf dem Knoten vorhanden. | Nein |
FailedCgroupRemoval 2 |
Einige Cgroups sind eingefroren. | Ja |
1 In Version 1.32 und höher wird die Möglichkeit, erkannte Probleme automatisch zu beheben, für ausgewählte Bedingungen unterstützt.
2 Wird ab Version 1.32 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 behoben?
Ab Version 1.32 kann der Node Problem Detector bestimmte NodeConditions
automatisch beheben, wenn er sie erkennt. Ab Version 1.32 unterstützt nur FailedCgroupRemoval
die automatische Reparatur.NodeCondition
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 node-problem-detector-config
-ConfigMap-Ressource deaktiviert werden. Sofern Sie Node Problem Detector nicht explizit deaktivieren, überwacht er Knoten kontinuierlich auf bestimmte Bedingungen, die auf Probleme mit dem Knoten hinweisen.
Führen Sie die folgenden Schritte aus, um Node Problem Detector auf einem bestimmten Cluster zu deaktivieren:
Bearbeiten Sie die ConfigMap-Ressource
node-problem-detector-config
:kubectl edit configmap node-problem-detector-config \ --kubeconfig=KUBECONFIG \ --namespace=CLUSTER_NAMESPACE
Ersetzen 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.
Mit diesem Befehl wird automatisch ein Texteditor gestartet, in dem Sie die
node-problem-detector-config
-Ressource bearbeiten können.Legen Sie
data.enabled
in der Ressourcendefinitionnode-problem-detector-config
auffalse
fest.apiVersion: v1 kind: ConfigMap metadata: creationTimestamp: "2025-04-19T21:36:44Z" name: node-problem-detector-config ... data: enabled: "false"
Zu Beginn hat die
node-problem-detector-config
-ConfigMap kein Felddata
. Sie müssen es also möglicherweise hinzufügen.Um die Ressource zu aktualisieren, speichern Sie die Änderungen und schließen Sie den Editor.
Wenn Sie den Node Problem Detector wieder aktivieren möchten, führen Sie die vorherigen Schritte aus, legen Sie aber data.enabled
in der node-problem-detector-config
-Ressourcendefinition auf true
fest.
Automatische Reparatur aktivieren und deaktivieren
Ab Version 1.32 sucht der Node Problem Detector nach bestimmten NodeConditions
und behebt 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 das Verhalten der automatischen Reparatur für einen bestimmten Cluster:
Bearbeiten Sie die ConfigMap-Ressource
node-problem-detector-config
:kubectl edit configmap node-problem-detector-config \ --kubeconfig=KUBECONFIG \ --namespace=CLUSTER_NAMESPACE
Ersetzen 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.
Mit diesem Befehl wird automatisch ein Texteditor gestartet, in dem Sie die
node-problem-detector-config
-Ressource bearbeiten können.Legen Sie
data.check-only
in der Ressourcendefinitionnode-problem-detector-config
auftrue
fest.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
node-problem-detector-config
-ConfigMap kein Felddata
. Sie müssen es also möglicherweise hinzufügen. Wenn Siecheck-only
auf"true"
setzen, wird die automatische Reparatur für alle unterstützten Bedingungen deaktiviert.Um die Ressource zu aktualisieren, speichern Sie die Änderungen und schließen Sie den Editor.
Wenn Sie die automatische Reparatur für alle NodeConditions
, die sie unterstützen, wieder aktivieren möchten, setzen Sie data.check-only
in der ConfigMap node-problem-detector-config
auf "false"
.
Node Problem Detector anhalten und neu starten
Node Problem Detector wird als systemd
-Dienst auf jedem Knoten ausgeführt. Wenn Sie 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 Node Problem Detector zu deaktivieren:
systemctl stop node-problem-detector
Führen Sie den folgenden Befehl aus, um den Node Problem Detector neu zu starten:
systemctl restart node-problem-detector
Fü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
NodeConditions
oderEvents
. - 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. Dazu gehören:
- Anforderungen für das Eröffnen eines Supportfalls.
- Tools zur Fehlerbehebung, z. B. Ihre Umgebungskonfiguration, Logs und Messwerte.
- Unterstützte Komponenten.