K8s --HPA容器水平伸缩

目录

一、什么是HPA

       1、HPA伸缩过程

       2、HPA进行伸缩算法

二、HPA实例

       创建HPA

       1、压力测试

       2、同时监控cpu和memory

一、什么是HPA

HPA的全称为(Horizontal Pod Autoscaling)它可以根据当前pod资源的使用率(如CPU、磁盘、内存等),进行副本数的动态的扩容与缩容,以便减轻各个pod的压力。当pod负载达到一定的阈值后,会根据扩缩容的策略生成更多新的pod来分担压力,当pod的使用比较空闲时,在稳定空闲一段时间后,还会自动减少pod的副本数量。

官网:https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/

1、HPA伸缩过程

收集HPA控制下所有Pod最近的cpu使用情况(CPUutilization)
对比在扩容条件里记录的cpu限额(CPUUtilization)
调整实例数(必须要满足不超过最大/最小实例数)
每隔30s做一次自动扩容的判断

CPU utilization的计算方法是用cpu usage(最近一分钟的平均值,通过metrics可以直接获取到)除以cpu request(这里cpu request就是我们在创建容器时制定的cpu使用核心数)得到一个平均值,这个平均值可以理解为:平均每个Pod CPU核心的使用占比。

2、HPA进行伸缩算法

计算公式:TargetNumOfPods = ceil(sum(CurrentPodsCPUUtilization) / Target)

ceil()表示取大于或等于某数的最近一个整数

每次扩容后冷却3分钟才能再次进行扩容,而缩容则要等5分钟后。

当前Pod Cpu使用率与目标使用率接近时,不会触发扩容: 触发条件:avg(CurrentPodsConsumption) / Target >1.1 或 <0.9

二、HPA实例

仓库上传所需的镜像

创建hpa目录 编辑hpa.yaml资源清单

配置启动一个 Deployment 控制器来运行这个镜像并暴露一个服务

apiVersion: apps/v1
kind: Deployment
metadata:

你可能感兴趣的:(kubernetes,docker,容器)