HPA可基于CPU/内存等指标自动扩缩Pod副本数,核心前提是部署Metrics Server并为Pod配置resource requests;通过kubectl autoscale或YAML定义目标值、副本上下限及多指标策略,结合stabilizationWindowSeconds等行为控制实现生产级弹性伸缩。
直接用 HPA 就能根据实际负载自动增减 Pod 数量,核心是配好指标、目标值和副本上下限,再确保 Metrics Server 正常运行。
HPA 依赖它采集 CPU、内存等数据。没它,HPA 会报错“no metrics known”。
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.7.2/components.yaml
kubectl top pods 看是否能正常显示资源使用率--kubelet-insecure-tls 和 --kubelet-preferred-address-types=InternalIP
一行命令就能为 Deployment 创建基础 HPA,基于 CPU 利用率:
kubectl autoscale deployment nginx-deployment --cpu-percent=60 --min=2 --max=10kubectl get hpa 查看状态,kubectl describe hpa 查错误详情单靠 CPU 容易误判,建议同时监控 CPU 和内存,并设置缩容冷静期:
behavior 块控制扩缩节奏:比如缩容时设 stabilizationWindowSeconds: 300(5 分钟冷却),避免流量小幅回落就删 Podtarget 必须对应 Pod 的 resources.requests —— 如果没设 request,CPU/memory 指标将无效很多 HPA 不生效,问题往往出在这些地方:
cpuUsage / cpuRequest,没 request 就算不出百分比