Problembehandlung bei hoher CPU-Auslastung in AKS-Clustern

Eine hohe CPU-Auslastung ist ein Symptom für eine oder mehrere Anwendungen oder Prozesse, die so viel CPU-Zeit benötigen, dass die Leistung oder Nutzbarkeit des Computers beeinträchtigt wird. Eine hohe CPU-Auslastung kann in vielerlei Hinsicht auftreten, wird aber hauptsächlich durch die Benutzerkonfiguration verursacht.

Wenn ein Knoten in einem AKS-Cluster (Azure Kubernetes Service) eine hohe CPU-Auslastung aufweist, kann die Leistung und Zuverlässigkeit der darauf ausgeführten Anwendungen beeinträchtigt werden. Anwendungen oder Prozesse werden ebenfalls instabil, was zu Problemen führen kann, die über langsame Reaktionen hinausgehen.

Dieser Artikel hilft Ihnen, die Knoten und Container zu identifizieren, die eine hohe CPU-Auslastung verbrauchen, und enthält bewährte Methoden, um eine hohe CPU-Auslastung zu beheben.

Problembeschreibung

In der folgenden Tabelle werden die allgemeinen Symptome einer hohen CPU-Auslastung beschrieben:

Problembeschreibung Beschreibung
CPU-Hunger CPU-intensive Anwendungen verlangsamen andere Anwendungen auf demselben Knoten.
Langsame Zustandsänderungen Pods können länger dauern, bis sie vorbereitet sind.
NotReady-Knotenstatus Ein Knoten wechselt in den NotReady-Zustand . Dieses Problem tritt auf, weil der Container mit hoher CPU-Auslastung dazu führt, dass das Kubectl-Befehlszeilentool nicht mehr 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 Container Insights-Feature von AKS im Azure-Portal.

  • Verwenden Sie in einer Konsole das Kubernetes-Befehlszeilentool (kubectl).

Container Insights ist ein Feature in AKS. Es wurde entwickelt, um die Leistung von Containerworkloads zu überwachen. Sie können Container Insights 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 verursachen:

  1. Navigieren Sie vom Azure-Portal zum Cluster.

  2. Wählen Sie unter Überwachung die Option Insights aus.

    Screenshot der Überwachung unter

  3. Legen Sie den entsprechenden Zeitbereich fest.

    Screenshot eines Zeitraums von sechs Stunden.

  4. 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 Metrik auf CPU-Auslastung (Millicores) und dann das Beispiel auf Max. fest. Verwenden Sie die Sortierfunktion für 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 seit 16 Tagen ausgeführt.

    Screenshot der Knoten unter der Auswahl

  5. Sobald Sie die Knoten mit hoher CPU-Auslastung gefunden haben, wählen Sie die Knoten aus, um Pods auf ihnen und ihre CPU-Auslastung zu finden.

    Screenshot der Option

    Hinweis

    Der Prozentsatz der CPU- oder Arbeitsspeicherauslastung für Pods basiert auf der CPU-Anforderung, die für den Container angegeben wurde. Er stellt nicht den Prozentsatz der CPU- oder Arbeitsspeicherauslastung für den Knoten dar. Betrachten Sie also die tatsächliche CPU- oder Arbeitsspeicherauslastung und nicht den Prozentsatz der CPU- oder Arbeitsspeicherauslastung für Pods.

    Sobald Sie die Liste der Pods mit hoher CPU-Auslastung erhalten haben, können Sie sie den Anwendungen zuordnen, die die Spitze der CPU-Auslastung verursachen.

Schritt 2: Überprüfen bewährter Methoden zum Vermeiden einer hohen CPU-Auslastung

In der folgenden Tabelle erfahren Sie, wie Sie bewährte Methoden zum Vermeiden einer hohen CPU-Auslastung implementieren:

Bewährte Methode Beschreibung
Festlegen geeigneter Grenzwerte für Container Kubernetes ermöglicht das Angeben von Anforderungen und Grenzwerten für die Ressourcen für Container. 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 geeignete QoS-Klasse (Quality of Service) von Kubernetes für jeden Pod auszuwählen.
Aktivieren der horizontalen automatischen Podskalierung (Horizontal Pod Autoscaler, HPA) Das Festlegen geeigneter Grenzwerte zusammen mit der Aktivierung von HPA kann bei der Behebung einer hohen CPU-Auslastung helfen.
Auswählen höherer SKU-VMs Verwenden Sie VMs mit höherer SKU, um hohe CPU-Workloads zu verarbeiten. Erstellen Sie dazu einen neuen Knotenpool, sperren Sie die Knoten ab, um sie nicht planbar zu machen, und entleeren Sie den vorhandenen Knotenpool.
Isolieren von System- und Benutzerworkloads Es wird empfohlen, einen separaten Knotenpool (außer dem Agentpool) zu erstellen, um Ihre Workloads auszuführen. Dies kann eine Überlastung des Systemknotenpools verhindern und eine bessere Leistung bieten.

References

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.