Kubernetes的弹性伸缩用法

  

如果我们人工监控豆荚,人工进行调整副本那么这个工作量无疑是巨大的,但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

<> <代码> # # #压力测试,观察HPA效果   在1。生成一个压测客户端,持续压力测试

kubectl运行——发电机=run-pod/v1 - tty负载生成器——图像=busybox/bin/sh

而真实;做wget - q - o - http://php-apache-svc.default.svc.cluster.local;做

好!好!好!好!好!好!好!好!好!好!好!好!好!

Kubernetes的弹性伸缩用法