Listen to this Post
Kubernetes InPlacePodVerticalScaling is an upcoming feature that allows dynamic adjustment of CPU and memory resources for running pods without requiring a restart. Currently in alpha (since K8s v1.27), it is expected to reach beta in v1.33, making it a highly anticipated enhancement for DevOps and cloud engineers.
Why This Matters
- Zero Downtime Scaling: Adjust resources without pod restarts, improving application availability.
- Efficient Resource Management: Optimize resource allocation dynamically based on workload demands.
- Simplified Operations: Reduces the need for manual pod rescheduling or horizontal scaling workarounds.
You Should Know: How InPlacePodVerticalScaling Works
Key Components Involved
- Container Runtime Support (e.g., containerd, CRI-O) must handle live resource updates.
- Kubelet Coordination: Ensures new resource limits are applied without disruptions.
- Scheduler & Autoscaler Sync: Maintains consistency across the cluster.
Expected Commands & Configurations
Once this feature becomes stable, you may use:
1. Enabling Feature Gate (Alpha/Beta)
Add to kube-apiserver, kubelet, and kube-scheduler --feature-gates=InPlacePodVerticalScaling=true
2. Modifying Pod Resources In-Place
apiVersion: v1 kind: Pod metadata: name: scalable-pod spec: containers: - name: app image: nginx resources: requests: cpu: "500m" memory: "512Mi" limits: cpu: "1" memory: "1Gi"
Update dynamically using `kubectl patch`:
kubectl patch pod scalable-pod --type=merge -p '{"spec":{"containers":[{"name":"app","resources":{"requests":{"cpu":"1","memory":"1Gi"},"limits":{"cpu":"2","memory":"2Gi"}}}]}}'
3. Monitoring Changes
kubectl describe pod scalable-pod | grep -A 5 "Resources" kubectl top pod scalable-pod
4. Integration with VPA (Vertical Pod Autoscaler)
If using an external VPA, ensure compatibility:
vpa-recommender --storage=prometheus --prometheus-address=http://prometheus-server
What Undercode Say
In-place vertical scaling is a game-changer for Kubernetes, reducing operational overhead and improving efficiency. However, deep integration with container runtimes and the scheduler is crucial.
Related Linux & K8s Commands for Debugging
Check container runtime resource limits docker stats <container_id> crictl stats <pod_id> Verify kernel cgroup updates cat /sys/fs/cgroup/cpu/kubepods/pod<pod_uid>/cpu.shares Kubelet logs for resource updates journalctl -u kubelet -f | grep "VerticalScaling" Node resource allocation kubectl describe node <node_name> | grep -A 10 "Allocated resources"
Expected Output:
A Kubernetes cluster where pods dynamically adjust CPU/memory without restarts, improving performance and reducing manual intervention.
Reference: Kubernetes Enhancement Proposal (KEP) – InPlacePodVerticalScaling
References:
Reported By: Nagavamsi I – Hackers Feeds
Extra Hub: Undercode MoN
Basic Verification: Pass ✅



