Kubernetes平台上应用的自动化横着扩展(水平自动伸缩)是经过HPA(Horizontal Pod Autoscaler)来实现的,基于观测CPU使用率(v1版本,v2beta版本也支持memory或者其余自定义性能属性),当业务负载上升超过HPA设定值,建立新的POD保障业务对资源的需求,当负载下载后能够经过销毁POD是否资源来提升利用率。php
流程html
建立HPA资源对象,关联对应资源例如Deployment,设定目标CPU使用率阈值,最大,最小replica数量。apache
前提:pod必定要设置资源限制,参数request,HPA才会工做。api
HPA控制器每隔15秒钟(能够经过设置controller manager的–horizontal-pod-autoscaler-sync-period参数设定,默认15s)经过观测metrics值获取资源使用信息app
HPA控制器将获取资源使用信息与HPA设定值进行对比,计算出须要调整的副本数量ide
根据计算结果调整副本数量,使得单个POD的CPU使用率尽可能逼近指望值,但不能照顾设定的最大,最小值。post
以上2,3,4周期循环性能
周期阿里云
HPA控制器观测资源使用率并做出决策是有周期的,执行是须要时间的,在执行自动伸缩过程当中metrics不是静止不变的,可能下降或者升高,若是执行太频繁可能致使资源的使用快速抖动,所以控制器每次决策后的一段时间内再也不进行新的决策。对于扩容这个时间是3分钟,缩容则是5分钟,对应调整参数spa
--horizontal-pod-autoscaler-downscale-delay
--horizontal-pod-autoscaler-upscale-delay
1
2
自动伸缩不是一次到位的,而是逐渐逼近计算值,每次调整不超过当前副本数量的2倍或者1/2
经过kubectl api-versions能够查看到存在3个版本。v1版本只支持CPU,v2beta2版本支持多metrics(CPU,memory)以及自定义metrics。基于autoscaling/v2beta2的hpa yaml文件写法
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: php-apache-hpa
labels:
app: hpa-test
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
原文连接:https://blog.csdn.net/oyym_mv/article/details/87189199
参考kubernetes云平台管理实战:HPA水平自动伸缩
连接http://www.javashuo.com/article/p-zyedlmof-ey.html
参考阿里云容器HPA设置连接https://help.aliyun.com/document_detail/86554.html