|
Voiced by Amazon Polly |
Introduction
Resource pressure is one of the most common sources of confusion during Kubernetes production incidents. A pod can run out of a resource, while the node hosting it can also experience resource pressure. These situations may look similar, but Kubernetes reacts to them differently.
Knowing where the pressure occurs helps engineers quickly decide whether to tune container resources, investigate node capacity, or troubleshoot pod eviction.
Pioneers in Cloud Consulting & Migration Services
- Reduced infrastructural costs
- Accelerated application deployment
Understanding Resource Pressure in Kubernetes
The main resources involved are CPU, memory, and disk or ephemeral storage. The important distinction is the boundary being crossed: pod-level limits primarily affect the container, while node-level pressure can cause Kubernetes to make eviction decisions.
Pod-Level Pressure
1. CPU Pressure
When a container reaches its CPU limit, CPU throttling can occur. The container is not normally killed just because it reaches its CPU limit.
- CPU throttling can occur.
- Application performance can become slower.
- Latency and timeouts may increase.
So, a CPU-constrained application can remain running while users experience poor performance.
2. Memory Pressure
Memory behaves differently. If a container exceeds its memory limit, the Linux out-of-memory mechanism can terminate it. Kubernetes can then report the container as OOMKilled and restart it according to the workload’s restart policy.
- A container can be terminated by the OOM mechanism.
- Status may show OOMKilled.
- Repeated failures can eventually lead to CrashLoopBackOff.
3. Disk / Ephemeral Storage Pressure
A container can also consume ephemeral storage through temporary files and writable container storage. If it exceeds its configured ephemeral storage limit, it may become an eviction candidate, and the kubelet may evict the pod.
This is different from memory exhaustion: disk pressure does not produce an OOMKilled equivalent.
Node-Level Pressure
1. Node Memory Pressure
Node MemoryPressure is a cluster-level capacity problem rather than simply one container exceeding its memory limit. When available node memory falls to a critical level, the kubelet can report MemoryPressure, and its eviction manager can begin making eviction decisions.
Pods may be evicted according to Kubernetes eviction criteria. Controllers such as Deployments or StatefulSets can create replacement pods, which may run on another suitable node if capacity is available.
2. Node Disk Pressure
A node can enter DiskPressure when filesystem space or inode availability falls to a critically low level. The kubelet’s eviction manager may evict pods to recover capacity.
A replacement pod can then be scheduled on another suitable node, provided the cluster has enough capacity, and the workload’s scheduling requirements can be met.
3. What About High Node CPU?
High node CPU utilization should not be confused with the standard node pressure conditions for memory and disk. Kubernetes does not normally expose a general NodeCPUPressure condition equivalent to MemoryPressure or DiskPressure.
High CPU usage can still hurt applications through CPU contention and throttling. The usual symptoms are slower processing and increased latency, rather than automatic eviction due to CPU pressure.
The Key Difference: Pod vs Node
- Container memory limit exceeded → the container can be OOMKilled.
- Node memory pressure → Kubernetes can evict pods.
- Node disk pressure → Kubernetes can evict pods.
- CPU contention or throttling → performance can degrade without an OOM-style termination.
How to Troubleshoot Resource Pressure
- Check pod events and container status for OOMKilled or eviction messages.
- Review CPU and memory requests and limits.
- Check node conditions for MemoryPressure and DiskPressure.
- Review node CPU, memory, filesystem, and inode utilization.
- Check kubelet events when pods are unexpectedly evicted.
- Verify whether the workload controller recreated the affected pod.
Best Practices for Preventing Resource Pressure
- Set realistic CPU and memory requests based on actual workload behavior.
- Avoid unnecessarily low CPU limits that can cause throttling.
- Monitor application memory growth and recurring OOM events.
- Monitor node filesystem and inode usage.
- Maintain sufficient node capacity to handle normal workload spikes.
- Use autoscaling and scheduling strategies to distribute workloads effectively.
Outcome and Operational Impact
Understanding pod-level and node-level pressure reduces troubleshooting time. A slow pod caused by CPU throttling needs a different response from a pod evicted because its node entered MemoryPressure. Likewise, OOMKilled usually points toward container memory usage or an unsuitable memory limit rather than automatically indicating a node-wide problem.
This distinction also improves capacity planning: teams can determine whether they need better resource settings, larger nodes, additional nodes, or application optimization.
Conclusion
Kubernetes resource pressure becomes much easier to troubleshoot once pod and node behavior are separated. CPU limits can cause throttling, memory limits can result in OOMKilled containers, and node memory or disk pressure can trigger pod eviction.
The goal is not simply to watch resource percentages. Engineers should identify the resource boundary, understand which Kubernetes component reacts to it, and know what action follows. That leads to faster incident response and more reliable workloads.
Drop a query if you have any questions regarding Kubernetes, and we will get back to you quickly.
Empowering organizations to become ‘data driven’ enterprises with our Cloud experts.
- Reduced infrastructure costs
- Timely data-driven decisions
About CloudThat
FAQs
1. Does CPU pressure normally kill a Kubernetes container?
ANS: – No. Reaching a CPU limit normally results in CPU throttling rather than an OOM-style termination.
2. What happens when a container exceeds its memory limit?
ANS: – The Linux OOM mechanism can terminate the container, after which Kubernetes may report OOMKilled and restart it.
3. What happens when a node enters MemoryPressure?
ANS: – The kubelet’s eviction manager can evict pods according to Kubernetes eviction criteria. A controller may create a replacement pod that can run elsewhere if sufficient capacity is available.
WRITTEN BY Ayush Agarwal
Ayush Agarwal works as a Subject Matter Expert at CloudThat. He is a certified AWS Solutions Architect Professional with expertise in designing and implementing scalable cloud infrastructure solutions. Ayush specializes in cloud architecture, infrastructure as code, and multi-cloud deployments, helping organizations optimize their cloud strategies and achieve operational excellence. With a deep understanding of AWS services and best practices, he guides teams in building robust, secure, and cost-effective cloud solutions. Ayush is passionate about emerging cloud technologies and continuously enhances his knowledge to stay at the forefront of cloud innovation. In his free time, he enjoys exploring new AWS services, experimenting with technologies, and trekking to discover new places and connect with nature.
Login

September 7, 2026
PREV
Comments