Pod弹性伸缩

最近更新时间:2019-03-19 18:18:38

Horizontal Pod Autoscaling,简称HPA,是Kubernetes中实现POD水平自动伸缩的功能,可以根据CPU使用率或者其他自定义的指标自动扩展部署中的Pod数量

自动伸缩算法

HPA组件会每隔30s从集群中的Metrics Server组件获取pod的监控指标(如果设置了目标利用率,则需要计算监控指标与每个pod中容器的resource request的百分比;如果设置了目标原始值,则直接使用该原始metrics值),根据工作负载当前副本数和该指标的目标值计算出期望副本数,作为工作负载的期望副本数,具体计算公式如下:

扩缩容算法:期望副本数量=采集的使用率/用户自定义使用率*当前pod数量

支持设置多个弹性伸缩的策略,HPA会根据每个指标的目标值,分别计算出目标副本数,然后取最大的一个作为最终目标副本数。

使用说明

您可以在创建/更新部署时,设置pod的弹性伸缩,如下图:

image.png

同时,您也可以在调节实例数量时设置,如下图:

image.png

当前支持设置的触发策略指标:

  • CPU利用率:容器CPU使用量和CPU request值的比率
  • CPU使用量:容器CPU使用量(核)
  • 内存使用率:容器内存的使用量和内存 request值的比率
  • 内存使用量:容器内存使用量(MiB)

注意事项

  • 当使用cpu/内存使用率作为伸缩策略指标时,请务必设置容器request的值,否则不支持
  • HPA在计算目标副本数时会有一个 10% 的波动因子,如果在波动范围内,HPA 并不会调整副本数目。
  • HPA在每一次作出决策后的一段时间内,将不再进行扩展决策。对于扩容而言,这个时间段为3分钟,缩容为5分钟
  • 保证用户请求的负载均衡

金山云,开启您的云计算之旅

注册有礼