Freigeben über


Problembehandlung einer Speichersättigung in AKS-Clustern

In diesem Artikel werden Methoden zur Problembehandlung von Speichersättigungsproblemen erläutert. Die Speichersättigung tritt auf, wenn mindestens eine Anwendung oder ein Prozess mehr Arbeitsspeicher benötigt, als ein Containerhost bereitstellen kann, oder wenn der Host den verfügbaren Speicher auslastet.

Voraussetzungen

Symptome

In der folgenden Tabelle sind die allgemeinen Symptome der Speichersättigung beschrieben.

Symptom Beschreibung
Ungeplante Pods Zusätzliche Pods können nicht geplant werden, wenn der Knoten nahe an seinem festgelegten Speichergrenzwert liegt.
Pod Eviction Wenn ein Knoten nicht mehr genügend Arbeitsspeicher hat, kann das Kubelet Pods entfernen. Obwohl die Steuerungsebene versucht, die entfernten Pods auf anderen Knoten mit Ressourcen neu zu planen, besteht keine Garantie dafür, dass andere Knoten über ausreichend Arbeitsspeicher verfügen, um diese Pods auszuführen.
Knoten nicht bereit Die Speichersättigung kann dazu führen kubelet , dass containerd sie nicht mehr reagiert und schließlich Probleme mit der Knotenbereitschaft verursacht.
Out-of-Memory (OOM) Kill Ein OOM-Problem tritt auf, wenn die Pod-Eviction ein Knotenproblem nicht verhindern kann.

Checkliste zur Problembehandlung

Um die Speichersättigung zu reduzieren, verwenden Sie effektive Überwachungstools und wenden Bewährte Methoden an.

Schritt 1: Identifizieren von Knoten mit Speichersättigung

Verwenden Sie eine der folgenden Methoden, um Knoten mit Speichersättigung 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, das die Leistung der Containerarbeitsauslastung überwacht. Weitere Informationen finden Sie unter Enable Container Insights for Azure Kubernetes Service (AKS)-Cluster.

  1. Suchen Sie im Azure-Portal nach Kubernetes-Diensten, und wählen Sie sie aus.

  2. Wählen Sie in der Liste der Kubernetes-Dienste den Namen Ihres Clusters aus.

  3. Suchen Sie im Navigationsbereich Ihres Clusters die Überschrift "Überwachung", und wählen Sie dann "Insights" aus.

  4. Legen Sie den entsprechenden Zeitbereichswert fest.

  5. Wählen Sie die Registerkarte "Knoten " aus.

  6. Wählen Sie in der Metrikliste den Arbeitsspeicherarbeitssatz (berechnet von Allocatable) aus.

  7. Legen Sie in der Quantilsauswahl das Beispiel auf "Max" fest, und wählen Sie dann zweimal die Spaltenbeschriftung "Max % " aus. Diese Aktion sortiert die Tabellenknoten nach dem maximalen Prozentsatz des verwendeten Arbeitsspeichers von der höchsten bis zur niedrigsten.

    Azure-Portal Screenshot der Knotenansicht in Containereinblicken in einem Azure Kubernetes Service (AKS)-Cluster.

  8. Da der erste Knoten die höchste Speicherauslastung aufweist, wählen Sie diesen Knoten aus, um die Speicherauslastung der auf dem Knoten ausgeführten Pods zu untersuchen.

    Azure-Portal Screenshot der Container eines Knotens unter der Knotenansicht in Containereinblicken in einem Azure Kubernetes Service (AKS)-Cluster.

    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.

Nachdem Sie nun die Pods identifiziert haben, die einen hohen Arbeitsspeicher verwenden, können Sie die Anwendungen identifizieren, die auf dem Pod ausgeführt werden.

Schritt 2: Überprüfen bewährter Methoden zum Vermeiden der Speichersättigung

In der folgenden Tabelle erfahren Sie, wie Sie bewährte Methoden zum Vermeiden der Speichersättigung implementieren.

Bewährte Methode Beschreibung
Verwenden von Speicheranforderungen und Grenzwerten Kubernetes bietet Optionen zum Angeben der Mindestspeichergröße (Anforderung) und der maximalen Speichergröße (Grenzwert) für einen Container. Durch das Konfigurieren von Grenzwerten für Pods können Sie Arbeitsspeicherauslastung auf dem Knoten vermeiden. Stellen Sie sicher, dass die Aggregatlimits für alle ausgeführten Pods den verfügbaren Arbeitsspeicher des Knotens nicht überschreiten. Diese Situation wird als Überlastung bezeichnet. Der Kubernetes-Scheduler weist Ressourcen basierend auf festgelegten Anforderungen und Grenzwerten über Quality of Service (QoS) zu. Ohne geeignete Grenzwerte plant der Scheduler möglicherweise zu viele Pods auf einem einzelnen Knoten. Dadurch kann es letztendlich zum Ausfall des Knotens kommen. Außerdem werden, während kubelet Pods entfernt, Pods priorisiert, bei denen die Speicherauslastung deren definierte Anforderungen überschreitet. Es wird empfohlen, die Arbeitsspeicheranforderung auf einen Wert nahe der tatsächlichen Nutzung festzulegen.
Aktivieren der automatischen Skalierung des horizontalen Pods Durch Skalieren des Clusters können Sie die Anforderungen auf viele Pods verteilen, um Speicherauslastung zu verhindern. Diese Methode kann den Speicherbedarf auf dem spezifischen Knoten reduzieren.
Verwenden von Antiaffinitätstags In Szenarien, in denen Arbeitsspeicher vom Entwurf her keinen Einschränkungen unterliegt, können Sie Knotenselektoren und Affinitäts- oder Antiaffinitätstags verwenden, wodurch die Workload auf bestimmte Knoten isoliert werden kann. Mithilfe von Antiaffinitätstags können Sie verhindern, dass andere Workloads Pods auf diesen Knoten planen. Dadurch wird das Problem der Speicherauslastung verringert.
Auswählen höherer SKU-VMs Virtuelle Computer (VMs), die über mehr Arbeitsspeicher (Random Access Memory, RAM) verfügen, eignen sich besser für die Verarbeitung einer hohen Arbeitsspeicherauslastung. Um diese Option verwenden zu können, müssen Sie einen neuen Knotenpool erstellen, die Knoten absperren (sie unplanbar machen) und den vorhandenen Knotenpool ausgleichen.
Isolieren von System- und Benutzerworkloads Es wird empfohlen, Ihre Anwendungen in einem Benutzerknotenpool auszuführen. Diese Konfiguration stellt sicher, dass Sie die Kubernetes-spezifischen Pods im Systemknotenpool isolieren und die Clusterleistung aufrechterhalten können.

Weitere Informationen

Informationen zum Haftungsausschluss von Drittanbietern

Die in diesem Artikel genannten Drittanbieterprodukte stammen von Herstellern, die von Microsoft unabhängig sind. Microsoft gewährt keine implizite oder sonstige Garantie in Bezug auf die Leistung oder Zuverlässigkeit dieser Produkte.

Haftungsausschluss für Kontaktinformationen von Drittanbietern

Die Kontaktinformationen zu den in diesem Artikel erwähnten Drittanbietern sollen Ihnen helfen, zusätzliche Informationen zu diesem Thema zu finden. Diese Kontaktinformationen können ohne vorherige Ankündigung geändert werden. Sie werden von Microsoft ohne jede Gewähr weitergegeben.

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.