Mit Kubernetes Alerting erkennen Sie relevante Veränderungen bei Resilienz-Indikatoren frühzeitig – und können sie beheben, bevor sie sich auf Ihr System auswirken.
Hier sind die 10 wichtigsten Alerts, die Sie für Ihren Kubernetes-Cluster konfigurieren sollten – alle enthalten in der Kubernetes-Monitoring-Plattform von PerfectScale. Mit PerfectScale werden Sie in Echtzeit über erkannte Risiken benachrichtigt.
PerfectScale liefert zeitnahe und zuverlässige Alerts, die Sie über ungewöhnliche Systemaktivitäten informieren.
Resilienz-Indikatoren
OOM
Out-of-Memory-Events treten in der Regel in folgenden Situationen auf:
- Das Memory-Limit für einen Pod ist zu niedrig gesetzt. Sobald die Speichernutzung des Pods das definierte Limit erreicht, wird ein Event ausgelöst.
- Ein Node steht unter Memory Pressure und versucht, einzelne Pods zu entfernen (Eviction). Offizielle Dokumentation
CPU Throttling
CPU Throttling tritt auf, wenn ein Pod sein definiertes CPU-Limit erreicht – das kann zu Latenzen in den Antwortzeiten Ihrer Anwendung führen.
Kubernetes nutzt den Quota-Mechanismus des CFS, um das Limit durchzusetzen. Die Quota basiert auf einem Zeitfenster, nicht auf der verfügbaren CPU-Leistung.
cfs_period_usdefiniert das Zeitfenster und beträgt immer 100000us (100ms). Ein Container mit einem Limit von 1 Core wird beispielsweise auf einem Node mit 2 Cores nach 50ms gedrosselt, auf einem Node mit 4 Cores bereits nach 25ms – unabhängig davon, wie viele CPU-Cores tatsächlich verbraucht werden.
RestartsObserved
Häufige Neustarts deuten auf ein Problem hin, das das angestrebte SLA mit hoher Wahrscheinlichkeit gefährdet.
Eviction
Eine Eviction bezeichnet das erzwungene Beenden und Entfernen eines laufenden Pods von einem Node. Eviction-Events entstehen meist durch Memory oder CPU Pressure auf einem Node.
Wird eine Eviction festgestellt, wird sofort ein Alert ausgelöst, um die Nutzer zu informieren. Stellen Sie sicher, dass Sie das Integrationsprofil konfiguriert und dem Cluster zugewiesen haben, um zeitnahe Benachrichtigungen über einen Slack- oder MS Teams-Kanal zu erhalten.
HPAAtMaxReplicasObserved
Steigt die Nachfrage nach einem Service oder einer Anwendung, skaliert der HPA das System, indem er dynamisch weitere Replicas hinzufügt. Sobald die maximal konfigurierte Anzahl an Replicas erreicht ist, meldet PerfectScale den Indikator HPAAtMaxReplicasObserved – das System kann mit den bestehenden Einstellungen also nicht weiter skalieren.
Der Schweregrad des Indikators hängt davon ab, wie lange ein Workload mit maximaler Replica-Anzahl läuft: Je länger dieser Zustand anhält, desto höher der Schweregrad.
Indikatoren für nicht gesetzte Limits/Requests
CpuRequestNotSet
Korrekt gesetzte CPU requests helfen dem Kubernetes-Scheduler, jedem Container die richtige Menge an CPU zuzuweisen – und stellen sicher, dass die Kapazität der Cluster-Nodes den Bedarf deckt.
MemRequestNotSet
Korrekt gesetzte MEMORY requests helfen dem Kubernetes-Scheduler, jedem Container die richtige Menge an Speicher zuzuweisen – und stellen sicher, dass die Kapazität der Cluster-Nodes den Bedarf deckt.
MemLimitNotSet
Ein korrekt gesetztes MEMORY limit schützt Ihren Worker-Node vor OOM und verhindert das Risiko einer Speicher-Überallokation.
Anders als CPU (komprimierbar, alle 100ms ein neuer Zyklus) ist MEMORY nicht komprimierbar und kann nicht überallokiert werden.
UnderProvisioning-Indikatoren
UnderProvisionedCpuRequest
Korrekt gesetzte CPU requests helfen dem Kubernetes-Scheduler, jedem Container die richtige Menge an CPU zuzuweisen – und stellen sicher, dass die Kapazität der Cluster-Nodes den Bedarf deckt.
UnderProvisionedMemRequest
Korrekt gesetzte MEMORY requests helfen dem Kubernetes-Scheduler, jedem Container die richtige Menge an Speicher zuzuweisen – und stellen sicher, dass die Kapazität der Cluster-Nodes den Bedarf deckt.
UnderProvisionedMemLimit
Ein korrekt gesetztes MEMORY limit schützt Ihren Worker-Node vor OOM und verhindert das Risiko einer Speicher-Überallokation. Ein zu niedrig angesetztes MEMORY limit kann jedoch unerwünschte OOM-Events auf Pod-Ebene auslösen und damit das angestrebte SLA gefährden.
Waste-Indikatoren
OverProvisionedCpuRequest
Korrekt gesetzte CPU requests helfen dem Kubernetes-Scheduler, jedem Container die richtige Menge an CPU zuzuweisen, damit die Kapazität der Cluster-Nodes den Bedarf deckt. Sind CPU Requests zu hoch angesetzt, werden Cloud-Ressourcen unnötig verschwendet – sie sind allokiert, werden aber nicht genutzt.
OverProvisionedMemoryRequest
Korrekt gesetzte MEMORY requests helfen dem Kubernetes-Scheduler, jedem Container die richtige Menge an Speicher zuzuweisen, damit die Kapazität der Cluster-Nodes den Bedarf deckt. Ist ein Memory Request jedoch zu hoch angesetzt, verschwenden Sie Cloud-Ressourcen, die allokiert, aber nie genutzt werden.
FAQ
1. Was ist Kubernetes Alerting?
Kubernetes Alerting benachrichtigt Nutzer über potenzielle Probleme im Cluster.
2. Wie richte ich Alerting in Kubernetes ein?
Alerting lässt sich mit Monitoring-Tools wie PerfectScale einrichten.
3. Welche Vorteile bietet Kubernetes Alerting?
Alerting sorgt für einen reibungslosen Betrieb und eine schnellere Problembehebung.
4. Wie kann ich Alerting-Regeln in Kubernetes anpassen?
Nutzer können Regeln auf Basis spezifischer Metriken definieren und konfigurieren.
5. Was sind Best Practices für Kubernetes Alerting?
Zu den Best Practices gehört das Einrichten von Alerts für zentrale Performance-Indikatoren.