一种资源配额动态调整方法、装置、设备及存储介质与流程
未命名
08-14
阅读:98
评论:0
exporter容器的cpu limit设置过低,即cgroups cpu限额过低,可能导致pod持有kernfs_rw锁的情况下由于cpu配额耗尽而得不到调度,进而使其它任务获取不到锁而等待,最终导致cpu、磁盘i/o、网络等在系统负载较低的情况下hang住。
12.在实际生产中,由于部署node exporter时配置了较低的cpu限额,同时节点中运行了100个pod,每个pod对应一个虚拟网卡,当node exporter采集这些网卡信息时,会频繁访问/sys文件系统,即占用kernfs_rw锁。由于node exporter cpu配额不足以处理这些请求,导致node-exporter在占用锁的情况下得不到调度,从而导致集群节点hang住。
技术实现要素:
13.针对现有技术中存在的缺陷,本发明第一方面提供一种资源配额动态调整方法,其可以解决cgroups资源配额不足导致的进程、容器或集群节点运行异常的问题。
14.为达到以上目的,本发明采取的技术方案是:
15.一种资源配额动态调整方法,该方法包括以下步骤:
16.在kubernetes集群部署时,通过控制组cgroups动态控制器动态调整系统pod的cgroups资源配额,以满足运行需求。
17.一些实施例中,所述在kubernetes集群部署时,通过控制组cgroups动态控制器动态调整系统pod的cgroups资源配额,以满足运行需求,包括:
18.利用cgroups动态控制器监测系统和服务监控系统prometheus的查询频率;
19.若prometheus的查询频率突增使得系统pod的守护进程的资源使用达到限额值时,利用cgroups动态控制器增加系统pod的资源配额,以满足系统pod的守护进程运行。
20.一些实施例中,所述在kubernetes集群部署时,通过控制组cgroups动态控制器动态调整系统pod的cgroups资源配额,以满足运行需求,包括:
21.利用cgroups动态控制器查询系统pod的资源占用情况;
22.若系统pod的资源占用低,则利用cgroups动态控制器降低系统pod的cgroups资源配额。
23.一些实施例中,所述系统pod为node exporter。
24.一些实施例中,还包括:
25.利用cgroups动态控制器对相关系统pod进行标记,并将标记的系统pod的cgroups资源配额设置为不限制资源配额。
26.本发明第二方面提供一种资源配额动态调整装置,其可以解决cgroups资源配额不足导致的进程、容器或集群节点运行异常的问题。
27.为达到以上目的,本发明采取的技术方案是:
28.一种资源配额动态调整装置,其特征在于,包括:
29.系统pod;
30.cgroups动态控制器,其用于在kubernetes集群部署时,动态调整所述系统pod的cgroups资源配额,以满足运行需求。
31.一些实施例中,所述cgroups动态控制器在kubernetes集群部署时,动态调整系统pod的cgroups资源配额,以满足运行需求,包括:
32.利用cgroups动态控制器监测系统和服务监控系统prometheus的查询频率;
33.若prometheus的查询频率突增使得系统pod的守护进程的资源使用达到限额值时,利用cgroups动态控制器增加系统pod的资源配额,以满足系统pod的守护进程运行。
34.本发明第三方面提供一种设备,所述设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的计算机程序,其中所述计算机程序被所述处理器执行时,实现上述任意一种资源配额动态调整方法的步骤。
35.本发明第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其中所述计算机程序被处理器执行时,实现上述任意一种资源配额动态调整方法的步骤。
36.与现有技术相比,本发明的优点在于:
37.本发明中的资源配额动态调整方法,在kubernetes集群部署时,通过控制组cgroups动态控制器动态调整系统pod的cgroups资源配额,以满足运行需求。可在系统pod的守护进程的资源使用达到限额值时,利用cgroups动态控制器增加系统pod的资源配额,在系统pod的资源占用低,则利用cgroups动态控制器降低系统pod的cgroups资源配额,从而可解决cgroups资源配额不足导致的进程、容器或集群节点运行异常的问题,提高了prometheus、系统pod的运行稳定性。
附图说明
38.图1为本发明实施例中kubernetes集群的组成示意图;
39.图2为本发明实施例中计算机设备的结构示意框图。
具体实施方式
40.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
41.本发明实施例提供一种资源配额动态调整方法,该方法包括以下步骤:
42.在kubernetes集群部署时,通过控制组cgroups动态控制器动态调整系统pod的cgroups资源配额,以满足运行需求。
43.为解决现有技术中kubernetes在部署系统pod时的资源限额导致系统和服务监控系统prometheus无法查询节点指标甚至导致节点系统异常问题。引入了cgroups动态控制器,cgroups动态控制器的功能包括:查询/遍历cgroups、查询资源使用情况、查询负载、cgroups限额(重)配置等。cgroups动态控制器和系统pod的关系可参见图1所示。
44.从而可使用cgroups动态控制器在kubernetes集群部署时通过kubectl在集群节点中部署,向上负责集群各节点的cgroups查询,向下负责集群各节点cgroups的资源限额动态配置。
45.具体而言,动态调整系统pod的cgroups资源配额,至少包括下面两种情形:
46.一种情形下,利用cgroups动态控制器监测系统和服务监控系统prometheus的查询频率;若prometheus的查询频率突增使得系统pod的守护进程的资源使用达到限额值时,利用cgroups动态控制器增加系统pod的资源配额,以满足系统pod的守护进程运行。
47.另一种情形下,利用cgroups动态控制器查询系统pod的资源占用情况;若系统pod的资源占用低,则利用cgroups动态控制器降低系统pod的cgroups资源配额。
48.也就是说,可以根据系统pod当前资源的需求情况,灵活配置合理的资源配额,使得既可以满足基本的运行需求,也能尽可能的节约资源,提高资源整体的的利用率。
49.下面以系统pod的node exporter为例,对整个工作流程和原理进行说明:
50.1.节点正常运行;
51.2.prometheus查询内容和查询频率突增,导致node exporter cgroups配额不能够支撑node-exporter的运行;
52.3.cgroups动态控制器检测到prometheus查询频率突增以及node-exporter资源使用达限额值;
53.4.cgroups动态控制器动态调整node exporter cgroups资源配额;
54.5.节点恢复正常;
55.6.cgroups动态控制器发现node-exporter资源占用低,动态调整node exporter cgroups资源配额;
56.7.节点正常运行。
57.经过上述处理,可通过cgroups动态控制器动态调整node exporter的资源配额,可以很好地解决现有技术中pod持有kernfs_rw锁的情况下,由于cpu配额耗尽而得不到调度,进而使其它任务获取不到锁而等待,最终导致cpu、磁盘i/o、网络等在系统负载较低的情况下hang住的问题。
58.值得说明的是,为了简化cgroups动态控制器,可以直接将系统pod(如node exporter)不限制资源配额。
59.具体而言,可利用cgroups动态控制器对相关系统pod进行标记,并将标记的系统pod的cgroups资源配额设置为不限制资源配额即可。
60.综上所述,本发明中的资源配额动态调整方法,在kubernetes集群部署时,通过控制组cgroups动态控制器动态调整系统pod的cgroups资源配额,以满足运行需求。可在系统pod的守护进程的资源使用达到限额值时,利用cgroups动态控制器增加系统pod的资源配额,在系统pod的资源占用低,则利用cgroups动态控制器降低系统pod的cgroups资源配额,从而可解决cgroups资源配额不足导致的进程、容器或集群节点运行异常的问题,提高了prometheus、系统pod的运行稳定性。
61.本发明实施例还提供一种资源配额动态调整装置,其包括系统pod和cgroups动态控制器。
62.其中,cgroups动态控制器用于在kubernetes集群部署时,动态调整系统pod的cgroups资源配额,以满足运行需求。
63.一些实施例中,所述cgroups动态控制器在kubernetes集群部署时,动态调整系统pod的cgroups资源配额,以满足运行需求,包括:
64.利用cgroups动态控制器监测系统和服务监控系统prometheus的查询频率;
65.若prometheus的查询频率突增使得系统pod的守护进程的资源使用达到限额值时,利用cgroups动态控制器增加系统pod的资源配额,以满足系统pod的守护进程运行。
66.一些实施例中,所述cgroups动态控制器在kubernetes集群部署时,动态调整系统
pod的cgroups资源配额,以满足运行需求,还包括:
67.利用cgroups动态控制器查询系统pod的资源占用情况;
68.若系统pod的资源占用低,则利用cgroups动态控制器降低系统pod的cgroups资源配额。
69.一些实施例中,所述cgroups动态控制器还用于:
70.利用cgroups动态控制器对相关系统pod进行标记,并将标记的系统pod的cgroups资源配额设置为不限制资源配额。
71.本发明实施例还提供一种设备,所述设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的计算机程序,其中所述计算机程序被所述处理器执行时,实现上述资源配额动态调整方法的步骤。
72.具体的参见图2所示,本发明实施例中的设备为计算机设备,其包括通过系统总线连接的处理器、存储器和网络接口,其中,存储器可以包括非易失性存储介质和内存储器。
73.非易失性存储介质可存储操作系统和计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行任意一种资源配额动态调整方法。
74.处理器用于提供计算和控制能力,支撑整个计算机设备的运行。
75.内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种资源配额动态调整方法。
76.该网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图2中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图2中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
77.应当理解的是,处理器可以是中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
78.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其中所述计算机程序被处理器执行时,实现上述资源配额动态调整方法的步骤。
79.本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读存储介质上,计算机可读存储介质可以包括计算机可读存储介质(或非暂时性介质)和通信介质(或暂时性介质)。
80.如本领域普通技术人员公知的,术语计算机可读存储介质包括在用于存储信息
(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机可读存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
81.示例性的,计算机可读存储介质可以是前述实施例的电子设备的内部存储单元,例如电子设备的硬盘或内存。计算机可读存储介质也可以是电子设备的外部存储设备,例如电子设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。
82.以上仅为本发明实施例的具体实施方式,但本发明实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明实施例的保护范围之内。因此,本发明实施例的保护范围应以权利要求的保护范围为准。
技术特征:
1.一种资源配额动态调整方法,其特征在于,该方法包括以下步骤:在kubernetes集群部署时,通过控制组cgroups动态控制器动态调整系统pod的cgroups资源配额,以满足运行需求。2.如权利要求1所述的一种资源配额动态调整方法,其特征在于,所述在kubernetes集群部署时,通过控制组cgroups动态控制器动态调整系统pod的cgroups资源配额,以满足运行需求,包括:利用cgroups动态控制器监测系统和服务监控系统prometheus的查询频率;若prometheus的查询频率突增使得系统pod的守护进程的资源使用达到限额值时,利用cgroups动态控制器增加系统pod的资源配额,以满足系统pod的守护进程运行。3.如权利要求1或2所述的一种资源配额动态调整方法,其特征在于,所述在kubernetes集群部署时,通过控制组cgroups动态控制器动态调整系统pod的cgroups资源配额,以满足运行需求,包括:利用cgroups动态控制器查询系统pod的资源占用情况;若系统pod的资源占用低,则利用cgroups动态控制器降低系统pod的cgroups资源配额。4.如权利要求1所述的一种资源配额动态调整方法,其特征在于:所述系统pod为node exporter。5.如权利要求1所述的一种资源配额动态调整方法,其特征在于,还包括:利用cgroups动态控制器对相关系统pod进行标记,并将标记的系统pod的cgroups资源配额设置为不限制资源配额。6.一种资源配额动态调整装置,其特征在于,包括:系统pod;cgroups动态控制器,其用于在kubernetes集群部署时,动态调整所述系统pod的cgroups资源配额,以满足运行需求。7.如权利要求6所述的一种资源配额动态调整装置,其特征在于,所述cgroups动态控制器在kubernetes集群部署时,动态调整系统pod的cgroups资源配额,以满足运行需求,包括:利用cgroups动态控制器监测系统和服务监控系统prometheus的查询频率;若prometheus的查询频率突增使得系统pod的守护进程的资源使用达到限额值时,利用cgroups动态控制器增加系统pod的资源配额,以满足系统pod的守护进程运行。8.如权利要求6或7所述的一种资源配额动态调整装置,其特征在于,所述cgroups动态控制器在kubernetes集群部署时,动态调整系统pod的cgroups资源配额,以满足运行需求,包括:利用cgroups动态控制器查询系统pod的资源占用情况;若系统pod的资源占用低,则利用cgroups动态控制器降低系统pod的cgroups资源配额。9.一种设备,其特征在于,所述设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的计算机程序,其中所述计算机程序被所述处理器执行时,实现如权利要求1至5中任一项所述的一种资源配额动态调整方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,其中所述计算机程序被处理器执行时,实现如权利要求1至5中任一项所述的一种资源配额动态调整方法的步骤。
技术总结
本发明公开了一种资源配额动态调整方法、装置、设备及存储介质,涉及系统资源配额调度技术领域,资源配额动态调整方法,包括:在Kubernetes集群部署时,通过控制组CGroups动态控制器动态调整系统Pod的CGroups资源配额,以满足运行需求。本发明可以解决CGroups资源配额不足导致的进程、容器或集群节点运行异常的问题。的问题。的问题。
技术研发人员:荣涛
受保护的技术使用者:中电云数智科技有限公司
技术研发日:2023.05.10
技术公布日:2023/8/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
