一种基于信号量的k8sHPA扩缩容优化方法与流程

文档序号:37589231发布日期:2024-04-18 12:19阅读:12来源:国知局
一种基于信号量的k8s HPA扩缩容优化方法与流程

本发明属于云计算,具体的说是一种基于信号量的k8s hpa扩缩容优化方法。


背景技术:

1、kubernetes也称为k8s,是一种开源的容器编排系统,提供了一种可扩展的、可移植的、跨平台的云原生应用程序运行环境,可以帮助用户自动化应用程序容器的部署、扩展和管理。hpa是k8s中实现pod水平自动伸缩的功能,是对k8s的工作负载副本数进行自动水平扩缩容的机制以实现动态扩展或收缩应用程序的目的。

2、在使用k8s部署项目中的过程中发现,程序由于一段时间访问量大导致扩容,在访问峰值过去后k8s hpa会把一定数量的pod删除掉,这些pod中有些还在运行着一些执行时间较长的异步任务,会导致业务中断,数据完整性被破坏,而且由于这种中断情况不好预估,造成问题排查、数据恢复十分困难。

3、如申请公开号为cn112181649a的中国专利公开了一种容器资源调整方法、装置、计算机设备及存储介质,其特征是,以预设时间间隔获取宿主机节点的当前资源使用率以及目标容器的当前资源使用率,目标容器是宿主机节点上运行的任一容器;当宿主机节点的当前资源使用率低于预设警戒阈值时,基于目标容器的当前资源使用率、上一次对目标容器的资源进行扩缩容的时间与当前时间的时间间隔,判断目标容器是否需要扩容或缩容;当目标容器需要扩容或缩容时,对应调高或调低目标容器的当前资源上限值,其中,当前资源上限值是上一次对目标容器的资源进行扩缩容后得到的。本发明能够实现对容器资源大小的动态调整,提高资源利用率。

4、如申请公开号为cn112506444a的中国专利公开了基于kubernetes集群的扩缩容控制方法和装置、电子设备,本发明包括:获取集群创建指令;根据所述集群创建指令与预设的所需配置信息创建目标集群;在所述目标集群部署监控模块、部署扩缩容模块;所述监控模块用于采集目标集群的指标数据,所述扩缩容模块为基于指标的扩缩容模块,并用于配置扩缩容策略;根据预设的指标规则查询所述目标集群的指标数据;根据所述指标数据和所述扩缩容策略进行扩缩容操作。本公开实施例可以根据实际情况动态调整资源配置、减少集群资源的消耗。

5、以上现有技术均存在以下问题:1)资源利用不充分;2)增加系统的复杂性和计算负担,会导致容器崩溃或应用程序性能下降;3)扩缩容策略存在局限性;4)采集的指标数据具有不确定性。


技术实现思路

1、针对现有技术的不足,本发明提出了一种基于信号量的k8s hpa扩缩容优化方法,设置deletemarker和计算信号量,通过信号量标记正在运行的任务数,当信号量衰减为0时才允许hpa删除对应的pod,能有效地避免终止正在运行业务的容器所产生的不可预估的问题。

2、为实现上述目的,本发明提供如下技术方案:

3、一种基于信号量的k8s hpa扩缩容优化方法,包括:

4、步骤s1:设置deletemarker键值对,hpa接收缩容信号,并给pod添加deletemarker;

5、步骤s2:设置阈值,根据阈值配置请求启动切面和请求结束切面,容器内的业务程序通过请求启动切面和请求结束切面对一个全局信号量进行加减运算,以标记正在运行的任务数;

6、步骤s3:设置延迟秒,hpa遍历deletemarker,通过轮询获取并判断pod对应的全局信号量值是否为0,若信号量衰减为0,向kubernetes发送删除请求以删除pod;

7、步骤s4:若所有pod均被删除,hpa回到步骤s2并等待新的pod启动,若未删除pod,hpa执行扩容操作时,已被标识为deletemarker的pod所带有的deletemarker标记可以被删除,并恢复service对pod的流量分发。

8、具体的,所述步骤s1中设置deletemarker键值对的值是布尔值,用于标记pod是否应该被删除。

9、具体的,所述步骤s1中给pod添加deletemarker的具体步骤包括:

