扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
云计算带来的优势之一便是弹性能力,云原生场景下Kubernetes提供了水平弹性扩容能力(HPA),让应用可以随着实时指标进行扩/缩。然而HPA的实际工作情况可能和我们直观预想的情况是不一样的,这里面存在一些认知误区。本文总结了一下 EDAS 用户在使用 HPA 时常遇到的三个认知误区,具体如下:
创新新互联,凭借10余年的成都做网站、网站制作经验,本着真心·诚心服务的企业理念服务于成都中小企业设计网站有1000多家案例。做网站建设,选创新互联建站。误区一: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的设计架构决定了,HPA扩/缩容总是滞后的,且扩/缩容收到弹性行为(behavior)与容忍度共同作用。其中弹性行为限制了扩/缩容速率,不会一口气扩/缩到期望实例数。而容忍度会忽略指标的小幅度变化,从而导致在多次扩容的场景下,最终计算的实例数可能与一开始计算出的实例数不同。
避坑指南:阅读下文了解一下HPA工作原理,配置合理的弹性行为(behavior)。
HPA工作机理在打破认知误区前,我们有必要梳理一下HPA的工作机理
如图所示,HPA控制器执行弹性功能主要分为四个步骤:
其中步骤2-4约每15秒执行一次,如需改变时间周期,可以调整KCM的配置参数--horizontal-pod-autoscaler-sync-period。
数据源如上图所示,HPA目前提供了五种指标来源,以及三种指标服务(MetricsServer),简单介绍如下:
值得一提的是,在自建Kubernetes场景下,这三种MetricsServer都需要额外安装,它们均运行于KCM之外。下表列举了几种Kubernetes集群MetricsServer的部署情况。
指标计算方法HPA提供了三种期望值类型
值得一提的是,利用率是基于Request进行计算的,所以没有设置Request的场景下,HPA可能无法正常工作。
下图介绍了五种指标来源支持的期望类型,不难看出所有指标来源都支持平均量。
对于单个指标的期望实例数计算规则如下:
这里面引入了容忍度的概念,即认为在期望值附近小范围的抖动是可以容忍忽略的。这个参数的来源是因为指标值是一个一直在抖动变化的值,如果不忽略微小的变动,那么很有可能造成应用不断的扩容缩容,进而影响整个系统的稳定性。
如下图所示,当指标值落入粉色区域内(容忍度范围)时,期望实例数等于当前实例数。粉色区域(容忍度范围)的上下限分别是0.9倍期望值与1.1倍期望值。
对于配置了多条指标规则,最终期望实例数计算规则如下:
用一句话简要概括计算方法:单个指标波动小时忽略不计,多个指标之间取大值,最终实例数会落在下限和上限之间。
扩缩行为在某些情况下,指标数据会有一个频繁且大幅度的抖动。如下图所示的一段CPU指标数据,存在一些指标抖动或间歇流量下降导致利用率下降,指标的变化范围已经超出了容忍度的范围。此时,从应用稳定性角度来看,我们不期望应用缩容。为了解决这个问题,HPA引入了配置来控制扩缩容,即扩缩行为(behavior),它是在HPA(autoscaling/v2beta2)中引入,要求Kubernetes集群版本>=1.18。
HPA的弹性行分为扩容行为和缩容行为。行为具体由以下三部分组成:
至此,我们已经大致了解了HPA的工作机理。合理利用HPA可以有效提升资源利用率,在这之中我们总结了一些注意事项,熟记这些点可以在使用HPA时“有效避坑”。
云原生场景下弹性能力更为丰富,可供弹性的指标也更具备业务定制能力。应用 PaaS 平台(如企业级分布式应用服务 EDAS)能结合云厂商在计算、存储、网络上的技术基础能力,能让使用云的成本更低。但是这里对于业务应用会提出一点点挑战(如:无状态/配置代码解耦等等)。从更广的侧面来看,这是云原生时代应用架构面临的挑战。不过应用越来越原生的话,云的技术红利也会离我们越来越近。
原文链接
本文为阿里云原创内容,未经允许不得转载。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流