💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
Autoscaler 控制器从聚合 API 获取到 Pod 性能指标数据之后,通过下面的算法计算目标 Pod 副本数量: ~~~text desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )] 目标副本数量 = 当前副本数 * (当前指标值/期望指标值) ~~~ 注意上面公式的计算结果需要向上取整,然后将目标副本数量与当前副本数量进行对比,就可以判断是否需要进行扩容或是缩容。 我们以 CPU 请求数量为例,假设当前系统运行了一个 Pod 副本,用户设置的期望值为 100m: * 如果当前实际使用的指标值为 200m,则:目标副本数量 = 1 \* (200/100) = 2,也就是期望 Pod 副本数量为 2,这个时候就会进行 Pod 扩容 * 如果当前实际使用的指标值为 50m,则:目标副本数量 = 1 \* (50/100) = 0.5,将计算结果向上取整为 1,也就是期望 Pod 副本数量为 1,这个时候就不会改变 Pod 的数量 当计算结果与 1 非常接近时,可以设置一个容忍度使系统不做扩缩容处理,通过 kube-controller-manager 服务的启动参数`--horizontal-pod-autoscaler-tolerance`进行设置,该参数的默认值为 0.1(10%),所以上述算法计算结果在正负 10% 的区间中都不会执行扩缩容操作。 期望指标值(desiredMetricValue)也可以是指标的平均值,比如:targetAverageValue,这时当前指标值(currentMetricValue)的算法为: ~~~text 当前指标值 = 所有 Pod 副本当前指标值总和 / Pod 副本数量 ~~~