10、步骤s101:导入所需的库和模块,建立与kubernetes api的连接;

11、步骤s102:接收缩容信号,hpa遍历正在运行的pod列表,获取要添加deletemarker的pod的名称或标识符;

12、步骤s103:使用kubernetes api创建或更新pod的deletemarker。

13、具体的,所述步骤s102中的缩容信号是指由业务程序发送给hpa的信号。

14、具体的,所述步骤s2的具体步骤包括:

15、步骤s201:初始化一个全局信号量,设置阈值;

16、步骤s202:当容器内的业务程序接收到一个新的请求并开始处理时,触发请求启动切面,增加全局信号量的值,触发请求结束切面,减少全局信号量的值;

17、步骤s203:维护全局信号量,设置阈值并配置hpa,监控全局信号量或正在运行的任务数;

18、步骤s204:若全局信号量或正在运行的任务数超过阈值,调整hpa的配置。

19、具体的,所述步骤s202中请求启动切面的具体步骤包括:

20、步骤s2021:当一个请求到达pod时,pod记录当前时间为t1;

21、步骤s2022:pod处理请求并开始执行任务;

22、步骤s2023:当pod处理完一个请求时,pod记录当前时间为t2;

23、步骤s2024:pod更新全局信号量的值,将全局信号量的值减一;

24、步骤s2025:pod发送通知给hpa,通知hpa当前pod已经处理完一个请求。

25、具体的,所述步骤s3的具体步骤包括:

26、步骤s301:设置一个延迟秒进行轮询,初始化全局信号量;

27、步骤s302:获取并遍历deletemarker列表,查找所有正在运行的pod;

28、步骤s303:在每次轮询中,获取pod对应的全局信号量的值,并判断全局信号量的值是否为0;

29、步骤s304:若全局信号量的值为0,则调用kubernetes api发送删除pod的指令给kubernetes集群,允许hpa删除全局信号量为0时对应的pod。

30、具体的,所述步骤s301中设置延迟秒的具体步骤包括:

31、步骤s3011:根据业务系统的特点和负载情况,确定延迟秒阈值;

32、步骤s3012:计算延迟时间t,具体公式为:

33、t=t2-t1

34、步骤s3013:将延迟时间与预设的延迟秒阈值进行比较,若延迟时间超过阈值,根据策略触发扩容操作;

35、步骤s3014:调整延迟阈值。

36、具体的,所述步骤s3013中的策略是指阈值设定和扩容和缩容的速度。

37、具体的,一种基于信号量的k8s hpa扩缩容优化方法,包括:pod状态获取模块、deletemarker设置模块、信号量计算模块、hpa控制模块、监控和日志模块,

38、所述pod状态获取模块,用于获取pod的状态信息;

39、所述deletemarker设置模块,用于在deletemarker中为该pod设置一个键值对;

40、所述信号量计算模块,用于计算正在运行的任务数;

41、所述hpa控制模块,用于根据信号量和pod的状态信息控制hpa的行为;

42、所述监控和日志模块,用于监控系统的运行状态和记录日志。

43、与现有技术相比,本发明的有益效果是:

44、1.本发明提出一种基于信号量的k8s hpa扩缩容优化方法,并进行了架构、运行步骤和流程上的优化改进,系统具备流程简单,投资运行费用低廉,生产工作成本低的优点,并通过deletemarker和信号量方法对hpa扩缩容流程进行了优化。

45、2.本发明提出一种基于信号量的k8s hpa扩缩容优化方法,给pod添加deletemarker,然后通过请求启动切面和请求结束切面对一个全局信号量进行加减运算标记正在运行的任务数,然后设置延迟秒,通过轮询获取并判断pod对应的全局信号量值是否为0,以实现信号量衰减为0,则向kubernetes发送删除请求以删除pod的效果,不仅避免终止正在运行业务的容器所产生的不可预估的问题,也极大地保证了业务的流畅性以及数据的完整性。

46、3.本发明提出一种基于信号量的k8s hpa扩缩容优化方法,通过pod副本控制器设置hpa对指标进行监控,然后根据指标的动态变化自动扩缩容,而且缩容时切断服务对pod的流量分发以及需要重新扩容时恢复service对pod的流量分发,实现了灵活扩缩容的效果。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1