System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于云计算,具体的说是一种基于信号量的k8s hpa扩缩容优化方法。
技术介绍
1、kubernetes也称为k8s,是一种开源的容器编排系统,提供了一种可扩展的、可移植的、跨平台的云原生应用程序运行环境,可以帮助用户自动化应用程序容器的部署、扩展和管理。hpa是k8s中实现pod水平自动伸缩的功能,是对k8s的工作负载副本数进行自动水平扩缩容的机制以实现动态扩展或收缩应用程序的目的。
2、在使用k8s部署项目中的过程中发现,程序由于一段时间访问量大导致扩容,在访问峰值过去后k8s hpa会把一定数量的pod删除掉,这些pod中有些还在运行着一些执行时间较长的异步任务,会导致业务中断,数据完整性被破坏,而且由于这种中断情况不好预估,造成问题排查、数据恢复十分困难。
3、如申请公开号为cn112181649a的中国专利公开了一种容器资源调整方法、装置、计算机设备及存储介质,其特征是,以预设时间间隔获取宿主机节点的当前资源使用率以及目标容器的当前资源使用率,目标容器是宿主机节点上运行的任一容器;当宿主机节点的当前资源使用率低于预设警戒阈值时,基于目标容器的当前资源使用率、上一次对目标容器的资源进行扩缩容的时间与当前时间的时间间隔,判断目标容器是否需要扩容或缩容;当目标容器需要扩容或缩容时,对应调高或调低目标容器的当前资源上限值,其中,当前资源上限值是上一次对目标容器的资源进行扩缩容后得到的。本专利技术能够实现对容器资源大小的动态调整,提高资源利用率。
4、如申请公开号为cn1125064
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状态获取模块、del本文档来自技高网...
【技术保护点】
1.一种基于信号量的k8s HPA扩缩容优化方法,其特征在于,包括:
2.如权利要求1所述的一种基于信号量的k8s HPA扩缩容优化方法,其特征在于,所述步骤S1中设置DeleteMarker键值对的值是布尔值,用于标记Pod是否应该被删除。
3.如权利要求2所述的一种基于信号量的k8s HPA扩缩容优化方法,其特征在于,所述步骤S1中给pod添加DeleteMarker的具体步骤包括:
4.如权利要求3所述的一种基于信号量的k8s HPA扩缩容优化方法,其特征在于,所述步骤S102中的缩容信号是指由业务程序发送给HPA的信号。
5.如权利要求4所述的一种基于信号量的k8s HPA扩缩容优化方法,其特征在于,所述步骤S2的具体步骤包括:
6.如权利要求5所述的一种基于信号量的k8s HPA扩缩容优化方法,其特征在于,所述步骤S202中请求启动切面的具体步骤包括:
7.如权利要求6所述的一种基于信号量的k8s HPA扩缩容优化方法,其特征在于,所述步骤S3的具体步骤包括:
8.如权利要求7所述的一种
9.如权利要求8所述的一种基于信号量的k8s HPA扩缩容优化方法,其特征在于,所述步骤S3013中的策略是指阈值设定和扩容和缩容的速度。
10.如权利要求9所述的一种基于信号量的k8s HPA扩缩容优化方法,其特征在于,包括:Pod状态获取模块、DeleteMarker设置模块、信号量计算模块、HPA控制模块、监控和日志模块,
...【技术特征摘要】
1.一种基于信号量的k8s hpa扩缩容优化方法,其特征在于,包括:
2.如权利要求1所述的一种基于信号量的k8s hpa扩缩容优化方法,其特征在于,所述步骤s1中设置deletemarker键值对的值是布尔值,用于标记pod是否应该被删除。
3.如权利要求2所述的一种基于信号量的k8s hpa扩缩容优化方法,其特征在于,所述步骤s1中给pod添加deletemarker的具体步骤包括:
4.如权利要求3所述的一种基于信号量的k8s hpa扩缩容优化方法,其特征在于,所述步骤s102中的缩容信号是指由业务程序发送给hpa的信号。
5.如权利要求4所述的一种基于信号量的k8s hpa扩缩容优化方法,其特征在于,所述步骤s2的具体步骤包括:
6.如权利要求5所...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。