基于Kubernetes的服务器运算资源调度系统与方法与流程

未命名 07-28 阅读:134 评论:0

基于kubernetes的服务器运算资源调度系统与方法
技术领域
1.本发明涉及服务器资源调度技术领域,具体而言涉及一种基于kubernetes的服务器运算资源调度系统与方法,实现运算资源的分配、执行和释放。


背景技术:

2.在分布式环境中,如何实现服务器资源的高效调度,实现对资源的分配、监测、执行与回收,实现服务器资源的高效、合理、安全利用,是关键的环节。例如,随着对单体应用程序赋予更多的能力,对资源需求也呈现出多样化的态势。在流水线场景下,有些应用程序可能仅需要1核的cpu资源,而有些应用程序使用4核需要10分钟,在有些情况下,我们需要将多个应用编排成串联,得到一个结果,而在有些时候,如图1所示,我们需要将应用进行串并组合,得到另一个结果。面对这些多样化的需求,现有的服务器运算资源调度系统难以胜任。
3.现有技术文献:
4.专利文献1:cn112286631a一种kubernetes资源调度方法、装置与电子设备


技术实现要素:

5.鉴于现有技术存在的缺陷与不足,本发明的目的在于提出一种基于kubernetes的服务器运算资源分配、执行和释放方法,实现资源调度,实现多应用程序在流水线中串行、并行与混合方式运行时对资源进行合理的分配、执行、释放的控制,解决多应用在流水线化执行时,开发的复杂度高、资源调度控制的问题,减少资源的成本,提升程序的运行效率。
6.根据本发明目的的第一方面,提供一种基于kubernetes的服务器运算资源调度系统,包括:
7.应用程序管理模块,被设置用于管理应用程序并配置每一个应用程序运行时所需的入参出参;
8.dag构建模块,被设置用于按照预定的执行逻辑对多个应用程序进行编排,通过多个应用程序的执行顺序的逻辑编排创建用于执行一业务需求的dag树状结构,并生成配置文件;
9.调度引擎,被设置用于解析所述配置文件,生成执行dag树状结构中应用程序所需的运行环境,进行资源分配,并生成流水线任务加入到任务队列,等待执行器调度执行;
10.执行器,配置有应用执行池和应用抢占池,所述执行器被设置成基于任务队列中的任务的优先级与入池时间而弹出最小应用,并基于kubernets集群中服务器运算资源中每个节点可用的资源与每个应用程序所需的资源的计算,确定绑定节点,执行应用程序并且在执行后释放和更新可用资源;
11.控制台,被设置用于在执行器调度执行所述流水线任务时监听执行过程,监控输出,并在流水线任务执行完成后发布流水线任务的执行结果以及回收资源。
12.作为可选的实施方式,所述dag构建模块包含:
13.应用程序编排模块,用于按照业务需求的执行逻辑对多个应用程序进行编排,并连接相关的参数对应逻辑,创建用于执行业务需求的dag树状结构;
14.配置生成模块,用于根据所创建的dag树状结构生成配置文件,包含每个应用程序的入参出参以及执行顺序。
15.作为可选的实施方式,所述调度引擎生成的流水线任务,按照提交的时间顺序存放到任务队列的任务列表内。
16.作为可选的实施方式,所述执行器在调度执行过程中,每个应用程序执行完成时,将通过dag算法从应用执行池取出一个应用程序,如果应用抢占池内不存在应用程序,则对取出的一个应用程序直接分配节点,如果应用抢占池内存在应用程序,则将取出的一个应用程序投入到应用抢占池;
17.所述应用抢占池内的应用程序均配置有p标记与t标记,p标记表示优先级,t标记表示入池时间,即投入到应用抢占池的时间。
18.作为可选的实施方式,所述执行器被设置成按照下述方式进行调度执行:
19.所述应用抢占池内的应用程序优先被调度,将应用抢占池内的应用程序按p与t进行排序,每次弹出最小的一个应用程序,如果弹出的应用程序能绑定节点,继续弹出下一个;否则将停止其它应用程序的绑定,等待下一次可用资源更新的唤醒;
20.如果应用程序在应用执行池内调度被分配到节点,并且当前应用执行池中的数量小于预设的大小,将再次从任务队列弹出一条任务。
21.作为可选的实施方式,所述应用抢占池内的应用程序被调度执行的过程中,按照下述方式绑定节点:
22.节点绑定公式为f(x)={min(f(r
i-r))},f(x)≥0,i∈[1,total(nodes)];
[0023]
其中,ri为kubernets集群的第i个节点的可用的资源,r为每个应用程序所需的资源,total(nodes)表述节点总量,f(x)计算结果需要大于等于0;
[0024]
通过计算,得出一个多维度的最小值,并将结果降序,取出的第一个作为绑定的节点。根据本发明目的的第二方面,还提出一种服务器运算资源调度方法,实现资源的分配、执行和释放控制,所述方法包括以下步骤:
[0025]
初始化应用程序,设置应用程序名称、用途、入参出参以及资源占用信息;
[0026]
根据业务需求的执行逻辑选择多个应用程序进行编排,并连接相关的参数对应逻辑,创建用于执行业务需求的dag树状结构,并生成配置文件;
[0027]
通过调度引擎解析所述配置文件,生成执行dag树状结构中应用程序所需的运行环境,进行资源分配,并生成流水线任务加入到任务队列,等待执行器调度执行;
[0028]
在执行器的应用执行池和应用抢占池内按照设定的方式将任务中任务队列中已编排好的应用程序放入,调度执行;
[0029]
其中,在流水线任务执行过程中,控制台开启监听线程,监听流水线任务执行过程,监控输出,并在流水线任务执行完成后发布流水线任务的执行结果以及回收资源。
[0030]
应当理解,前述构思以及在下面更加详细地描述的额外构思的所有组合只要在这样的构思不相互矛盾的情况下都可以被视为本公开的发明主题的一部分。另外,所要求保护的主题的所有组合都被视为本公开的发明主题的一部分。
[0031]
结合附图从下面的描述中可以更加全面地理解本发明教导的前述和其他方面、实
施例和特征。本发明的其他附加方面例如示例性实施方式的特征和/或有益效果将在下面的描述中显见,或通过根据本发明教导的具体实施方式的实践中得知。
附图说明
[0032]
附图不意在按比例绘制。在附图中,在各个图中示出的每个相同或近似相同的组成部分可以用相同的标号表示。为了清晰起见,在每个图中,并非每个组成部分均被标记。
[0033]
图1是多应用程序在流水线中串行、并行与混合方式运行的逻辑流程示意图。
[0034]
图2是本发明实施例的服务器运算资源调度系统的示意图。
[0035]
图3是本发明实施例的服务器运算资源调度系统的具体实现逻辑图。
[0036]
图4是本发明实施例的服务器运算资源调度方法的示意图。
[0037]
图5是本发明实施例的应用程序初始化的示意图。
[0038]
图6是本发明实施例的dag构建的示意图。
[0039]
图7是本发明实施例的执行器调度原理示意图。
[0040]
图8是根据本发明方法的一个示例的资源处理流水线。
[0041]
图9-19是使用上述图8示例的资源处理流水线的2个任务a、b按照本发明的资源调度方法依次调度处理的过程示意图。
具体实施方式
[0042]
为了更了解本发明的技术内容,特举具体实施例并配合所附图式说明如下。
[0043]
在本公开中参照附图来描述本发明的各方面,附图中示出了许多说明的实施例。本公开的实施例不必定意在包括本发明的所有方面。应当理解,上面介绍的多种构思和实施例,以及下面更加详细地描述的那些构思和实施方式可以以很多方式中任意一种来实施,这是因为本发明所公开的构思和实施例并不限于任何实施方式。另外,本发明公开的一些方面可以单独使用,或者与本发明公开的其他方面的任何适当组合来使用。
[0044]
结合图2所示实施例的基于kubernetes的服务器运算资源调度系统,包括应用程序管理模块、dag构建模块、调度引擎、执行器以及控制台。
[0045]
应用程序管理模块,被设置用于管理应用程序并配置每一个应用程序运行时所需的入参出参。
[0046]
dag构建模块,被设置用于按照预定的执行逻辑对多个应用程序进行编排,通过多个应用程序的执行顺序的逻辑编排创建用于执行一业务需求的dag树状结构,并生成配置文件。其中dag树状结构的每个节点为一个应用程序。
[0047]
调度引擎,被设置用于解析配置文件,生成执行dag树状结构中应用程序所需的运行环境,进行资源分配,并生成流水线任务加入到任务队列,等待执行器调度执行。
[0048]
执行器,配置有应用执行池和应用抢占池,执行器被设置成基于任务队列中的任务的优先级与入池时间而弹出最小应用,并基于kubernets集群中服务器运算资源中每个节点可用的资源与每个应用程序所需的资源的计算,确定绑定节点,执行应用程序并且在执行后释放和更新可用资源。
[0049]
控制台,被设置用于在执行器调度执行流水线任务时监听执行过程,监控输出,并在流水线任务执行完成后发布流水线任务的执行结果以及回收资源。
[0050]
作为可选的实施方式,dag构建模块包含应用程序编排模块与配置生成模块。
[0051]
应用程序编排模块,用于按照业务需求的执行逻辑对多个应用程序进行编排,并连接相关的参数对应逻辑,创建用于执行业务需求的dag树状结构。
[0052]
配置生成模块,用于根据所创建的dag树状结构生成配置文件,包含每个应用程序的入参出参以及执行顺序。
[0053]
结合图2、3所示示例的服务器运算资源调度系统还包括dag((directed acyclic graph,有向无环图)设计面板模块,提供将流水线画板,通过拖拉拽选择将一个或者多个应用程序进行编排,确定执行的逻辑和顺序,并连接相关的参数对应逻辑,组成一条流水线。
[0054]
如图2所示,服务器运算资源调度系统还配置有任务监听模块,用于在执行器执行前述创建的流水线任务时监听整个执行过程,监控输出。控制台在流水线任务执行完成后发布流水线任务的执行结果以及回收资源。
[0055]
如图3所示的示例中,在需要与用户进行交互的阶段,调度引擎会保持会话,等待用户处理完成后,恢复会话继续执行后续的应用程序。
[0056]
在本发明的实施例中,调度引擎生成的流水线任务,按照提交的时间顺序存放到任务队列的任务列表内。
[0057]
在任务队列中已编排好的应用程序,当任务开始执行时,任务队列中流水线任务的应用程序才能被放入到应用执行池。
[0058]
作为可选的实施例,执行器在调度执行过程中,每个应用程序执行完成时,将通过dag算法从应用执行池取出一个应用程序,如果应用抢占池内不存在应用程序,则对取出的一个应用程序直接分配节点,如果应用抢占池内存在应用程序,则将取出的一个应用程序投入到应用抢占池;
[0059]
应用抢占池内的应用程序均配置有p标记与t标记,p标记表示优先级,t标记表示入池时间,即投入到应用抢占池的时间。
[0060]
在优选的实施例中,执行器被设置成按照下述方式进行调度执行:
[0061]
应用抢占池内的应用程序优先被调度,将应用抢占池内的应用程序按p与t进行排序,每次弹出最小的一个应用程序,如果弹出的应用程序能绑定节点,继续弹出下一个;否则将停止其它应用程序的绑定,等待下一次可用资源更新的唤醒;
[0062]
如果应用程序在应用执行池内调度被分配到节点,并且当前应用执行池中的数量小于预设的大小,将再次从任务队列弹出一条任务。
[0063]
其中,应用抢占池内的应用程序被调度执行的过程中,按照下述方式绑定节点:
[0064]
节点绑定公式为f(x)={min(f(r
i-r))},f(x)≥0,i∈[1,total(nodes)];
[0065]
其中,ri为kubernets集群中第i个节点的可用的资源,r为每个应用程序所需的资源,total(nodes)表述节点总量,f(x)计算结果需要大于等于0;
[0066]
通过计算,得出一个多维度的最小值,并将结果降序,取出的第一个作为绑定的节点。
[0067]
结合图4所示的服务器运算资源调度方法的过程,实现资源的分配、执行和释放,其包括以下过程:
[0068]
初始化应用程序,设置应用程序名称、用途、入参出参以及资源占用信息,如图5所示;
[0069]
根据业务需求的执行逻辑选择多个应用程序进行编排,并连接相关的参数对应逻辑,创建用于执行业务需求的dag树状结构,如图6所示;格局配置和创建的dag生成配置文件;
[0070]
通过调度引擎解析配置文件,生成执行dag树状结构中应用程序所需的运行环境,进行资源分配,并生成流水线任务加入到任务队列,等待执行器调度执行;
[0071]
在执行器的应用执行池和应用抢占池内按照设定的方式将任务中任务队列中已编排好的应用程序放入,调度执行;
[0072]
其中,在流水线任务执行过程中,控制台开启监听线程,监听流水线任务执行过程,监控输出,并在流水线任务执行完成后发布流水线任务的执行结果以及回收资源。
[0073]
图7示例性地表示了执行器的调度工作原理:
[0074]
任务队列:按提交的时间顺序存放的任务列表;
[0075]
应用执行池:任务列表中已编排好的应用程序,当任务开始执行时,才能被放入;尤其优选的是,应用执行池配置容量大小限制,本实施例中以默认可放入32条任务为例;
[0076]
应用抢占池:应用抢占池内的应用程序均配置有p标记与t标记,,通过比较得最小的p与t,然后便可锁定应用;每个应用程序执行完成时,将通过dag算法从应用执行池取出一个应用,如果应用抢占池不存在应用,则直接分配节点,如果存在应用程序,则将取出的投入到抢占池;
[0077]
抢占池的应用优先被调度,将池中应用按p与t进行排序,每次弹出最小的一个,若弹出的应用能绑定节点,才能继续弹出下一个;如果无法被绑定节点,将停止其它应用的绑定,等待下一次资源更新的唤醒;
[0078]
如果应用在应用执行池被分配到节点,并且当前应用执行池中的数量小于所设定的大小,将再次从任务队列弹出一条任务。
[0079]
节点绑定公式为f(x)={min(f(r
i-r))},f(x)≥0,i∈[1,total(nodes)];
[0080]
其中,ri为kubernets集群中第i个节点的可用的资源,r为每个应用程序所需的资源,total(nodes)表述节点总量,f(x)计算结果需要大于等于0;
[0081]
通过计算,得出一个多维度的最小值,并将结果降序,取出的第一个作为绑定的节点。
[0082]
下面我们结合附图8-19所示,以图8示例的资源处理流水线为例,基于该流水线的2个流水线任务a、b,按照本发明的资源调度方法依次调度处理。
[0083]
kubernets集群中包含2个节点,每个节点都是16核,32g内存,每个节点gpu各5张相同型号,现要完成资源处理的调度任务,在这个任务中,我们标注了每个应用所需的资源,并完成了逻辑编排。在这条流水线上,我们主要处理png与fbx两种类型的资源,如图8所示,具体每个应用处理事务已备注在每个应用模块上。
[0084]
现在有两个流水线任务a、b,均使用这条流水线,将发生如下的调度:
[0085]
1)计算a流水线任务所需要的资源max与min,如果kubernets集群资源小于min值,则会产生错误继续执行下一个;
[0086]
当前a任务有:
[0087]
cpu=max(8+16)=24c;
[0088]
cpu=min(16c);
[0089]
mem=max(16+12)=28g,
[0090]
mem=min(16)=16g;
[0091]
2)开始执行a1应用,调度中心通过计算a1应用所需要的资源,并在node1与node2中过滤找到node1符合a1的max,min要求,并绑定节点node1的名称,调度到node1上,更新可用资源信息,暂记为r,如图9所示;
[0092]
3)当前集群还有剩余的资源时,调度将继续获取b流水线任务,同理会计算出流水线所需要的max,min,在这里的值设定与a相同;
[0093]
开始尝试执行b1应用,调度中心计算b1应用所需要的资源,通过计算,发现并在node1与node2都可满足,但是node1的计算的值更小,所以node1被绑定。过滤找到node2符合b1的max,min要求,计算公式为node=max(0,f(r
i-max)),i=[1,total(nodes)],如果计算的max值为0,将再次计算node=max(0,f(r
i-min)),i=[1,total(nodes)],如果结果还是为0,则标记任务进入抢占模式,并记录时间t;优先级p=1(因为当前是第二个正在执行的task,所以优先级为1),当前我们的b1将会被调度到node2上进行执行,同时更新可用资源r,如图10所示;
[0094]
4)当a1应用执行完成,释放资源,更新可用资源r,计算a2应用与a4应用的资源节点;
[0095]
a2
(node)
={min(0,f(r
i-r
a2
))},i∈[1,total(nodes)];a2可被调度到node1上,更新可用资源r;
[0096]
a4
(node)
={min(0,f(r
i-r
a4
))},i∈[1,total(nodes)];a4可以被高度到node2上,更新可用资源r,如图11所示;
[0097]
5)当前集群的可用资源仅剩下24g内存的资源,无法再从任务队列拉取任务;
[0098]
6)当b1应用执行完成后,a2应用与a4应用还在执行中,同样会同时执行b2应用与b4应用,同理计算出b2应用的调度节点为node1,b2开始执行,b4应用计算过程中发现结果为0,所以无可用的节点调度,b4应用进入抢占模式,优先级p=1(b的任务位置为1,所以等级也为1),时间标记为t1,如图12所示;
[0099]
7)当a2应用执行完后,释放资源并更新可用资用,此时抢占池存在应用程序,通过dag得出,流水线任务a接下来需要执行a3应用,所以会将a3应用推送到应用抢占池中,并打上p与t的标记。因为a应用在整个调度中优先级为0,所以p=0。调度器排序计算抢占池中的应用程序,得出a3应用优先被调度,经过节点计算,a3应用可以被调度在node1上;更新可用资源,如图13所示;
[0100]
8)a3应用被调度后,也将调度b4应用,经过计算后,结果为0,继续进入抢占模式,等待下个周期被唤醒;
[0101]
9)b2应用执行完成后,释放资源,将同时调度b4应用和b3应用,但是b3应用的时间标签t小于b4应用,所以优先调度b4应用,当前集群节点可用资源为node1 8c,16g,node2为0c,20g,所以b4的结果还是为0,b4应用继续进入抢占模式,如图14所示;
[0102]
10)当a4应用被执行完后,释放更新资源,由于a3应用还在执行中,a5应用不能被调度,b4应用与b3应用同时被调度,b4应用的时间标记小于b3应用,b4应用优先被调度计算,b4应用将被绑定到node2节点上执行,并更新可有资源,然后计算b3应用,b3应用被绑定到node1上执行,并更新可用资源,抢占池没有应用程序,将从任务队列获取任务,但集群无
可用资源,放弃获取新的任务,如图15所示;
[0103]
11)当a3应用执行完后,由于a4应用已执行完,便调度a5应用,但节点计算结果为0,无法被调度,a5应用进入抢占模式,标记时间t,标记优先级p=0,如图16所示;
[0104]
12)当b3应用执行完后,更新可用资源,b5应用无法被调度,则调度a5应用,经过计算a5应用被绑定到node1,更新可用资源;抢占池无任务,集群还有多余的资源,从任务获取新任务,当前任务队列为空,调度进入休眠,如图17所示;
[0105]
13)当b4应用执行完成后,释放并更新资源,调度b5应用,经过计算b5应用被绑定到node2上执行,并更新可用资源,如图18所示;
[0106]
14)后续调度由于资源充足,将按顺序执行完成有的应用的节点,如图19所示。
[0107]
由此,完成流水线任务a、b的调度、执行与释放控制过程。
[0108]
最后,控制台收集应用运行的结果后,用户可以通过终端进行查看结果。
[0109]
因此可见,相对于现有技术中资源分配调度控制完全依赖kubernets本身的调度策略来说,本发明提出的服务器资源调度控制方法中,结合流水线任务的执行顺序逻辑,对应用再次进行分配调度和释放,提升调度和运行效率,结合dag构建流水线任务,实现多个应用排列组合与执行,不需要代码层面的支持,可在设计画板上进行组合,实现零代码开发组合的功能,简化了开发方式,缩短了开发周期,提升了生产效率。
[0110]
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。

