-
前提条件:确保集群已部署Metrics Server,用于采集Pod资源指标。若未安装,执行
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
。 -
部署应用并配置资源请求:在Deployment中定义容器的
resources.requests
,例如CPU为100m
,内存为128Mi
。HPA依赖此值计算资源利用率。 -
创建HPA策略:
- 命令方式:
kubectl autoscale deployment <DEPLOYMENT_NAME> --cpu-percent=50 --min=2 --max=10
(当CPU利用率超50%时扩容,Pod数2-10)。 - YAML方式:创建HPA资源对象,指定
scaleTargetRef
指向目标Deployment,设置metrics
类型(如CPU/Memory)及目标值。
- 命令方式:
-
验证与监控:
- 执行
kubectl get hpa
查看HPA状态,确认TARGETS
列指标是否正常。 - 通过
kubectl describe hpa <HPA_NAME>
检查事件及错误日志。 - 使用
kubectl top pod
监控实时资源使用。
- 执行
-
高级配置:
- 自定义指标:集成Prometheus Adapter,在HPA中定义
metrics.type
为Pods/External
,指定自定义指标(如QPS)。 - 冷却时间:通过
behavior
字段设置scaleUp/scaleDown
的stabilizationWindowSeconds
,避免频繁扩缩容。
- 自定义指标:集成Prometheus Adapter,在HPA中定义
常见问题排查:
- HPA不触发:检查Metrics Server是否返回数据,资源请求是否设置。
- 指标不更新:确认Pod是否处于
Running
状态且资源用量超请求值。 - 扩缩延迟:默认同步周期为15秒,可通过控制器管理器调整
--horizontal-pod-autoscaler-sync-period
参数。