Problembehandlung hoher CPU-Auslastung in AKS-Clustern
Hohe CPU-Auslastung ist ein Symptom für eine oder mehrere Anwendungen oder Prozesse, die so viel CPU-Zeit erfordern, dass die Leistung oder Nutzbarkeit des Computers beeinträchtigt wird. Hohe CPU-Auslastung kann auf viele Arten auftreten, aber sie wird hauptsächlich durch die Benutzerkonfiguration verursacht.
Wenn ein Knoten in einem Azure Kubernetes Service (AKS) -Cluster eine hohe CPU-Auslastung aufweist, können die darauf ausgeführten Anwendungen leistungs- und zuverlässigkeitseinbußen auftreten. Auch Anwendungen oder Prozesse werden instabil, was zu Problemen führen kann, die über langsame Reaktionen hinausgehen.
Dieser Artikel hilft Ihnen, die Knoten und Container zu identifizieren, die hohe CPU verbrauchen, und bietet bewährte Methoden zum Auflösen der hohen CPU-Auslastung.
Symptome
In der folgenden Tabelle sind die allgemeinen Symptome einer hohen CPU-Auslastung beschrieben:
Symptom | Beschreibung |
---|---|
CPU-Starvation | CPU-intensive Anwendungen verlangsamen andere Anwendungen auf demselben Knoten. |
Langsame Zustandsänderungen | Pods können länger dauern, bis sie bereit sind. |
NotReady-Knotenstatus | Ein Knoten wechselt in den NotReady-Zustand . Dieses Problem tritt auf, da der Container mit hoher CPU-Auslastung bewirkt, dass das Befehlszeilentool Kubectl nicht reagiert. |
Checkliste zur Problembehandlung
Verwenden Sie effektive Überwachungstools, und wenden Sie bewährte Methoden an, um eine hohe CPU-Auslastung zu beheben.
Schritt 1: Identifizieren von Knoten/Containern mit hoher CPU-Auslastung
Verwenden Sie eine der folgenden Methoden, um Knoten und Container mit hoher CPU-Auslastung zu identifizieren:
Verwenden Sie in einem Webbrowser das Feature "Containereinblicke" von AKS im Azure-Portal.
Verwenden Sie in einer Konsole das Befehlszeilentool Kubernetes (Kubectl).
Container Insights ist ein Feature in AKS. Es wurde entwickelt, um die Leistung von Containerworkloads zu überwachen. Sie können Containererkenntnisse verwenden, um Knoten, Container oder Pods zu identifizieren, die eine hohe CPU-Auslastung fördern.
Führen Sie die folgenden Schritte aus, um Knoten, Container oder Pods zu identifizieren, die eine hohe CPU-Auslastung steuern:
Navigieren Sie vom Azure-Portal zum Cluster.
Wählen Sie unter Überwachung die Option Erkenntnisse aus.
Legen Sie den entsprechenden Zeitraum fest.
Suchen Sie die Knoten mit hoher CPU-Auslastung, und überprüfen Sie, ob die Cpu-Auslastung des Knotens stabil ist.
Wählen Sie Knoten aus. Legen Sie die Metrik auf cpu-Auslastung (Millicores) fest, und legen Sie das Beispiel auf "Max" fest. Verwenden Sie das Sortierfeature auf dem Max , um die Knoten nach Max% zu sortieren. Die Knoten mit der höchsten CPU-Auslastung werden oben angezeigt.
Im folgenden Screenshot verwendet der Knoten nur 12 % der maximalen CPU und wird 16 Tage lang ausgeführt.
Nachdem Sie die Knoten mit hoher CPU-Auslastung gefunden haben, wählen Sie die Knoten aus, um pods auf ihnen und deren CPU-Auslastung zu finden.
Notiz
Der Prozentsatz der CPU- oder Speicherauslastung für Pods basiert auf der für den Container angegebenen CPU-Anforderung. Er stellt nicht den Prozentsatz der CPU- oder Speicherauslastung für den Knoten dar. Sehen Sie sich also die tatsächliche CPU- oder Speicherauslastung anstelle des Prozentsatzes der CPU- oder Speicherauslastung für Pods an.
Sobald Sie die Liste der Pods mit hoher CPU-Auslastung erhalten, können Sie sie den Anwendungen zuordnen, die die Spitzen der CPU-Auslastung verursachen.
Schritt 2: Überprüfen bewährter Methoden, um eine hohe CPU-Auslastung zu vermeiden
In der folgenden Tabelle erfahren Sie, wie Sie bewährte Methoden implementieren, um eine hohe CPU-Auslastung zu vermeiden:
Bewährte Methode | Beschreibung |
---|---|
Festlegen geeigneter Grenzwerte für Container | Kubernetes ermöglicht es, Anforderungen und Grenzwerten für die Ressourcen für Container anzugeben. Ressourcenanforderungen und -grenzwerte stellen die minimale und maximale Anzahl von Ressourcen dar, die ein Container verwenden kann. Es wird empfohlen, geeignete Anforderungen und Grenzwerte festzulegen, um die entsprechende Kubernetes Quality of Service (QoS) -Klasse für jeden Pod auszuwählen. |
Aktivieren der automatischen horizontalen Podskalierung (HPA) | Das Festlegen geeigneter Grenzwerte in Kombination mit der Aktivierung von HPA kann dazu beitragen, eine hohe CPU-Auslastung zu beheben. |
Auswählen höherer SKU-VMs | Verwenden Sie höhere SKU-VMs, um hohe CPU-Workloads verarbeiten zu können. Erstellen Sie dazu einen neuen Knotenpool, sperren Sie die Knoten ab, damit sie nicht planbar sind, und leeren Sie den vorhandenen Knotenpool. |
Isolieren von System- und Benutzerworkloads | Es wird empfohlen, einen separaten Knotenpool (neben dem Agentpool) zu erstellen, um Ihre Workloads auszuführen. Dadurch kann verhindert werden, dass der Systemknotenpool überlastet wird, und die Leistung wird verbessert. |
References
- Übersicht über Container Insights
- Überwachen der Leistung Ihres Kubernetes-Clusters mit Container Insights
- So verwalten Sie den Container insights-Agent
- Ressourcenbeschränkungen
- Ressourcenkontingente
- Beschränken von Bereichen
- Servicequalität
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.