Freigeben über


Die Speichersättigung erfolgt in Pods nach dem Clusterupgrade auf Kubernetes 1.25

In diesem Artikel wird erläutert, wie Pods behoben werden, die aufgrund von Speichersättigungs- oder OOM-Fehlern (Out-of-Memory) nicht mehr funktionieren, die nach dem Upgrade eines Microsoft Azure Kubernetes Service (AKS)-Clusters auf Kubernetes 1.25 auftreten.x.

Symptome

Mindestens eins der folgenden Probleme tritt auf:

  • Arbeitsspeicherdruck auf Knoten

  • Erhöhte Speicherauslastung für Apps im Vergleich zur Speicherauslastung vor dem Upgrade

  • CPU-Einschränkung auf Knoten

  • Pod-Fehler aufgrund von OOM-Fehlern

Leistungsbeeinträchtigungen können in Apps auftreten, die in den folgenden Umgebungen ausgeführt werden:

Notiz

Diese Liste der Umgebungen, in denen Leistungsbeeinträchtigungen auftreten können, ist keine umfassende Liste. Möglicherweise gibt es andere Umgebungen, in denen Speichersättigung oder OOM-Probleme auftreten.

Lösung

Notiz

Wenn nur eine erhöhte Speicherauslastung und keine anderen Symptome auftreten, die im Abschnitt "Symptome " erwähnt werden, ist keine Maßnahme erforderlich.

Ab der Veröffentlichung von Kubernetes 1.25 hat die cgroup Version 2-API die allgemeine Verfügbarkeit (GA) erreicht. AKS verwendet jetzt Ubuntu Linux Version 22.04. Standardmäßig verwendet Version 22.04 die cgroup Version 2-API. Um sicherzustellen, dass die cgroup Version 2-API für die Verwendung in anderen Umgebungen verfügbar ist, um das Problem mit der Speichersättigung zu verhindern, befolgen Sie die folgenden Anleitungen:

  • Wenn Sie Java-Anwendungen ausführen, führen Sie ein Upgrade auf eine Java-Version durch, die cgroup Version 2 unterstützt, und befolgen Sie die Anweisungen in Containerize your Java applications. Möglicherweise können Sie das Basisimage in bestimmten Versionen aktualisieren, in denen der Fix zurückportiert wurde. Verwenden Sie eine Version oder ein Framework, die systemeigene cgroup Version 2 unterstützt. Für Azure-Kunden unterstützt Microsoft offiziell Eclipse Temurin-Binärdateien (Java 8) und Microsoft Build of OpenJDK binaries (Java 11+).

  • Wenn Sie .NET verwenden, führen Sie ein Upgrade auf .NET, Version 5.0 oder höher, aus.

  • Wenn Sie eine höhere Entfernungsrate für die Pods feststellen, verwenden Sie höhere Grenzwerte und Anforderungen für die Pods.

  • cgroup v2 verwendet eine andere API als cgroup v1. Wenn Anwendungen vorhanden sind, die direkt auf das cgroup Dateisystem zugreifen, aktualisieren Sie sie auf spätere Versionen, die v2 unterstützen cgroup . Beispiel:

    • Überwachung und Sicherheitsmitarbeiter von Drittanbietern:

      Einige Überwachungs- und Sicherheits-Agents sind vom cgroup Dateisystem abhängig. Aktualisieren Sie diese Agents auf Versionen, die v2 unterstützen cgroup .

    • Java-Anwendungen:

      Verwenden Sie Versionen, die v2 vollständig unterstützen cgroup :

      • OpenJDK/HotSpot: jdk8u372, , 11.0.16, 15und höhere Versionen.
      • IBM Semeru Runtimes: 8.0.382.0, 11.0.20.0, 17.0.8.0, und höhere Versionen.
      • IBM Java: 8.0.8.6 und höhere Versionen.
    • uber-go/automaxprocs:
      Wenn Sie das uber-go/automaxprocs Paket verwenden, stellen Sie sicher, dass die Version oder höher ist v1.5.1 .

  • Eine alternative temporäre Lösung besteht darin, die cgroup Version auf Ihren Knoten mithilfe des DaemonSets wiederhergestellt zu können. Weitere Informationen finden Sie unter "Zurücksetzen auf cgroup v1 DaemonSet".

    Von Bedeutung

    • Verwenden Sie daemonSet vorsichtig. Testen Sie es in einer niedrigeren Umgebung, bevor Sie es in der Produktion anwenden, um die Kompatibilität sicherzustellen und Unterbrechungen zu vermeiden.
    • Standardmäßig gilt das DaemonSet für alle Knoten im Cluster und startet sie neu, um die cgroup Änderung zu implementieren.
    • Um zu steuern, wie das DaemonSet angewendet wird, konfigurieren Sie eine nodeSelector für bestimmte Knoten.

Der Status

Microsoft arbeitet mit der Kubernetes-Community zusammen, um das Problem zu beheben. Verfolgen Sie den Fortschritt unter Azure/AKS-Problem #3443.

Im Rahmen der Lösung ist geplant, je nach Ergebnis der Korrektur die Entfernungsschwellenwerte anzupassen oder Ressourcenreservierungen zu aktualisieren.

Referenz

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.