Wie kann ich den Festplattendruck auf meinen Amazon EKS-Worker-Knoten beheben?
Ich möchte den übermäßigen Festplattendruck auf meinen Amazon Elastic Kubernetes Service (Amazon EKS)-Worker-Knoten beheben.
Kurzbeschreibung
Der Festplattendruck auf den Kubernetes-Worker-Knoten tritt auf, wenn der verfügbare Festplattenspeicher auf ein niedriges Niveau sinkt. Um den Festplattendruck zu verringern, erhöhe die Größe des EBS-Volumes oder füge der Knotengruppe neue Worker-Knoten hinzu, um mehr Festplattenkapazität bereitzustellen. Du kannst auch die Schwellenwerte für die Speicherbereinigung von Kubelet-Bildern anpassen, die Rotation der Container-Laufzeit-Protokolle konfigurieren und ungenutzte Images manuell bereinigen, um die Festplattennutzung effektiv zu verwalten.
Es ist wichtig, den temporären Speicher zu überwachen und zu verwalten, um Probleme mit der Festplattendruck zu vermeiden und sicherzustellen, dass die Kubernetes-Cluster ordnungsgemäß ausgeführt werden.
Wenn du zu viel Festplattendruck hast, erhältst du möglicherweise eine Fehlermeldung.
Für den Knoten erhältst du möglicherweise eine Fehlermeldung ähnlich der folgenden:
"Warning DiskPressure ... kubelet, worker-node DiskPressure on node"
Für Kubelet erhältst du möglicherweise eine Fehlermeldung ähnlich der folgenden:
"Disk usage on image filesystem is over the high threshold, trying to free bytes down to the low threshold"
Um das Problem zu bestätigen, führe den Befehl df -h aus, um die Festplattennutzung auf dem Worker-Knoten zu überprüfen.
Beispielausgabe:
/dev/nvme0n1p1 20G 18G 2.2G 90% / ........
Hinweis: Im vorherigen Beispiel wird das Root-Dateisystem /dev/nvme0n1p1 zu 90 % genutzt. Die hohe Nutzung führt zu Problemen mit dem Festplattendruck und der fehlgeschlagenen Image Garbage Collection.
Lösung
Die Größe des EBS-Volumes erhöhen
Um den verfügbaren Festplattenspeicherplatz zu erhöhen, vergrößere das EBS-Volume, das an den Worker-Knoten angeschlossen ist. Weitere Informationen findest du unter Wie erhöhe oder verringere ich die Größe meines EBS-Volumes?
Hinweis: Anstatt die Größe der temporären Volumes zu ändern, empfiehlt es sich, neue Instances mit der gewünschten Festplattengröße bereitzustellen. Verwende die neuen Instances, um die alte Instance zu ersetzen. Dann haben die neuen Instances die richtige Festplattengröße und entsprechen der Denkweise der unveränderlichen Infrastruktur.
Der Knotengruppe einen neuen Worker-Knoten hinzufügen
Füge der Knotengruppe oder dem Pool einen neuen Knoten hinzu, um dem Cluster mehr Festplatten-Volume hinzuzufügen und die Workload auf mehrere Knoten zu verteilen. Dadurch wird der Festplattendruck auf jedem einzelnen Knoten verringert.
Benutzerdefinierte Schwellenwerte für den Kubelet Garbage Collector einrichten
Konfiguriere das Kubelet so, dass es die Image Garbage Collection bei unterschiedlichen Schwellenwerten für die Festplattennutzung initiiert. Setze dazu die Argumente**--image-gc-high-threshold** und**--image-gc-low-threshold**, um mehr Puffer zu ermöglichen. Stelle beispielsweise den hohen Schwellenwert auf 70 % und den niedrigen Schwellenwert auf 60 % ein, um einen größeren Puffer an freiem Festplattenspeicherplatz zu erhalten. Diese Konfiguration ermöglicht es dem Kubelet, eine Image Garbage Collection durchzuführen, bevor die Festplatte kritisch voll wird.
Weitere Informationen zur Konfiguration dieser Argumente auf den Worker-Knoten findest du unter Wie konfiguriere ich Amazon EKS-Worker-Knoten, um den Image-Cache bei einem bestimmten Prozentsatz der Festplattennutzung zu bereinigen?
Die Rotation des Container-Laufzeit-Protokolls überprüfen und anpassen
Containerisierte Anwendungen schreiben Protokolle auf stdout und stderr und Protokolldateien werden von der Container-Laufzeit verwaltet. Es hat sich bewährt, die Protokoll-Rotationseinstellungen für die Container-Laufzeit auf den Worker-Knoten anzupassen.
Um die Protokoll-Rotation für containerd zu konfigurieren, verwende die containerd.runc.log-Optionen in der Konfigurationsdatei /etc/cotainerd/config/toml. Lege die Optionen log_file_max und log_file_max_size fest, um die maximale Anzahl rotierter Protokolldateien und die maximale Größe jeder Protokolldatei zu steuern.
Unbenutzte Container-Images bereinigen
Wenn das Kubelet nicht automatisch eine Image Garbage Collection durchführen kann, bereinige manuell ungenutzte Container-Images auf dem Worker-Knoten. Verwende den Befehl crictl rmi --prune, um hängende oder ungenutzte Bilder zu entfernen und erheblichen Speicherplatz freizugeben.
Den temporären Speicher verwalten
Um langfristige Stabilität und einen reibungslosen Betrieb der Anwendungen zu gewährleisten, empfiehlt es sich, kurzlebige Speicher ordnungsgemäß zu verwalten. Wenn du keine Beschränkungen für temporären Speicher festlegen, verbraucht ein Pod möglicherweise den gesamten Festplattenspeicherplatz auf dem Knoten, auf dem er ausgeführt wird.
Um dieses Risiko zu minimieren, lege geeignete temporäre Speicheranforderungen und Grenzwerte für die Pods fest. Ergreife die folgenden Maßnahmen, um die Grenzwerte festzulegen:
- Um die Speicheranforderungen für Pods zu ermitteln, analysiere den Speicherbedarf der Anwendung, temporäre Daten und alle anderen Dateien, die im temporären Speicher gespeichert sind. Anschließend kannst du die Speicheranforderungen für jeden Pod abschätzen.
- Um Anforderungen und Grenzwerte für temporären Speicher festzulegen, definiere die Mindestmenge an temporärem Speicher, die erforderlich ist, damit den Pod ordnungsgemäß funktioniert. Anschließend kann der Kubernetes-Scheduler Knoten mit ausreichenden Speicherressourcen für die Pods zuweisen.
Beispiel:apiVersion: v1 kind: Pod metadata: name: my-app spec: containers: - name: my-app-container image: my-app:latest resources: requests: ephemeral-storage: "1Mi" limits: ephemeral-storage: "2Mi"
- Themen
- Containers
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 3 Jahren