HPA(Horizontal Pod Autoscaler)是基于监控指标自动调整Pod数量的机制。
在实现层面HPA由两部分组成:
- 一个API
- 一个控制器
API用于制定规则,控制器用于执行规则。
规则
参数配置
kube-controller-manager
:
--horizontal-pod-autoscaler-sync-period
:检查周期(默认为15s)--horizontal-pod-autoscaler-tolerance
:容忍阀值 (默认为0.1)--horizontal-pod-autoscaler-initial-readiness-delay
:初始化时间,用于延迟采样(因为从技术上无法判断Pod是否就绪,只能预测一个时间),默认为30s--horizontal-pod-autoscaler-cpu-initialization-period
:专用于CPU的延迟采样时间,默认5min(需进一步确认)--horizontal-pod-autoscaler-downscale-stabilization
:缩容冷却时间,多久执行一次缩容,默认是5分钟,避免频繁扩缩--horizontal-pod-autoscaler-use-rest-clients
:使用第三方metrics
API对象
版本:
- autoscaling/v1 只支持基于CPU使用率的扩缩容。
- autoscaling/v2beta2:支持基于内存和自定义监控指标
kubectl
kubectl get hpa kubectl delete hpa kubectl describe hpa kubectl autoscale rs foo --min=2 --max=5 --cpu-percent=80
设计思考
- 为什么HPA只能应用于支持弹性伸缩的对象,而不是Pod、DaemonSets?
参考资料
- 《Horizontal Pod Autoscaler》https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
- 《Horizontal Pod Autoscaler Walkthrough》https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/
来源:oschina
链接:https://my.oschina.net/renhc/blog/4292674