Linux企业运维——Kubernetes(十七)HPA容器水平伸缩
一、HPA简介
HPA的全称为(Horizontal Pod Autoscaling)它可以根据当前pod资源的使用率(如CPU、磁盘、内存等),进行副本数的动态的扩容与缩容,以便减轻各个pod的压力。当pod负载达到一定的阈值后,会根据扩缩容的策略生成更多新的pod来分担压力,当pod的使用比较空闲时,在稳定空闲一段时间后,还会自动减少pod的副本数量。
HPA伸缩过程:
- 收集HPA控制下所有Pod最近的cpu使用情况(CPUutilization)
- 对比在扩容条件里记录的cpu限额(CPUUtilization)
- 调整实例数(必须要满足不超过最大/最小实例数)
- 每隔30s做一次自动扩容的判断
CPU utilization的计算方法是用cpu usage(最近一分钟的平均值,通过metrics可以直接获取到)除以cpu
request(这里cpu request就是我们在创建容器时制定的cpu使用核心数)得到一个平均值,这个平均值可以理解为:平均每个Pod CPU核心的使用占比。
HPA进行伸缩算法:
- 计算公式:TargetNumOfPods = ceil(sum(CurrentPodsCPUUtilization) / Target)
- ceil()表示取大于或等于某数的最近一个整数
- 每次扩容后冷却3分钟才能再次进行扩容,而缩容则要等5分钟后。
- 当前Pod Cpu使用率与目标使用率接近时,不会触发扩容或缩容:
- 触发条件:avg(CurrentPodsConsumption) /Target >1.1 或 <0.9
二、HPA实例
2.1、HPA部署
server1查看磁盘使用情况,还有2.9G可用
docker image prune
命令用于删除未使用的映像