本发明涉及容器编排,尤其涉及一种容器编排的集群扩缩容方法。
背景技术:
1、基于容器编排的横向扩缩容和纵向扩缩容是两种不同的资源调整策略。横向扩缩容是通过调整集群中相同类型节点(如副本集、服务实例等)的数量来应对不同规模的负载,这种方式适用于可以并行处理的任务,如 web 服务器等。纵向扩缩容是通过调整单个节点的资源容量(如 cpu、内存等)来实现不同规模的负载,这种方式适用于对单个任务进行深度优化的场景,如大数据分析、高性能计算等。
2、大多数情况下,hpa(hpa horizontal pod auto scaler,水平扩缩容)和vpa(vpavertical pod autoscaler,垂直扩缩容)都是独立作用的,二者的策略在一定程度上会存在相互干扰的情况。同时hpa和vpa存在弹性有限情况,hpa无法在单副本情况下进行缩容,vpa难以实现集群大规模的扩容。因此,在为业务或应用程序设计集群时,亟待提出一种多样化的自动扩缩容方法,应对多种特定应用场景,确保应用程序能够在不同负载下平稳运行,实现更精细化的资源管理和负载调整。
技术实现思路
1、本发明的一个目的在于提出一种容器编排的集群扩缩容方法,本发明通过多样化的自动扩缩容方法,实现对容器编排集群更加精细化的资源管理和负载调整,引入了一种h-vpa扩缩容方法,能够更加合理的初始化pod的资源配置,精确控制集群pod的尺度和数量,保障应用程序平稳运行,进一步提升资源利用率。
2、根据本发明实施例的一种容器编排的集群扩缩容方法,包括如下步骤:
3、s1、构建理想负载指标,定义双区间参数对,并根据业务需求确认pod负载指标;
4、s2、基于应用程序的计算类型分类和资源满载测试方法进行应用程序运行资源初始化配置;
5、s3、使用指标采集器和节点代理周期性对pod内部所有容器container负载进行聚合统计,监控pod负载状态;
6、s4、监控 pod 的负载状态,获取应用程序的总负载,结合理想应用负载配置,动态地计算应用程序所需资源的 vpa 的单副本理想配置和 hpa 的副本数量,进而对 pod 资源负载进行动态调整。
7、可选的,所述s1具体包括:
8、s11、使用l、h参数确认负载可接受区间范围,在可接受区间范围内,使用dl、dh确认理想负载区间范围,完成低负载区域[0,l]、稳定负载区域[l,dl]、理想负载区域[dl,dh]、高效负载区域[dh,h]和高负载区域[h,100]的确认;
9、s12、根据业务需求,确认pod优化范围。
10、可选的,所述s2具体包括:
11、s21、构建应用程序的计算类型分类,并设置计算类型分类对应的资源配置,并按实际情况进行扩展;
12、s22、依据计算类型分类构建应用程序资源满载测试,提供单pod资源配置的最优期望。
13、可选的,所述s22具体包括:
14、s221、设计应用程序的计算类型分类并设置相应类别的资源配置,按照计算密集型、内存密集型和通用类型进行分类;
15、s222、对pod上运行的应用程序进行分类,对数据预处理应用服务划分为计算密集型、信息检索服务划分为内存密集型、权限管理服务划分为通用类型;
16、s223、进行应用程序资源满载测试,测试出应用程序所需cpu和内存的最佳匹配;
17、s224、统计pod中应用程序的资源总需求,按照各应用程序满载情况,初始化配置pod资源。
18、可选的,所述资源满载测试包括:
19、计算密集型满载测试,在cpu满载情况下,优化内存资源配置;
20、内存密集型满载测试,在内存满载情况下,优化cpu资源配置;
21、通用类型分别测试cpu满载情况下内存的资源需求和内存满载cpu的资源需求,按照资源优化比例的高低,选择输出pod资源初始化配置参数。
22、可选的,所述s3具体包括:
23、s31、在容器编排的集群中安装指标服务器,使得自动缩放器能够收集有关 pod的 cpu 和内存利用率指标;
24、s32、采用容器指标采集器采集各个节点上每个pod中的容器的资源需求,指标采集器为每个容器保留资源隔离参数、历史资源使用情况、完整历史资源使用情况的直方图和网络统计信息;
25、s33、通过指标服务获取集群中的所有节点,并且查询每个节点上用于管理容器资源的节点代理,获取 cpu 和内存使用情况和每个节点的汇总统计指标信息;
26、s34、将指标信息进行存储,并封装指标api服务,应用程序通过指标api服务获取指定pod的工作负载,支撑自动缩放的 cpu 和内存。
27、可选的,所述s4具体包括:
28、s41、用户依据理想负载指标体系,自定义pod的理想负载状态区域;
29、s42、通过初始化配置参数和pod负载使用率可接受范围,确认hpa多副本的资源优化目标;
30、s43、利用资源管道,对部署配置中的pod负载状态进行监控,周期性获取pod负载情况,计算出pod资源的总使用量和平均使用率;
31、s44、依据pod资源状态的监控反馈信息,进行pod扩缩容判断;
32、s45、利用pod资源的总使用量、pod的负载使用率可接受范围和初始化配置参数,确定pod的数量上限;
33、s46、与当前pod副本数量进行比较,判断是否进行更新部署;
34、s47、持续监控pod负载状态,自动化实现集群资源的扩缩容。
35、可选的,用户选择高效负载区域为目标优化区域,即选择pod的负载使用率可接受范围为[dh, h],使用平均cpu利用率、平均内存利用率和pod使用率可接受范围判断pod是否需要扩缩容,存在以下五种情况:
36、若pod资源平均使用率:h<平均使用率,判断pod处于高负载区域,pod的资源利用率高,需要通过hpa增加副本数量进行扩容;
37、若pod资源平均使用率:dh<平均使用率<h,判断pod处于高效负载区域,pod的资源利用率较高,依据用户需求选择是否优化;
38、若pod资源平均使用率:dl<平均使用率<dh,判断pod处于理想负载区域,pod的资源利用率和应用程序的稳定性都比较好;
39、若pod资源平均使用率:l<平均使用率<dl,判断pod处于稳定负载区域,pod的资源利用率稍低,应用程序的稳定性较好,依据用户需求选择是否优化。
40、若pod资源平均使用率:平均使用率<l,判断pod处于低负载区域,pod的资源利用率低,通过vpa进行缩容或者减少hpa的副本数量。
41、可选的,用户选择高效负载区域为目标优化区域,pod的数量上限为
42、;
43、pod的数量下限为:
44、;
45、存在以下几种情况:
46、若时,说明单pod的资源利用率低,需要使用vpa对pod资源进行缩容操作,pod资源的缩容量为:
47、;
48、若时,说明pod资源需求副本数量n至少为1,则pod的推荐数量为:
49、;
50、其中,进一取整。
51、可选的,所述s46具体包括:
52、若时,按照更新部署配置;
53、若,则当前pod副本数量处于合理范围,部署配置无需更新;
54、若或,则当前pod副本数量处于不可接受范围,需要更新部署配置;
55、使用初始化作为单pod的资源大小,作为pod副本数量,更新部署配置,完成集群的扩缩容过程。
56、本发明的有益效果是:
57、(1)本发明通过改变随机设置pod资源期望值的现状,按应用程序类型,预置pod资源期望值,再通过应用程序运行满载测试的方式,实现pod资源配置期望参数的进一步优化,以更加精确的方式初始化应用程序运行资源配置;
58、(2)本发明加强应用场景与pod动态扩缩容的紧密联系,提出一套pod理想负载标准体系构建方法,更加适配业务场景的稳定性和高效性需求,明确pod动态扩缩容的方向和目标;
59、(3)本发明突破单模式动态扩容的限制和缺陷,设计一套h-vpa方法,综合了hpa与vpa的优势,扩展集群扩容的场景,避免hpa与vpa策略干扰,确保应用程序能够在不同负载下平稳运行,并且资源使用得到更加精细化的控制。
1.一种容器编排的集群扩缩容方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的一种容器编排的集群扩缩容方法,其特征在于,所述s1具体包括:
3.根据权利要求2所述的一种容器编排的集群扩缩容方法,其特征在于,所述s2具体包括:
4.根据权利要求3所述的一种容器编排的集群扩缩容方法,其特征在于,所述s22具体包括:
5.根据权利要求4所述的一种容器编排的集群扩缩容方法,其特征在于,所述资源满载测试包括:
6.根据权利要求4所述的一种容器编排的集群扩缩容方法,其特征在于,所述s3具体包括:
7.根据权利要求6所述的一种容器编排的集群扩缩容方法,其特征在于,所述s4具体包括:
8.根据权利要求7所述的一种容器编排的集群扩缩容方法,其特征在于,用户选择高效负载区域为目标优化区域,即选择pod的负载使用率可接受范围为[dh, h],使用平均cpu利用率、平均内存利用率和pod使用率可接受范围判断pod是否需要扩缩容,存在以下五种情况:
9.根据权利要求8所述的一种容器编排的集群扩缩容方法,其特征在于,用户选择高效负载区域为目标优化区域,pod的数量上限为
10.根据权利要求9所述的一种容器编排的集群扩缩容方法,其特征在于,所述s46具体包括: