容器集群资源调度方法、系统、设备及存储介质与流程

文档序号:34631159发布日期:2023-06-29 14:50阅读:27来源:国知局
容器集群资源调度方法、系统、设备及存储介质与流程

所属的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“平台”。下面参照图8来描述根据本发明的这种实施方式的电子设备600。图8显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图8所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640等。其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述容器集群资源调度方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1中所示的步骤。所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(rom)6203。所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。所述容器集群资源调度设备中,所述存储器中的程序被处理器执行时实现所述的容器集群资源调度方法的步骤,因此,所述设备也可以获得上述容器集群资源调度方法的技术效果。本发明实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被处理器执行时实现所述的容器集群资源调度方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上执行时,所述程序代码用于使所述终端设备执行本说明书上述容器集群资源调度方法部分中描述的根据本发明各种示例性实施方式的步骤。参考图9所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上执行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。所述计算机存储介质中的程序被处理器执行时实现所述的容器集群资源调度方法的步骤,因此,所述计算机存储介质也可以获得上述容器集群资源调度方法的技术效果。以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。


背景技术:

1、异构容器集群环境往往涉及不同版本的容器集群、多种容器运行引擎(docker/kata/kubevirt)和多种计算架构(x86/arm/mips),在异构容器集群部署应用需要解决容器引擎、计算架构和算力规格的适配问题。

2、同时,现有kubernetes(一个开源的,用于管理云平台中多个主机上的容器化的应用)的容器部署调度机制需要逐个集群、逐个节点为每个容器进行筛选匹配,在集群数较多或集群的节点数较多的情况下,容器资源调度效率较低。


技术实现思路

1、针对现有容器资源调度方法存在的异构算力架构和容器引擎的适配问题以及大规模容器集群环境的调度效率问题,本发明的目的在于提供一种容器集群资源调度方法、系统、设备及存储介质,实现容器实例在大规模异构容器集群环境中快速部署、精细调度。

2、本发明实施例提供一种容器集群资源调度方法,包括如下步骤:

3、从各个容器集群的各个容器节点中提取算力资源信息,建立节点级算力标签索引和集群级算力标签索引;

4、获取请求部署的容器实例的算力需求标签;

5、基于所述算力需求标签选择候选容器集群,将所述容器实例分配给所述候选容器集群;

6、基于所述算力需求标签在被分配的容器集群中选择候选容器节点,将所述容器实例分配给所述候选容器节点。

7、在一些实施例中,所述从各个容器集群的各个容器节点中提取算力资源信息,建立节点级算力标签索引和集群级算力标签索引之前,还包括如下步骤:

8、基于容器算力基准测试分别获得各种算力设备和各种容器引擎的性能系数,建立算力设备性能系数表和容器引擎性能系数表,并建立算力设备和容器引擎的组合性能系数表。

9、在一些实施例中,所述从各个容器集群的各个容器节点中提取算力资源信息,建立节点级算力标签索引和集群级算力标签索引,包括如下步骤:

10、采用算力采集器采集各个所述容器节点的容器引擎信息、算力设备信息和可用算力资源信息,建立各个所述容器节点的算力资源标签;

11、基于各个所述容器节点的算力资源标签构建节点级算力标签索引,索引名为标签名,索引值为与该标签匹配的容器节点有序列表;

12、基于所述节点级算力标签索引构建集群级标签索引,索引名为标签名,索引值为与标签匹配的容器集群有序列表。

13、在一些实施例中,所述采用算力采集器采集各个所述容器节点的容器引擎信息、算力设备信息和可用算力资源信息,包括如下步骤:

14、监听所述容器节点的容器引擎的启动事件获得容器引擎信息;

15、从所述容器节点的操作系统配置文件中获取算力设备信息;

16、通过节点控制器获取所述容器节点的可用算力资源信息。

17、在一些实施例中,所述可用算力资源包括计算资源信息和内存资源信息;所述建立各个所述容器节点的算力资源标签,包括如下步骤:

18、根据所述容器节点的计算资源的最小粒度和最大粒度,基于第一区间划分规则划分计算资源区间;

19、查询所述算力设备和容器引擎的组合性能系数表,确定所述容器节点的性能系数;

20、根据所述性能系数计算每个计算资源区间可分配的最大容量,作为每个计算资源区间的计算资源标签值;

21、根据所述容器节点的内存资源的最小粒度和最大粒度,基于第二区间划分规则划分内存资源区间;

