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 Anthos-Cluster on Bare Metal wird es als systemd-Dienst auf jedem Knoten ausgeführt.
Ab Anthos-Cluster on Bare Metal Version 1.10.0 ist der Node Problem Detector standardmäßig aktiviert.
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:
Verwenden Sie den Befehl
kubectl
, um dienode-problem-detector-config
-Konfigurationskarte zu bearbeiten.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 spezifische Informationen zu Ihrer Clusterumgebung:- KUBECONFIG_PATH: der 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: Der Namespace des Clusters, in dem Sie den Knotenproblemerkennung aktivieren möchten.
- KUBECONFIG_PATH: der 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 das Felddata
mit dem folgenden Schlüssel/Wert-Paar der Konfigurationsübersicht 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