技术特征:
1.一种基于kubernetes的服务器运算资源调度系统,其特征在于,包括:应用程序管理模块,被设置用于管理应用程序并配置每一个应用程序运行时所需的入参出参;dag构建模块,被设置用于按照预定的执行逻辑对多个应用程序进行编排,通过多个应用程序的执行顺序的逻辑编排创建用于执行一业务需求的dag树状结构,并生成配置文件;调度引擎,被设置用于解析所述配置文件,生成执行dag树状结构中应用程序所需的运行环境,进行资源分配,并生成流水线任务加入到任务队列,等待执行器调度执行;执行器,配置有应用执行池和应用抢占池,所述执行器被设置成基于任务队列中的任务的优先级与入池时间而弹出最小应用,并基于kubernets集群中服务器运算资源中每个节点可用的资源与每个应用程序所需的资源的计算,确定绑定节点,执行应用程序并且在执行后释放和更新可用资源;控制台,被设置用于在执行器调度执行所述流水线任务时监听执行过程,监控输出,并在流水线任务执行完成后发布流水线任务的执行结果以及回收资源。2.根据权利要求1所述的基于kubernetes的服务器运算资源调度系统,其特征在于,所述的dag树状结构的每个节点为一个应用程序。3.根据权利要求1所述的基于kubernetes的服务器运算资源调度系统,其特征在于,所述dag构建模块包含:应用程序编排模块,用于按照业务需求的执行逻辑对多个应用程序进行编排,并连接相关的参数对应逻辑,创建用于执行业务需求的dag树状结构;配置生成模块,用于根据所创建的dag树状结构生成配置文件,包含每个应用程序的入参出参以及执行顺序。4.根据权利要求1所述的基于kubernetes的服务器运算资源调度系统,其特征在于,所述调度引擎生成的流水线任务,按照提交的时间顺序存放到任务队列的任务列表内。5.根据权利要求1所述的基于kubernetes的服务器运算资源调度系统,其特征在于,所述任务队列中已编排好的应用程序,当任务开始执行时,流水线任务才能被放入到应用执行池。6.根据权利要求1所述的基于kubernetes的服务器运算资源调度系统,其特征在于,所述执行器在调度执行过程中,每个应用程序执行完成时,将通过dag算法从应用执行池取出一个应用程序,如果应用抢占池内不存在应用程序,则对取出的一个应用程序直接分配节点,如果应用抢占池内存在应用程序,则将取出的一个应用程序投入到应用抢占池;所述应用抢占池内的应用程序均配置有p标记与t标记,p标记表示优先级,t标记表示入池时间,即投入到应用抢占池的时间。7.根据权利要求1所述的基于kubernetes的服务器运算资源调度系统,其特征在于,所述执行器被设置成按照下述方式进行调度执行:所述应用抢占池内的应用程序优先被调度,将应用抢占池内的应用程序按p与t进行排序,每次弹出最小的一个应用程序,如果弹出的应用程序能绑定节点,继续弹出下一个;否则将停止其它应用程序的绑定,等待下一次可用资源更新的唤醒;如果应用程序在应用执行池内调度被分配到节点,并且当前应用执行池中的数量小于预设的大小,将再次从任务队列弹出一条任务。
8.根据权利要求7所述的基于kubernetes的服务器运算资源调度系统,其特征在于,所述应用抢占池内的应用程序被调度执行的过程中,按照下述方式绑定节点:节点绑定公式为f(x)={min(f(r
i-r))},f(x)≥0,i∈[1,total(nodes)];其中,r
i
为kubernets集群中第i个节点的可用的资源,r为每个应用程序所需的资源,total(nodes)表述节点总量,f(x)计算结果需要大于等于0;通过计算,得出一个多维度的最小值,并将结果降序,取出的第一个作为绑定的节点。9.一种基于权利要求1-8中任意一项所述的基于kubernetes的服务器运算资源调度系统的服务器运算资源调度方法,实现资源的分配、执行和释放,其特征在于,所述方法包括以下步骤:初始化应用程序,设置应用程序名称、用途、入参出参以及资源占用信息;根据业务需求的执行逻辑选择多个应用程序进行编排,并连接相关的参数对应逻辑,创建用于执行业务需求的dag树状结构,并生成配置文件;通过调度引擎解析所述配置文件,生成执行dag树状结构中应用程序所需的运行环境,进行资源分配,并生成流水线任务加入到任务队列,等待执行器调度执行;在执行器的应用执行池和应用抢占池内按照设定的方式将任务中任务队列中已编排好的应用程序放入,调度执行;其中,在流水线任务执行过程中,控制台开启监听线程,监听流水线任务执行过程,监控输出,并在流水线任务执行完成后发布流水线任务的执行结果以及回收资源。10.根据权利要求9所述的服务器运算资源调度方法,其特征在于,所述执行器在调度执行过程中,对于任务队列中已编排好的应用程序,当任务开始执行时,应用程序才能被放入到应用执行池;每个应用程序执行完成时,将通过dag算法从应用执行池取出一个应用程序,如果应用抢占池内不存在应用程序,则对取出的一个应用程序直接分配节点,如果应用抢占池内存在应用程序,则将取出的一个应用程序投入到应用抢占池;所述应用抢占池内的应用程序均配置有p标记与t标记,p标记表示优先级,t标记表示入池时间,即投入到应用抢占池的时间。11.根据权利要求9所述的服务器运算资源调度方法,其特征在于,所述执行器被设置成按照下述方式进行调度执行:所述应用抢占池内的应用程序优先被调度,将应用抢占池内的应用程序按p与t进行排序,每次弹出最小的一个应用程序,如果弹出的应用程序能绑定节点,继续弹出下一个;否则将停止其它应用程序的绑定,等待下一次可用资源更新的唤醒;如果应用程序在应用执行池内调度被分配到节点,并且当前应用执行池中的数量小于预设的大小,将再次从任务队列弹出一条任务。12.根据权利要求9所述的服务器运算资源调度方法,其特征在于,所述应用抢占池内的应用程序被调度执行的过程中,按照下述方式绑定节点:节点绑定公式为f(x)={min(f(r
i-r))},f(x)≥0,i∈[1,total(nodes)];其中,r
i
为kubernets集群中第i个节点的可用的资源,r为每个应用程序所需的资源,total(nodes)表述节点总量,f(x)计算结果需要大于等于0;通过计算,得出一个多维度的最小值,并将结果降序,取出的第一个作为绑定的节点。

技术总结
本发明涉及资源调度领域,提供一种基于Kubernetes的服务器运算资源调度系统与方法,该系统包括应用程序管理模块、DAG构建模块、调度引擎、执行器以及控制台。在多应用程序在流水线中串行、并行与混合方式运行的环境下,对Kubernetes集群的资源进行合理的分配、执行、释放的控制,解决多应用在流水线化执行时,开发的复杂度高、资源调度控制的问题,减少资源的成本,提升程序的运行效率。提升程序的运行效率。提升程序的运行效率。


技术研发人员:李林灿
受保护的技术使用者:陕西震旦纪信息技术有限公司
技术研发日:2023.05.12
技术公布日:2023/7/27
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