22、确定各个内存资源区间的可分配的最大容量,作为每个内存资源空间的内存资源标签值。

23、在一些实施例中,所述节点级算力标签索引中各个标签所对应的容器节点有序列表中,各个所述容器节点按照可用算力资源容量从大到小排序;

24、各个所述集群级算力标签索引中各个标签所对应的容器集群有序列表中,各个所述容器集群按照可用算力资源容量从大到小排序。

25、在一些实施例中,所述获取请求部署的容器实例的算力需求标签,包括如下步骤:

26、接收到容器应用部署请求;

27、从所述容器应用部署请求中提取算力需求标签,所述算力需求标签包括容器引擎信息、算力设备信息和算力资源规则信息中的至少一种。

28、在一些实施例中,基于所述算力需求标签选择候选容器集群,将所述容器实例分配给所述候选容器集群,包括如下步骤:

29、根据各个所述算力需求标签,分别查找匹配的容器集群列表;

30、将查找到的容器集群列表进行交集运算,得到候选容器集群列表;

31、从所述候选容器集群列表中的第一个候选容器集群开始,将请求部署的容器实例批量分配给该候选容器集群。

32、在一些实施例中,基于所述算力需求标签在被分配的容器集群中选择候选容器节点,将所述容器实例分配给所述候选容器节点,包括如下步骤:

33、在被分配的集群中分别查找匹配各个所述算力需求标签的容器节点列表;

34、对查找到的容器节点列表进行交集运算,得到候选容器节点列表,其中,各个候选容器节点按照可用算力资源容量从大到小排序;

35、从所述候选容器节点列表中的第一个候选容器节点开始,将请求部署的容器实例批量分配给该候选容器节点。

36、在一些实施例中,将所述容器实例分配给所述候选容器节点之后,还包括如下步骤:

37、根据所述容器实例分配后对应容器节点的可用资源变化情况和对应容器集群的可用资源变化情况,更新所述节点级算力标签索引和所述集群级算力标签索引。

38、在一些实施例中,更新所述节点级算力标签索引和所述集群级算力标签索引,包括如下步骤:

39、于每个所述容器节点的可用资源变化时,更新所对应的节点级算力标签索引和集群级算力标签索引;或者,

40、于一批所述容器实例分配完成后,更新所对应的节点级算力标签索引和集群级算力标签索引;或者,

41、每隔预设间隔时间,更新可用资源发生变化的容器节点和容器集群所对应的节点级算力标签索引和集群级算力标签索引。

42、在一些实施例中,所述建立节点级算力标签索引和集群级算力标签索引之后,所述节点级算力标签索引和集群级算力标签索引的标签名和索引值分别采用哈希表的方式存储;

43、基于所述算力需求标签选择候选容器集群和基于所述算力需求标签在被分配的容器集群中选择候选容器节点时,通过哈希键访问所述算力需求标签的标签名所对应的索引值。

44、本发明实施例还提供一种容器集群资源调度系统,用于实现所述的容器集群资源调度方法,所述系统包括:

45、索引建立模块,用于从各个容器集群的各个容器节点中提取算力资源信息,建立节点级算力标签索引和集群级算力标签索引;

46、需求获取模块,用于获取请求部署的容器实例的算力需求标签;

47、集群分配模块,用于基于所述算力需求标签选择候选容器集群,将所述容器实例分配给所述候选容器集群;

48、节点分配模块,用于基于所述算力需求标签在被分配的集群中选择候选容器节点,将所述容器实例分配给所述候选容器节点。

49、本发明实施例还提供一种容器集群资源调度设备,包括:

50、处理器;

51、存储器,其中存储有所述处理器的可执行指令;

52、其中,所述处理器配置为经由执行所述可执行指令来执行所述的容器集群资源调度方法的步骤。

53、本发明实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被处理器执行时实现所述的容器集群资源调度方法的步骤。

54、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

55、本发明的容器集群资源调度方法、系统、设备及存储介质具有如下有益效果:

56、通过采用本发明,通过算力标签快速筛选算力匹配的集群或节点,容器资源的部署和调度速度更快。简化算力标签维护,自动提取、注入和更新节点和集群的算力标签,无需人工管理标签配置。在一些实施例中,资源调度更加精细准确,一方面通过基准测试能更准确地衡量每个容器节点的真实算力,另一方面能够以0.01核cpu、0.01g内存为粒度进行细粒度的资源调度,有助于减少资源碎片。

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