Kubernetes v1.37: Pod-Level Resource Managers graduated to Beta
Kubernetes v1.37 introduces Beta support for pod-level resource managers, allowing for more granular hardware allocation and NUMA alignment.
Deep dive
- Pod-level resource managers: Adds support for setting resource requirements at the Pod level rather than just the container level.
- NUMA alignment: Enables better cache and latency performance by mapping hardware resources to the same physical CPU socket.
- Operational Efficiency: Prevents wasted physical CPU cores by moving non-critical sidecars to a shared pool.
- API Enhancements: v1 PodResources gRPC service now includes top-level CPU and memory fields for clearer resource monitoring.
Decoder
- NUMA (Non-Uniform Memory Access): A computer memory design where memory access time depends on the memory location relative to the processor. Alignment ensures faster access by keeping memory local to the CPU core.
- Sidecar: A secondary container that runs alongside the main application container within the same Pod to perform auxiliary tasks like logging or telemetry.
- Kubelet: The primary node agent that runs on each node in a Kubernetes cluster to ensure containers are running as expected.
Original article
Kubernetes v1.37: Pod-Level Resource Managers graduated to Beta
With the release of Kubernetes v1.37, the Pod-Level Resource Managers feature has graduated to Beta status (disabled by default)!
First introduced as an Alpha feature in Kubernetes v1.36, this enhancement builds on Pod-Level Resources by equipping Kubelet's Topology Manager, CPU Manager, and Memory Manager to use Pod-level resource declarations (.spec.resources) directly when making hardware placement decisions.
Bringing pod-level resources to node managers
Before this feature, obtaining exclusive NUMA-aligned CPU cores or memory for latency-critical applications forced cluster operators into an all-or-nothing choice: assign integer resource requests to every container in the Pod, or forfeit exclusive NUMA alignment entirely. For modern workloads running lightweight sidecars (such as logging agents or telemetry exporters), allocating dedicated physical cores to auxiliary containers was wasteful.
Pod-Level Resource Managers solves this challenge by enabling hybrid allocation models. The Kubelet can reserve exclusive NUMA-aligned resources for primary application containers while placing non-Guaranteed sidecars into a pod-isolated shared pool. This ensures primary workloads get unthrottled, NUMA-local performance while sidecars benefit from running in a pod-isolated shared pool, enjoying local NUMA alignment and protection from external node interference without consuming dedicated physical cores.
What's new in Beta
Graduating to Beta brings key operational and API enhancements:
- Graduation to Beta: Controlled by the
PodLevelResourceManagersfeature gate, available to opt in (disabled by default) in Kubernetes v1.37. - PodResources API Reporting: The
v1PodResources gRPC service (PodResourcesLister) introduces top-levelcpu_idsandmemoryfields onPodResourcesresponses. Monitoring tools and device plugins can query pod-level exclusive assignments directly without double-counting container allocations.
Getting started and providing feedback
For a deep dive into the technical details and configuration of this feature, check out the official documentation:
- Pod-level resource managers
- Pod-level resource managers reference
To follow a step-by-step tutorial on configuring and deploying workloads:
- Use pod-level resources with Kubelet resource managers
To learn more about how to assign resources to pods:
- Assign Pod-level CPU and memory resources
As this feature moves through Beta toward GA, your feedback is invaluable. Please report any issues or share your experiences via the standard Kubernetes communication channels:
- Slack: #sig-node
- Mailing list
- Open Community Issues/PRs
Fresh dev news, AI-digested daily. Never miss a trend at devoured.fyi