title | description | ms.date | editor | ms.reviewer | ms.service | ms.custom |
---|---|---|---|---|---|---|
Memory saturation occurs after upgrade to Kubernetes 1.25 |
Resolve pod failures caused by memory saturation and out-of-memory errors after you upgrade an Azure Kubernetes Service (AKS) cluster to Kubernetes 1.25.x. |
06/14/2023 |
v-jsitser |
aritraghosh, cssakscic, v-leedennis |
azure-kubernetes-service |
sap:Create, Upgrade, Scale and Delete operations (cluster or nodepool) |
This article discusses how to fix pods that stop working because of memory saturation or out-of-memory (OOM) errors that occur after you upgrade a Microsoft Azure Kubernetes Service (AKS) cluster to Kubernetes 1.25.x.
One or more of the following issues occur:
-
Memory pressure on nodes
-
Increased memory usage for apps when compared to their memory usage before the upgrade
-
CPU throttling on nodes
-
Pod failure because of OOM errors
Performance degradation can occur in apps that run in the following environments:
- Java Runtime Environment (JRE) (for JRE versions that are earlier than version 11.0.18 or version 1.8.0 372)
- .NET versions that are earlier than version 5.0
- Node.js
Note
This list of environments in which performance degradation can occur isn't a comprehensive list. There might be other environments that experience memory saturation or OOM issues.
Beginning in the release of Kubernetes 1.25, the cgroup version 2 API has reached general availability (GA). AKS now uses Ubuntu Linux version 22.04. By default, version 22.04 uses cgroup version 2 API. To make sure the cgroup version 2 API is available for use in other environments to prevent the memory saturation issue, follow this guidance:
-
If you run Java applications, upgrade to a Java version that supports cgroup version 2 and follow the guidance in Containerize your Java applications. You might be able to update the base image in certain versions in which the fix has been backported. Use a version or framework that natively supports cgroup version 2. For Azure customers, Microsoft officially supports Eclipse Temurin binaries (Java 8) and Microsoft Build of OpenJDK binaries (Java 11+).
-
Similarly, if you're using .NET, upgrade to .NET version 5.0 or a later version.
In addition, to enable pods to use more resources, increase their memory requests and limits.
[!INCLUDE Third-party disclaimer]
[!INCLUDE Third-party disclaimer]
[!INCLUDE Azure Help Support]