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 der 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.Welche Probleme werden erkannt?
Der Detektor für Knotenprobleme kann folgende 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.
Beispiele für NodeConditions
, die vom Node Problem Detector erkannt werden:
KernelDeadlock
ReadonlyFilesystem
FrequentKubeletRestart
FrequentDockerRestart
FrequentContainerdRestart
FrequentUnregisterNetDevice
KubeletUnhealthy
ContainerRuntimeUnhealthy
CorruptDockerOverlay2
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.
Erkannte Probleme aufrufen
Führen Sie den folgenden kubectl describe
-Befehl auf einem Knoten aus, um nach NodeConditions
und Events
zu suchen:
kubectl --kubeconfig=KUBECONFIG_PATH describe node NODE_NAME
Ersetzen Sie im Befehl die folgenden Einträge durch Informationen, die für Ihre Clusterumgebung spezifisch sind:
KUBECONFIG_PATH
: Der Pfad zur kubeconfig-Datei des Zielclusters. Der Pfad zur kubeconfig-Datei lautet normalerweisebmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Wenn Sie jedoch Ihren Arbeitsbereich mit dem Flag WORKSPACE_DIR angegeben haben, lautet der PfadWORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
.NODE_NAME
: Name des Knotens, zu dem Sie Statusinformationen benötigen.
Node Problem Detector aktivieren/deaktivieren
Führen Sie die folgenden Schritte aus, um den Node Problem Detector auf einem bestimmten Cluster zu aktivieren:
Bearbeiten Sie die
ConfigMap
-Datei des Clusters, die den Namennode-problem-detector-config
hat.kubectl --kubeconfig=KUBECONFIG_PATH edit configmap \ node-problem-detector-config --namespace=CLUSTER_NAMESPACE
Dieser Befehl startet automatisch einen Texteditor (z. B. vim oder nano), in dem Sie die Datei
node-problem-detector-config
bearbeiten können. Ersetzen Sie im Befehl die folgenden Einträge durch Informationen, die für Ihre Clusterumgebung spezifisch sind:- KUBECONFIG_PATH: Pfad zur kubeconfig-Datei des Administratorclusters. Der Pfad zur kubeconfig-Datei lautet normalerweise
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Wenn Sie jedoch Ihren Arbeitsbereich mit dem Flag WORKSPACE_DIR angegeben haben, lautet der PfadWORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. - CLUSTER_NAMESPACE: Namespace des Clusters, in dem Sie den Node Problem Detector aktivieren möchten.
- KUBECONFIG_PATH: Pfad zur kubeconfig-Datei des Administratorclusters. Der Pfad zur kubeconfig-Datei lautet normalerweise
Zu Beginn hat
node-problem-detector-config
ConfigMap
kein Felddata
. Fügen Sie der Konfigurationszuordnung das Felddata
mit dem folgenden Schlüssel/Wert-Paar hinzu:data: enabled: "true"
Führen Sie zum Deaktivieren des Node Problem Detector in einem Cluster-Namespace die vorherigen Schritte 1 und 2 aus, aber in Schritt 2 ändern Sie den Wert des Schlüssels enabled
in „false“.
Node Problem Detector anhalten/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.