Pod resources do not resize as expected
When requests or limits do not change as intended, separate controller selection from Kubernetes resize feasibility.
Evidence, remedy and recovery check
Section titled “Evidence, remedy and recovery check”No controller action
Section titled “No controller action”Set NS to the workload namespace and AUTOSCALER to the PRA name:
NS=my-appAUTOSCALER=my-appkubectl get podresourceautoscalers -n "$NS"kubectl describe podresourceautoscaler "$AUTOSCALER" -n "$NS"kubectl get podresourceprofiles -n "$NS" -o yamlUse the command for your selected controller. An unknown resource type means its CRD is not installed. For PRA, Ready=True with reason Paused is not active scaling: inspect spec.paused and the Active condition. For PRP, compare selectors, container names, annotations and trigger with the target Pod.
Inspect the resource and events; use PRP fields or PRA fields to correct the selected target.
Resize is deferred or infeasible
Section titled “Resize is deferred or infeasible”Set POD to the affected Pod:
POD=my-app-podkubectl get pod "$POD" -n "$NS" -o json | \ jq '{desired: [.spec.containers[] | {name, resources, resizePolicy}], actual: .status.containerStatuses, resize: .status.resize, conditions: .status.conditions}'kubectl describe pod "$POD" -n "$NS"kubectl get events -n "$NS" --field-selector "involvedObject.name=$POD" --sort-by=.metadata.creationTimestampCompare desired resources with the container status, resize conditions and events; the status representation varies by Kubernetes version. PRA events PodResourceAutoscalerResizePending or PodResourceAutoscalerQoSInvariantBlocked distinguish incomplete resizing from a blocked QoS change. Use the node name from describe pod with kubectl describe node <node> to inspect allocatable and allocated resources.
Free or provision feasible capacity, or follow the workload owner’s rollout procedure when a restart is required; recheck actual container resources.
Values oscillate or revert
Section titled “Values oscillate or revert”Check PRA, PRP, another vertical controller, dashboard actions and GitOps for overlapping writes.
Assign one writer per container resource field. Staggering timers does not resolve ownership. Restore the intended source value before retesting.
PRA observes load but does not resize
Section titled “PRA observes load but does not resize”Read the PRA events from kubectl describe podresourceautoscaler "$AUTOSCALER" -n "$NS". PodResourceAutoscalerMetricsUnavailable indicates a metric failure; PodResourceAutoscalerScaleFailed indicates an attempted resize failed. If metrics are available, compare the policy’s bounds, step, consecutive samples, delay and cooldown with observed load.
Compare observed samples with the configured policy; use the PRA load tutorial on a test workload.
Resources changed but OOM/throttling or latency worsened
Section titled “Resources changed but OOM/throttling or latency worsened”Check workload pressure, restart count and current versus previous resource values.
Restore the prior PRA policy or PRP profile through its configuration owner. For a manual recommendation applied through Helm/GitOps, revert the source change. Verify resources, restarts and latency after reconciliation.
Verify recovery
Section titled “Verify recovery”Check actual container resources and Pod resize events after restoring the policy. A changed desired value is insufficient if the Pod still reports a deferred or infeasible resize.
For unresolved failures, Collect diagnostics for support with versions, namespace/target, timestamps, relevant conditions and a redacted configuration.
Related: Vertical scaling: PRA and PRP · PodResourceProfile API reference · PodResourceAutoscaler API reference · Validate and undo a rightsizing change.