Node Remediation
Zeigt ein Worker Node dauerhaft Fehlverhalten – etwa den Status NotReady, hängende Pods oder wiederkehrende Fehler der Container-Runtime – setzen Sie ihn gezielt neu auf, statt das gesamte Cluster anzufassen.
Voraussetzungen
- Zugang zum centron Control Panel
- Ein Kubernetes Cluster im Status Running und eine geprüfte Verbindung per
kubectl
Zustand prüfen
Verschaffen Sie sich zunächst einen Überblick über den betroffenen Node:
# Status aller Nodes
kubectl get nodes
# Details, Conditions und Events eines Nodes
kubectl describe node <node-name>
# Pods, die auf dem Node laufen
kubectl get pods --all-namespaces --field-selector spec.nodeName=<node-name>
Im Abschnitt Conditions der Ausgabe von describe finden Sie Hinweise wie MemoryPressure, DiskPressure oder NetworkUnavailable.
Im Control Panel sehen Sie den Zustand im Tab Resources: Klappen Sie den Node Pool über das +-Symbol auf, um die einzelnen Nodes mit ihrem Status einzublenden.
Node neu aufsetzen (Recycle)
Mit Recycle wird der Node vollständig neu aufgesetzt. Der Node Pool ersetzt ihn durch einen frisch bereitgestellten Node – die Sollgröße des Pools bleibt dabei erhalten. Das ist der bevorzugte Weg bei einem defekten Node.
- Öffnen Sie das Cluster und wechseln Sie in den Tab Resources.
- Klappen Sie den betroffenen Node Pool über das +-Symbol auf.
- Öffnen Sie am gewünschten Node das Kebab-Menü (drei Punkte).
- Wählen Sie Recycle und bestätigen Sie den Vorgang.
Der Node wechselt in den Status Deleting, anschließend erscheint der Ersatz-Node mit dem Status Provisioning und schließlich Running.
Node entfernen (Delete)
Mit Delete wird der Node entfernt, ohne dass ein Ersatz-Node an seine Stelle tritt. Die Kapazität des Pools verringert sich entsprechend.
- Öffnen Sie im Tab Resources das Kebab-Menü des Nodes.
- Wählen Sie Delete und bestätigen Sie den Vorgang.
Ist Autoscaling für den Pool aktiv und liegt die Node-Anzahl nach dem Löschen unter dem konfigurierten Minimum, stellt der Cluster Autoscaler automatisch einen neuen Node bereit.
Workloads vorher schützen
Sowohl Recycle als auch Delete beenden alle auf dem Node laufenden Pods. Sorgen Sie vorher dafür, dass Ihre Anwendungen das verkraften:
-
Betreiben Sie produktive Dienste mit mehreren Replicas, die über verschiedene Nodes verteilt sind.
-
Hinterlegen Sie ein
PodDisruptionBudget, damit stets eine Mindestanzahl an Pods erreichbar bleibt:apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: web-pdb
spec:
minAvailable: 2
selector:
matchLabels:
app: web -
Prüfen Sie bei zustandsbehafteten Workloads, ob die verwendeten Volumes an den Node gebunden sind.
Optional leeren Sie den Node vorab kontrolliert:
# Keine neuen Pods mehr auf dem Node platzieren
kubectl cordon <node-name>
# Vorhandene Pods verlagern
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
kubectl drain löscht Daten in emptyDir-Volumes des Nodes unwiderruflich. Verwenden Sie die Option nur, wenn diese Daten entbehrlich sind.
Wenn das Problem bestehen bleibt
Tritt der Fehler nach dem Neuaufsetzen erneut auf, liegt die Ursache meist nicht am einzelnen Node:
- Ressourcenmangel: Prüfen Sie im Tab Analytics, ob die Nodes des Pools dauerhaft an ihrer Kapazitätsgrenze arbeiten. Siehe Metriken ansehen.
- Fehlende Limits: Ohne gesetzte
limitskann ein einzelner Pod einen Node vollständig auslasten. - Zu knappe Dimensionierung: Siehe Plan auswählen.
Lässt sich die Ursache nicht eingrenzen, wenden Sie sich mit Cluster-Name, Node-Name und Zeitpunkt an den centron Support.