01
前言
Aliware
云计算带来的优势之一便是弹性能力,云原生场景下 Kubernetes 提供了水平弹性扩容能力(HPA),让应用可以随着实时指标进行扩/缩。然而 HPA 的实际工作情况可能和我们直观预想的情况是不一样的,这里面存在一些认知误区。本文总结了一下 EDAS 用户在使用 HPA 时常遇到的三个认知误区,具体如下:
误区一:HPA 存在扩容死区
现象:当 Request=Limit 时,期望利用率超过 90%时,无法正常扩容。
原因剖析:HPA 中存在容忍度(默认为 10%),指标变化幅度小于容忍度时,HPA 会忽略本次扩/缩动作。若当期望利用率为 90%时,则实际利用率在 81%-99%之间,都会被 HPA 忽略。
避坑指南:当 Request=Limit 时,避免设置过高的期望利用率,一来避免扩容死区;二来被动扩容有一定的迟滞时间,留下更多的缓冲余量以应对突增流量。
误区二:误解利用率计算方法,HPA 扩容与预期使用量不符
现象:当 Limit > Request 时,配置 50%的利用率,使用量未达到 Limit 的 50%便扩容。
原因剖析:HPA 计算利用率是基于 Request 计算,当 Limit > Request 时,实际利用率是可以超过 100%。
避坑指南:对于较为重要的应用,应当设置 Request=Limit 保证资源的独占。对于可以容忍资源共享的应用,对应的期望利用率也不应设置的过高,在集群资源紧张时,超量使用资源的 Pod 很有可能会被杀死,从而造成服务中断。
误区三:弹性行为总是滞后的,扩缩行为与心理预期不符
现象:指标突增时,HPA 不会立刻扩容,且扩容可能是分多次进行,最终稳定时的实例数也与预期不同。
原因剖析:HPA 的设计架构决定了