Technology

Kubernetes v1.36 Enhances Pod Resource Management with Beta In-Place Vertical Scaling

2026-05-01 17:46:54

Introduction

The Kubernetes community continues to refine resource management capabilities for complex workloads. Following the graduation of Pod-Level Resources to Beta in v1.34 and the General Availability (GA) of In-Place Pod Vertical Scaling in v1.35, version 1.36 brings another milestone: In-Place Pod-Level Resources Vertical Scaling is now Beta and enabled by default. This feature allows users to dynamically adjust the aggregate resource budget of a running Pod, often without restarting any containers.

Kubernetes v1.36 Enhances Pod Resource Management with Beta In-Place Vertical Scaling

Why Pod-Level In-Place Resize Matters

Modern Pods often include multiple containers, such as sidecars for logging or service meshes. Managing individual container resource limits can become cumbersome. The Pod-level resource model simplifies this by allowing containers to share a collective pool of CPU and memory. With v1.36, you can now adjust this aggregate boundary on-the-fly, eliminating the need for manual per-container recalculations—especially useful during traffic spikes.

For containers without individual limits, their effective boundaries automatically scale to fit the new Pod-level dimensions, ensuring a seamless expansion of the shared pool.

How It Works: Resource Inheritance and Resize Policy

When a Pod-level resize is initiated, the Kubelet treats the change as a resize event for every container that inherits its limits from the Pod-level budget. To decide whether a container restart is necessary, the Kubelet checks the resizePolicy defined within each container:

It is important to note that currently, resizePolicy is not supported at the Pod level. The Kubelet always defers to individual container settings to determine the update method.

Real-World Example: Scaling a Shared Resource Pool

Consider a Pod with a 2 CPU Pod-level limit. Containers inside have no individual limits, so they share the total pool.

Initial Pod Specification

apiVersion: v1
kind: Pod
metadata:
  name: shared-pool-app
spec:
  resources:
    limits:
      cpu: "2"
      memory: "4Gi"
  containers:
  - name: main-app
    image: my-app:v1
    resizePolicy:
    - resourceName: "cpu"
      restartPolicy: "NotRequired"
  - name: sidecar
    image: logger:v1
    resizePolicy:
    - resourceName: "cpu"
      restartPolicy: "NotRequired"

The Resize Operation

To double the CPU capacity to 4 CPUs, apply a patch using the resize subresource:

kubectl patch pod shared-pool-app --subresource resize --patch \
  '{"spec":{"resources":{"limits":{"cpu":"4"}}}}'

Because both containers have restartPolicy: NotRequired for CPU, the Kubelet applies the new 4-CPU limit without restarting either container.

Node-Level Reality: Feasibility and Safety Checks

Applying a resize patch is only the first step. The Kubelet performs several checks to ensure node stability:

  1. Capacity verification: The Kubelet checks if the node has enough unallocated resources to accommodate the new Pod-level budget. If not, the resize request is rejected.
  2. Container cgroup updates: For containers with NotRequired policy, the Kubelet directly updates cgroup limits via CRI. If any CRI call fails, the Kubelet falls back to a disruptive approach or reports an error.
  3. Resource reclamation: After updating cgroups, the Kubelet monitors that containers do not exceed the new limits. If a container attempts to use more than allocated, it may be throttled or OOM-killed as per standard Kubernetes behavior.
  4. Status reporting: The Kubelet updates the Pod's status at .status.resize to reflect the current resize state (e.g., InProgress, Succeeded, Failed).

These checks ensure that in-place scaling does not compromise the overall stability of the node or other workloads.

Benefits and Use Cases

Conclusion

The Beta graduation of In-Place Pod-Level Resources Vertical Scaling in Kubernetes v1.36 marks a significant step forward in resource flexibility. By enabling dynamic, non-disruptive resizing of shared resource pools, this feature empowers operators to build more resilient and efficient clusters. For more details, refer to the official Kubernetes documentation on resource management.

Explore

International Law Enforcement Cracks Down on Four Massive IoT Botnets Behind Record DDoS Attacks Apple’s iPhone Revenue Soars 22% to $57 Billion Amid Chip Shortage: 10 Key Takeaways Breaking the Fork: Meta's Strategy for Keeping WebRTC Up-to-Date MOFT MagSafe Wallet with Find My Now Available: Everything You Need to Know Linux Mint Rolls Out Urgent HWE ISO Updates to Bridge Hardware Compatibility Gap