前言
云计算带来的优势之一便是弹性能力,云原生场景下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很有可能会被杀死,从而造成服务中断。