通过HPA+CronHPA组合应对业务复杂弹性伸缩场景

news/2024/11/19 23:35:18/文章来源:https://www.cnblogs.com/huaweiyun/p/18197349

本文分享自华为云社区《通过HPA+CronHPA组合应对业务复杂弹性伸缩场景》,作者:云容器大未来。

背景

在k8s集群中,容器水平自动伸缩(HPA),可以根据容器资源的使用量,在设置好的副本范围内,自动扩缩容工作负载副本数(replicas)。HPA是基于指标阈值进行伸缩的,常见的指标有CPU和内存。也可以通过自定义指标,例如QPS、连接数等进行伸缩。但是存在一种场景:基于指标的伸缩存在一定的时延,这类时延主要包含:采集时延(分钟级) 、 判断时延(分钟级) 和伸缩时延(分钟级)。此类分钟级时延,无法适应在短期内极速上涨的业务流量,可能会导致应用CPU飚高,响应时间变长。

容器定时水平自动伸缩(CronHPA)是对HPA的一种补充,对于有固定时间段高峰期的业务,可以提前将容器的实例数量扩容完毕,防止业务流量突发造成性能不足,导致业务延迟。而在业务低谷时,触发定时回收资源。

在某些业务场景下,存在突发流量的同时,又具有明显的波峰波谷,若同时配置CronHPA和HPA两种策略,可能出现如下情况:在业务高峰到来前,CronHPA定时任务提前扩容业务容器副本,而此时HPA可能会检测到资源使用率很低而触发实例缩容,导致预扩容的策略失效。

华为云CCE服务支持联动设置CronHPA策略和HPA策略,通过动态设置HPA的副本范围上下限,来调整业务容器实例数。

1.jpg

使用示例

日常生活中,许多业务场景在流量突发的同时具有明显的波峰波谷,且对响应时延很敏感,例如:

1. 网络游戏:X游戏客户,旗下某大型网络游戏,在晚上或周末、节假日等高峰期间,玩家数量会急剧增加,导致游戏服务器的负载瞬间飙升,此时负载副本数若扩容较慢,可能导致网络卡顿,游戏体验显著下降;

2. 视频直播:X视频直播APP,在某些大型活动、比赛等直播活动开始时,观众数量会迅速上升,导致服务器负载急剧增加,网络时延也会随之增加,进而导致观看直播的用户体验下降;

3. 电商促销:X电商平台,在其促销活动时,通常会引起用户的热情高涨,导致用户访问量大幅增加,服务器负载也会急剧增加,若业务容器扩容不及时,很可能导致用户体验下降,严重的可能导致业务中断;

4. 金融交易:X金融交易平台,旗下涉及多款金融产品,均需要实时响应,网络时延对交易效率和准确性有很大影响。在高峰期,交易量会急剧增加,网络时延也会随之增加。

以上业务场景都需要高效、稳定的网络支持,对网络时延很敏感。如果业务容器扩容不及时,会导致网络时延过高,用户体验下降,甚至影响业务的正常运营。

下面以视频直播服务为例,介绍如何进行弹性伸缩配置。假如每天晚上的8点半到10点有一场热门直播,在此期间,用户的访问量会暴增,随后流量缓慢下降直至到达低谷。为了节约成本,可按照如下配置,在流量高峰到来前,提前扩容业务容器实例数,在流量高峰退去后,根据业务流量,缓慢缩容:

1. 在CCE控制台,单击集群名称进入集群。

2. 单击左侧导航栏的“工作负载”,在目标工作负载的操作列中单击“更多 > 弹性伸缩”。

2.jpg

3. 策略类型选择“HPA+CronHPA策略”,启用HPA策略,并同时启用CronHPA策略。此时CronHPA会定时调整HPA策略的最大和最小实例数。

4. 设置HPA策略

设置实例范围与系统策略,如下图, HPA会根据当前业务容器的CPU利用率,在1-10范围内动态调节容器的实例数,当CPU利用率大于80%时自动扩容,在CPU利用率低于60%时自动缩容业务容器实例数。

3.png

5. 设置CronHPA策略

设置定时任务,如下图所示

策略一:20:00调整HPA策略实例数范围,从1-10变为8-10;

策略二:22:30调整HPA策略实例数范围,从8-10变为1-10。

4.png

6. 重复以上步骤,您可以添加多条策略规则,但策略的触发时间不能相同。

7. 设置完成后,单击“创建”

按照上述配置完成后,CronHPA会在流量高峰到来前的20:00调整HPA策略实例数范围,从1-10变为8-10,此时, HPA会将业务实例数至少扩容为8,为即将到来的流量高峰做准备。等到流量高峰过去后的22:30调整HPA策略实例数范围,从8-10变为1-10,此时,HPA会根据业务流量情况,缩容业务容器实例数到合适的值,降低用户使用成本。

CronHPA与HPA联动解析

HPA是用来控制Pod水平伸缩的控制器,HPA周期性检查Pod的资源使用率数据,计算满足HPA资源所配置的目标数值所需的副本数,进而调整目标资源(如Deployment)的replicas字段。

CronHPA支持定时调整HPA策略的最大和最小实例数,以此实现与HPA的联动,以满足复杂场景下的工作负载伸缩。

由于HPA与CronHPA均作用于同一个deployment对象时存在冲突问题,两个伸缩策略相互独立,后执行的操作会覆盖先执行的操作,导致伸缩效果不符合预期,因此需避免这种情况发生。

