kubernetes云平台管理实战:HPA水平自动伸缩

Kubernetes平台上应用的自动化横着扩展(水平自动伸缩)是经过HPA(Horizontal Pod Autoscaler)来实现的,基于观测CPU使用率(v1版本,v2beta版本也支持memory或者其余自定义性能属性),当业务负载上升超过HPA设定值,建立新的POD保障业务对资源的需求,当负载下载后能够经过销毁POD是否资源来提升利用率。php

HPA控制器的工做流程(V1版本)


流程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

相关文章
相关标签/搜索