Kubernetes v1.36 Enhances Vertical Scaling for Pod-Level Resources with Beta Launch

Apr 30, 2026 799 views

Kubernetes has hit a significant milestone with the graduation of In-Place Pod-Level Resources Vertical Scaling to Beta in v1.36. This new feature, now enabled by default through the InPlacePodLevelResourcesVerticalScaling feature gate, revolutionizes how resource management is handled within running Pods. The crux of this development is that administrators can adjust the overall resource budget of a Pod without needing to restart containers, vastly simplifying the scaling process during peak demands.

Optimizing Resource Management with Pod-Level Scaling

The introduction of in-place resource scaling addresses a significant challenge: the complexities of managing resource allocations for Pods with multiple containers, particularly those that share resources, such as sidecars. With this feature, Kubernetes allows users to dynamically modify the aggregate resource limits for a Pod. By enabling such flexibility, the community not only streamlines operations but also enhances efficiency during load spikes.

This model becomes particularly beneficial for users who don't define individual resource limits for containers. Because the limits are shared at the Pod level, it becomes easier to adjust resource allocations on-the-fly, ensuring that applications maintain optimal performance without bouncing containers unnecessarily.

How It Works

At the core of this functionality is the Kubelet's understanding of resource inheritance among containers. When a Pod's resource limits change, the Kubelet assesses whether associated containers can adapt without requiring a restart. This is facilitated by the resizePolicy defined for each individual container:

  • Non-disruptive Updates: If the restartPolicy is set to NotRequired, the Kubelet dynamically adjusts cgroup limits without restarting the container.
  • Disruptive Updates: If the policy is set to RestartContainer, the container will be restarted to accommodate the new resource limits.

Currently, resizePolicy does not extend to the Pod level, with individual container settings taking precedence. This design decision underscores the Kubernetes community’s commitment to providing granular control while minimizing unnecessary downtime.

Use Case Scenarios

To illustrate the functionality, consider a scenario where a Pod has an initial specification with a limit of 2 CPUs and 4Gi of memory. If the workload demands increase, administrators can use the command line to double the CPU limits to 4 CPUs via a simple patch command:

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

Managing Feasibility and Stability

However, this resizing isn't just about issuing commands. The Kubelet conducts thorough feasibility checks before applying any changes. It verifies whether the Node can handle the increased demand without compromising stability. Should the requested resources surpass the Node's capacity, the Pod will be marked as PodResizePending with a status of Deferred or Infeasible, alerting users to the limitation.

As the Kubelet manages resource demands, it meticulously sequences updates to balance resource allocations. If increasing resources, the Pod’s cgroup is expanded first to accommodate the higher limits; conversely, during resource reductions, adjustments occur at the container level before any Pod-level shrinkage.

Monitoring Resources with Observability

Adopting this new feature means administrators also gain improved visibility into the resize process via Pod Conditions. The system tracks the status of resizing, indicating whether the update is still in progress or if the Node has yet to accept the change. Key observability metrics include:

  • PodResizePending: Indicates the requested resize is pending due to Node capacity limitations.
  • PodResizeInProgress: Conveys that the Node has accepted the resize, but the changes are still being applied.

Such insights not only streamline operations but also empower teams to respond proactively to resource-related issues.

Constraints for Adoption

Despite its advantages, effective use of in-place vertical scaling has specific requirements to consider:

  • cgroup v2 Required: This feature requires cgroup v2 for accurate resource enforcement.
  • CRI Compatibility: The container runtime must support the UpdateContainerResources call, meaning users need to run versions like containerd v2.0+ or CRI-O.
  • Linux Only: Currently, this feature is exclusive to Linux nodes, which limits its applicability in diverse environments.

Looking Ahead: VPA Integration

The Kubernetes community is already eyeing next steps toward General Availability, with a focus on integrating Vertical Pod Autoscaler (VPA) capabilities. This would empower VPA to automatically generate resource recommendations and trigger in-place updates, which could further streamline resource management and enhance cluster efficiency.

Inviting Community Engagement

As Kubernetes continues to evolve, community feedback remains a cornerstone of its development. Users interested in experimenting with the new in-place scaling feature are encouraged to share their experiences and suggestions through established channels, including:

The deployment of this feature represents a shift in how Kubernetes handles resource adjustments, enhancing agility and responsiveness for complex applications. The landscape is set for a more dynamic approach to resource allocation that may shape how we understand scaling in the cloud-native ecosystem.

Comments

Sign in to comment.
No comments yet. Be the first to comment.

Related Articles

Kubernetes v1.36: In-Place Vertical Scaling for Pod-Level...