hpa梳理

一、pod的横向自动伸缩
  1. 横向pod自动伸缩是指由控制器管理的pod副本数量的自动伸缩
  2. 由Horizontal控制器执行,通过创建HorizontalpodAutoscaler(HPA)资源来启用和配置Horizontal控制器
  3. Horizontal控制器周期性检查pod度量,计算满足HPA资源所配置的目标数值所需的副本数量,进而调整目标资源(deploy、RS、RC等)
二、自动伸缩过程
  1. 获取被伸缩资源对象所管理的所有pod度量
    1)pod与节点度量数据是由运行在每个节点的kubelet之上名为cAdvisor的agent采集的
    2)数据由集群级的组件Heapster聚合
    3)HPA控制器向Heapster发起REST调用来获取所有pod度量数据
    4)集群中必须运行Heapster(或替代产品)才能实现自动伸缩
  2. 计算使度用量数值达到(或接近)所指定目标数值所需的pod数量
    1)Autoscaler获取它所调整资源全部pod的度量,通过度量计算所需的副本数量
    2)使所有副本上度量的平均值尽量接近配置的目标值
    3)单个度量:将所有pod的度量求和后除以HPA资源上配置的目标值,向上取整即可
    4)多个pod度量:单独计算每个度量的副本数,然后取最大值
  3. 更新被伸缩资源的replicas字段
    1)Autoscaler控制器通过Scale子资源来修改被伸缩资源的replicas字段
    2)只要API服务器为某个可伸缩资源暴露了Scale子资源,Autoscaler即可操作该资源
    3)目前暴露了Scale子资源的资源:Deployment、ReplicaSet、ReplicationController、StatefulSet
  4. 了解整个自动伸缩过程
    1)从pod到cAdvisor,经过Heapster最后到达HPA的箭头代表度量数据的流向
    2)每个组件从其他组件拉取数据的动作是周期性的(cAdvisor用一个无限循环从pod中采集数据)
    3)因此,数据的传播与相应动作的触发需要一定的时间。(并非立即发生)
 
posted @ 2020-04-06 17:34  jayce9102  阅读(...)  评论(...编辑  收藏