如果我们人工监控豆荚,人工进行调整副本那么这个工作量无疑是巨大的,但kubernetes已经有了相应的机制来应对了。
# # # HPA全称水平吊舱自动定量控制器工作流程(V1版本)
更详细的介绍参考官方文档水平吊舱自动定量
- <李>
流程
- <李>创建HPA资源对象,关联对应资源例如部署,设定目标CPU使用率阈值,最大,最小副本数量。
前提:豆荚一定要设置资源限制,参数要求,HPA才会工作。李> <李> HPA控制器每隔15秒钟(可以通过设置控制器经理的-horizontal-pod-autoscaler-sync-period参数设定,默认15 s)通过观测度量值获取资源使用信息李> <>李HPA控制器将获取资源使用信息与HPA设定值进行对比,计算出需要调整的副本数量李> <李>根据计算结果调整副本数量,使得单个吊舱的CPU使用率尽量逼近期望值,但不能照顾设定的最大,最小值。李> <李>以上2、3、4周期循环李>
- <李> HPA控制器观测资源使用率并作出决策是有周期的,执行是需要时间的,在执行自动伸缩过程中指标不是静止不变的,可能降低或者升高,如果执行太频繁可能导致资源的使用快速抖动,因此控制器每次决策后的一段时间内不再进行新的决策。对于扩容这个时间是3分钟,缩容则是5分钟,对应调整参数
<代码>——horizontal-pod-autoscaler-downscale-delay ——horizontal-pod-autoscaler-upscale-delay 代码>李> <李>自动伸缩不是一次到位的,而是逐渐逼近计算值,每次调整不超过当前副本数量的2倍或1/2者
本记录是对kubernetes HPA功能的验证,参考kubernetes官方文档,使用的是官方文档提供的镜像php-apache进行测试。李>
kubernetes集群需要配置好度量服务器,配置参考文档kubernetes部署metrics-server李>
# # #配置HPA实现应用横向扩展
- <李>配置启动部署:php-apache
<代码>猫hpa-deployment。ymal 代码>李>
apiVersion:应用程序/v1
:元数据部署
:
名称:php-apache
标签:
应用:hpa-test规范
:
副本:1
选择器:
matchLabels:
名称:php-apache
应用:hpa-test
模板:
元数据:
标签:
名称:php-apache
应用:hpa-test规范
:
容器:
- <李>名称:php-apache
图片:mirrorgooglecontainers/hpa-example:最新
港口:
- <李> containerPort: 80
名称:http
协议:TCP
资源:
请求:
cpu: 0.005
内存:64 mi限制
:
cpu: 0.05
内存:128 mi
<代码> 2。配置服务:php-apache-svc 代码>
猫hpa-svc。李yaml
> 李> apiVersion: v1
:
服务元数据:
名称:php-apache-svc
标签:
应用:hpa-test规范
:
选择器:
名称:php-apache
应用:hpa-test
港口:
- <李>名称:http
端口:80
协议:TCP
<代码> 3。配置hpa: php-apache-hpa 代码>
猫hpa-hpa。yaml
apiVersion:自动定量/v1
: HorizontalPodAutoscaler
元数据:
名称:php-apache-hpa
标签:
应用:hpa-test规范
:
scaleTargetRef:
apiVersion:应用程序/v1
:
名称:部署php-apache
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 50
<代码> 4。启动部署、服务、hpa并验证代码>
kubectl应用- f。/
部署。应用程序/php-apache配置
horizontalpodautoscaler服务/php-apache-svc不变。自动定量/php-apache-hpa不变
kubectl得到所有
名称,,,,,,,,,,,,,,,准备好了状态,,重新启动年龄
/php-apache-6b9f498dc4-vwlfr仓,1/1,,运行,0,,,,,3 h24m
名称,,,,,,,,,,类型,,,集群ip大敌;,外部ip大敌;端口(S),年龄
服务/kubernetes,,,ClusterIP,10.96.0.1,,,& lt; none>,,,443/TCP大敌;7 d20h
服务/php-apache-svc,ClusterIP,10.104.34.168,& lt; none>,,,80/TCP大敌;,3 h24m
名称,,,,,,,,,,,,准备好了,最新的,可用的,年龄
部署。应用程序/php-apache,1/1,,1,,,,,,1,,,,3 h24m
名称,,,,,,,,,,,,,,,,,想要的大敌;当前,准备好了,年龄
replicaset。应用程序/php-apache-6b9f498dc4,1,,,,1,,,,1,,,3 h24m
名称,,,,,,,,,,,,,,,,,,,,,,,,参考,,,,,,,目标,MINPODS,MAXPODS,副本,年龄
horizontalpodautoscaler。自动定量/php-apache-hpa,部署/php-apache,20%/50%,1,,,,10,,,,1,,,以前,3 h24m
kubectl运行——发电机=run-pod/v1 - tty负载生成器——图像=busybox/bin/sh
而真实;做wget - q - o - http://php-apache-svc.default.svc.cluster.local;做
好!好!好!好!好!好!好!好!好!好!好!好!好!