5.jpg

为避免上述问题,我们通过增强CronHPA,支持将CronHPA规则作用于HPA策略之上,CronHPA仅调整HPA的策略配置,而业务容器的实例数仅由HPA操作,从而实现两种弹性策略的协同工作。

 

总结

k8s社区提供的HPA策略支持在配置的实例数范围内,根据业务容器的CPU、内存等资源使用率实现自动扩缩容。叠加定时扩容策略CronHPA,期望在业务高峰到来前,先通过CronHPA定时任务提前扩容业务容器副本数,然而此时可能会因HPA检测到资源使用率很低而触发实例缩容,导致预扩容的策略失效。华为云CCE服务通过将HPA与CronHPA组合,实现指标弹性策略与定时弹性策略的有机协同,满足了客户业务复杂的弹性伸缩场景。

参考文档:

https://kubernetes.io/zh-cn/docs/tasks/run-application/horizontal-pod-autoscale/

https://support.huaweicloud.com/usermanual-cce/cce_10_0415.html

点击关注,第一时间了解华为云新鲜技术~

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/707642.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux基础知识(Ubuntu)

文件权限 意义权限类型 1. r 可读 2. w 可写 3. x 可执行/切换陌路 4. - 无权限通配符 * 匹配0个或多个字符串 ?匹配1个字符 [abcd] 匹配abcd中间任意一个字符 [a-Z] 匹配a-Z范围里的任意一个字符 [!abc] 不匹配方括号里的任何一个字符 ;与[^abc]一致帮助命令 man 语法 man […

join、inner join、left join、right join、outer join的区别

什么是联结?union、intersect等集合运算,它的特征是以 “行” 为单位进行操作,通俗点说,就是进行这些集合运算,会导致记录行数的增减,使用union会增加记录行数,使用 intersect 或 expect 会减少行记录,集合运算不会导致 “列” 数量的改变。而联结(join) 操作,就是将其…

基于.net core 七牛云上传多图片

一、基于.net core 七牛云上传图片上传创建七牛云账号,链接:https://portal.qiniu.com/home 新建空间(可以选择华北,可设置公开或私有(公开返回前台不需要token))单图片上传 /// <summary> /// 上传文件 /// </summary> /// <param name="file"…

Hadoop集群配置免密SSH登录方法

K8s集群配置免密ssh登录 K8S集群包含1个主节点和2个从节点,需要实现各节点之间的免密码登录,下面介绍具体的实现方法。 一、K8s集群环境 二、免密登录原理 每台主机authorized_keys文件里面包含的主机(ssh密钥),该主机都能无密码登录,每台主机的authorized_keys文件里面…

element-ui里选择器select多选

select默认情况下都是单选(如上图),但有时候就需要多选,那就需要添加multiple属性,但这样的话数据会一直叠加,把选择框撑大,如下图:这样的话需要添加 collapse-tags 属性将它们合并为一段文字,效果如下:但如果选多了,清除会不方便,那样的话需要添加clearable属性,…

Oracle11g-EXP-00091错误

环境说明 oracle 11g win10 问题情况 在终端中exp导出数据库时,遇到报错“EXP-00091”,按照网上教程修改NLS_LANG但是没有效果。最终原因 在power中设置环境变量NLS_LANG的方法与CMD不一样。 备注记录 先通过服务端查询编码集 select * from nls_database_parameters t where…

Python03判断语句

Python03判断语句 比较运算符if语句

统一文件传输平台如何建设 才能实现文件传输受管、可控、高效?

统一文件传输平台是为了满足企业或组织在不同网络区域间安全、高效地传输文件的需求而设计的系统。这样的平台通常具备以下特点: 1、跨区域传输能力:支持在不同地理位置的分支机构或数据中心之间传输文件。 2、安全性:提供加密传输、用户认证、权限控制等安全特性,确保数据…

基于Vue3水印组件封装:防篡改守护!

基于Vue 3的全新水印通用组件封装。这款组件不仅功能强大,而且易于集成,能够轻松为您在网页任何位置添加自定义水印,有效防止内容被篡改或盗用。基于Vue 3的全新水印通用组件。这款组件不仅功能强大,而且易于集成,能够轻松为您的网页或应用添加自定义水印,有效防止内容被…

在线Base64转文件、文件转Base64工具

在线Base64转换神器,一键实现Base64编码与文件互转!支持图片、文档等各类文件,快速准确,安全无服务器存储。拖拽上传,轻松编码解码,提升开发效率。跨平台兼容,移动端友好,让数据转换再无障碍。在线Base64转文件、文件转Base64工具

怎样统一、高效地实现百台以上的机台设备文件导出?

许多高端制造企业的运转都以机台为基础,如光学仪器制造及研究,晶圆制造,医学设备等,而大型的高端制造业不仅配备机台设备,同时数量也会非常客观,会达到上百台,当企业扩充规模,设立分公司和厂区时,机台设备甚至可达上千台,此时,对于企业而言,机台设备文件导出就会变…

Docker 部署Nacos

1、创建Nacos目录 mkdir /home/docker/nacos2、创建Nacos日志目录 mkdir /home/docker/nacos/logs3、创建Nacos配置目录 mkdir /home/docker/nacos/conf4、创建数据库 /** Copyright 1999-2018 Alibaba Group Holding Ltd.** Licensed under the Apache License, Version 2.0 (…