Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
- Java Runtime Environment (JRE) (für JRE-Versionen, die älter als Version 11.0.18 oder Version 1.8.0 372 sind)
- .NET-Versionen, die älter als Version 5.0 sind
- Node.js
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 alscgroup
v1. Wenn Anwendungen vorhanden sind, die direkt auf dascgroup
Dateisystem zugreifen, aktualisieren Sie sie auf spätere Versionen, die v2 unterstützencgroup
. 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ützencgroup
.Java-Anwendungen:
Verwenden Sie Versionen, die v2 vollständig unterstützen
cgroup
:- OpenJDK/HotSpot:
jdk8u372
, ,11.0.16
,15
und 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.
- OpenJDK/HotSpot:
uber-go/automaxprocs:
Wenn Sie dasuber-go/automaxprocs
Paket verwenden, stellen Sie sicher, dass die Version oder höher istv1.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
- Die Speicherauslastung von Knoten in cgroupv2 hat höher als cgroupv1 gemeldet (GitHub-Problem)
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.