CN114995971A - 实现kubernetes中pod批量调度方法及*** - Google Patents
实现kubernetes中pod批量调度方法及*** Download PDFInfo
- Publication number
- CN114995971A CN114995971A CN202210504835.5A CN202210504835A CN114995971A CN 114995971 A CN114995971 A CN 114995971A CN 202210504835 A CN202210504835 A CN 202210504835A CN 114995971 A CN114995971 A CN 114995971A
- Authority
- CN
- China
- Prior art keywords
- scheduling
- plug
- pod
- module
- resource
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 17
- 238000012544 monitoring process Methods 0.000 claims abstract description 10
- 230000008859 change Effects 0.000 claims description 11
- 230000007246 mechanism Effects 0.000 claims description 10
- 238000012163 sequencing technique Methods 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 claims description 4
- 230000003213 activating effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 30
- 238000004422 calculation algorithm Methods 0.000 description 17
- 238000009826 distribution Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种实现kubernetes中pod批量调度***及方法,包括:将循环的监听集群的信息状态通过快照的方式存储在缓存模块中;会话模块读取缓存模块中的信息,通过插件模块获取不同的调度策略,利用调度模块基于不同调度策略调度目标信息。本发明解决了kubernetes原生调度器只能以pod为粒度进行调度的问题,将pod作为一个组进行批量调度,如果资源满足则任务可以正常调度启动否则不调度,避免死锁。
Description
技术领域
本发明涉及计算机技术领域,具体地,涉及实现kubernetes中pod批量调度方法及***。
背景技术
在目前kubernetes的快速发展下,不少ML/DL项目开始容器化上云部署,但是kubernetes的原生调度器具有一些缺陷,默认的原生调度器是以pod为粒度,但是这种调度方式对于机器学习任务非常不利,无法提供队列调度的功能,影响了资源的利用率。
专利文献CN111198756A(申请号:201911385165.4)公开了一种kubernetes集群的应用调度方法,应用于容器云平台,其中kubernetes集群基于龙芯服务器实现,该方法能够预先将同一容器云平台纳管的基于龙芯服务器的kubernetes集群节点批量划分为多个逻辑池,在龙芯服务器稳定性不足的现实情况下,即便某个逻辑池中的节点发生故障,也不会影响在其他逻辑池上进行应用调度,避免了整个集群内部分节点故障而导致整个集群不可用的问题,避免业务之间的互相影响,提升了kubernetes集群服务的可靠性。此外,本申请还提供了一种kubernetes集群的应用调度装置、容器云平台和可读存储介质,其技术效果与上述方法的技术效果相对应。
本发明提供了一个批量调度器,此调度器能够将一个训练任务的多个worker当做一个整体进行调度,只有当任务所有worker的资源都满足,才会将容器在节点上启动,并且可以选择worker在节点的分布方式。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种实现kubernetes中pod批量调度方法及***。
根据本发明提供的一种实现kubernetes中pod批量调度***,包括:将循环的监听集群的信息状态通过快照的方式存储在缓存模块中;会话模块读取缓存模块中的信息,通过插件模块获取不同的调度策略,利用调度模块基于不同调度策略调度目标信息。
优选地,在所述缓存模块中,通过调用kubernetes的SDK,利用watch机制监听集群中的节点、容器的状态变化信息,并将状态变化信息同步存储至预设数据结构中。
优选地,在所述插件模块中,基于可插拔的方式向调度模块提供不同的调度策略,插件模块基于调度策略计算目标节点。
优选地,在所述调度模块中,调度器基于监听到的集群中的节点、容器的状态变化计算集群中的节点和容器的可使用资源信息,基于资源计算结果以及选中的目标节点进行pod的批量调度。
优选地,在所述插件模块中,包括:DRF插件、Gang Scheduling插件、predicates插件、priority插件、node order插件以及Deploymode插件;
所述DRF插件是在调度时,令具有最低资源占用比例的任务具有最高优先级;
所述Gang Scheduling插件是当job中的全部pod,或者指定的预设数量的pod都分配到资源后,再将pod调度到节点上;
所述predicates插件是用来判断节点是否满足容器正常启动的基本资源要求;
所述priority插件是注册task排序函数,根据pod优先级排序;注册job排序函数,根据job优先级排序,以及注册抢占函数;
所述node order插件是根据满足调度资源对节点进行资源利用率排序,基于资源利用率排序,设定调度时对节点选择的优先级;
所述Deploymode插件是当多节点都能够进行调度时,根据job对同节点和跨节点数据通信的需求进行配置,提高吞吐量。
优选地,在所述调度模块中,将有明确资源需求的pod分配到某个节点,将pod申请的资源与节点剩余资源进行比较,当节点剩余的资源满足pod启动所需的资源条件时,则将pod绑定到当前节点;
将没有设置资源需求的pod分配到相应节点。
优选地,在所述调度模块中,根据优先级排序,将待调度任务保存为抢占者,利用抢占函数实现召回满足资源条件且优先级低的pod,并进行驱逐,并将抢占者调度至节点。
优选地,对pod设定多级队列机制,同个队列的任务依次运行;不同队列设置优先级,优先级高的队列中的任务优先调度。
优选地,设置队列的权重,权重高的队列将分配到更多的资源。
根据本发明提供的一种实现kubernetes中pod批量调度方法,包括:将循环的监听集群的信息状态通过快照的方式存储在缓存模块中;会话模块读取缓存模块中的信息,通过插件模块获取不同的调度策略,利用调度模块基于不同调度策略调度目标信息;
在所述缓存模块中,通过调用kubernetes的SDK,利用watch机制监听集群中的节点、容器的状态变化信息,并将状态变化信息同步存储至预设数据结构中;
在所述插件模块中,基于可插拔的方式向调度模块提供不同的调度策略,插件模块基于调度策略计算目标节点;
在所述调度模块中,调度器基于监听到的集群中的节点、容器的状态变化计算集群中的节点和容器的可使用资源信息,基于资源计算结果以及选中的目标节点进行pod的批量调度。
与现有技术相比,本发明具有如下的有益效果:
1、使用kubernetes CRD(CustomResourceDefinition直接在集群中通过yaml文件创建)以及插件进行功能实现,减少了部署和使用难度。
2、解决了kubernetes原生调度器只能以pod为粒度进行调度的问题,将pod作为一个组进行批量调度,如果资源满足则任务可以正常调度启动否则不调度,避免死锁;
3、提供了队列的机制,同个队列的任务,会依次运行。不同队列直接可以设置优先级,优先级高的队列中的任务会优先得到调度。队列还可以设置权重,权重高的队列将会分配到更多的资源。
4、批量调度pod容器在节点分布模式可选,因为除了资源维度上的要求,实际调度中还有容灾和干扰隔离上的考虑:比如同一应用的容器不允许全部部署到同一台节点上,很多应用会要求每台节点上只允许有一个实例。另外,某些应用组件之间还存在互斥关系(如资源争抢),严重影响应用的性能,因此也不允许它们被部署到同一台节点上。所以批量调度的算法可选是非常有必要的。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为DRF工作原理图。
图2为Gang调度工作原理图。
图3为Deloymode binack算法工作原理图。
图4为Deloymode topology算法工作原理图。
图5为工作队列结构。
图6为关键步骤调用流程。
图7为调度器工作流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
对于kubernetes原生调度器,是以pod为粒度进行调度,但是对于需要作为整体调度的工作pod组,但对于资源并不可以完全满足最低pod数量进入运行状态时,kubernetes原生调度器会直接将可运行的pod进行调度,但是事实上工作任务并不能正常启动,从而进入死锁状态。因此这种方案通过实现一种调度器,使用自定义资源(CRD)进行实现,对于此方式非常简单的部署此调度器,通过将同一个工作所需要调度的pods划分为一个组,设定最小可调度的数量,当满足后将pods用已经设定的算法分布到最优的节点上,提高了资源利用率,并且由于可选的pods的分布算法我们可以更好的对工作负载的性能进行优化提高吞吐量;
实施例1
根据本发明提供的一种实现kubernetes中pod批量调度***,包括:将循环的监听集群的信息状态通过快照的方式存储在缓存模块中;会话模块读取缓存模块中的信息,通过插件模块获取不同的调度策略,利用调度模块基于不同调度策略调度目标信息。
具体地,在所述缓存模块中,通过调用kubernetes的SDK,利用watch机制监听集群中的节点、容器的状态变化信息,并将状态变化信息同步存储至预设数据结构中。
缓存模块封装了对API Server的节点、容器等对象的数据同步逻辑以及对APIserver的接口的调用。Kubernetes的数据保存在分布式存储etcd中,所有对数据的查询和操作都通过调用API Server的接口,而非直接操作etcd。
具体地,所述会话模块是用自定义的数据结构,将缓存快照信息保存起来,插件模块中的不同插件可以调用会话中的所需信息,从而给出调度目标结果写入会话中,调度模块拿到目标结果进行实际调度。
具体地,在所述插件模块中,基于可插拔的方式向调度模块提供不同的调度策略,插件模块基于调度策略计算目标节点;例如:有6个插件,这6个插件主要作用为设定pod组的最小可调度量以及实现他们对节点资源选择策略,并且按照对应算法进行调度;
更为具体地,在所述插件模块中,包括:DRF插件、Gang Scheduling插件、predicates插件、priority插件、node order插件以及Deploymode插件;
如图1所示,所述DRF插件实现了一种资源公平算法,这个算法能够有效对多种主要资源(CPU、Memory、GPU)进行调度;在调度时,令具有最低资源占用比例的任务具有最高优先级;
如图2所示,所述Gang Scheduling插件实现了gang scheduling的逻辑,即保证任务所需worker同时被启动;当job中的全部pod,或者指定的预设数量的pod都分配到资源后,再将pod调度到节点上;
所述predicates插件是用来判断节点是否满足容器正常启动的基本资源要求;
所述priority插件是根据容器和队列设置的PriorityClass决定容器和队列的优先级;注册task排序函数,根据pod优先级排序;注册job排序函数,根据job优先级排序,以及注册抢占函数;其中,Job=pods;task=pod;
所述node order插件决定满足调度要求的节点中,哪个节点优先被选择;根据满足调度资源对节点进行资源利用率排序,基于资源利用率排序,设定调度时对节点选择的优先级;
所述Deploymode插件提供选择算法,可以影pod在节点的分布模式;当多节点都能够进行调度时,根据job对同节点和跨节点数据通信的需求进行配置,提高吞吐量。
更为具体地,
DRF(Dominant Resouce Fairenss)插件
尽量避免集群内某一类资源使用比例偏高,而其他类型资源使用比例却很低的不良状态。在调度时,让具有最低资源占用比例的任务具有高优先级。
统计集群中所有node可分配资源总量;
统计Job资源申请,计算资源占比(资源申请/资源总量);
注册Job排序函数,根据资源占比进行排序,主要资源占比越低job优先级越高;
注册事件处理函数,包括分配函数以及驱逐函数,函数实现比较简单,就是当task发生变化时,增加(分配)/减少(驱逐)Job资源申请总量,并且更新资源占比。
Gang Scheduling插件
gang需要实现的策略是只有当job中的全部pod,或者用户指定的某几个pod都分配到资源后,才真正将pod调度到node上。(即先从逻辑上分配资源给pod,等满足条件后才真正进行调度。)
predicates插件
predicates注册预测函数,用来判断某个节点是否满足容器可以正常启动的基本资源要求,如
CheckNodeCondition Predicate
CheckNodeUnschedulable Predicate
NodeSelector Predicate
HostPorts Predicate
Toleration/Taint Predicate
…
priority插件
注册task排序函数,根据pod优先级排序;注册job排序函数,根据job优先级排序,以及注册抢占函数。
node order插件
根据满足调度资源对节点进行资源利用率分析,如cpu使用率、内存占用率、gpu占用率进行排序打分,根据可选参数most或least设置打分权重,提高资源利用率;
Deploymode插件
其中包含两种算法模式:paking、tuop算法,当多节点都可进行调度时,根据job对同节点和跨节点数据通信的需求进行配置,用来提高吞吐量。
具体地,在所述调度模块中,调度器需要集群中的节点和容器的使用资源和状态等信息进行计算,从而决定资源分配、作为调度的依据。更为具体地,调度器基于监听到的集群中的节点、容器的状态变化计算集群中的节点和容器的可使用资源信息,基于资源计算结果以及选中的目标节点进行pod的批量调度,对已调度的pod做出驱逐等行为。
具体地,在所述调度模块中,将有明确资源需求的pod分配到某个节点,将pod申请的资源与节点剩余资源进行比较,当节点剩余的资源满足pod启动所需的资源条件时,则将pod绑定到当前节点;
将没有设置资源需求的pod分配到节点。
具体地,在所述调度模块中,根据优先级排序,将待调度任务保存为抢占者,利用抢占函数实现召回满足资源条件且优先级低的pod(满足资源条件且优先级低的pod作为受害者),并进行驱逐,抢占已经调度了的满足条件的pod,并将目标pod调度至节点
具体地,如图5所示,对pod设定多级队列机制,同个队列的任务依次运行;不同队列设置优先级,优先级高的队列中的任务优先进行调度。设置队列的权重,权重高的队列将分配到更多的资源。
本发明提供了一种实现kubernetes中pod批量调度方法,包括:启动缓存后进行调度器及插件注册,对集群资源进行监听,开启会话后开启调度流程,工作具体流程图,见图6-7。
步骤1:启动缓存
步骤1包含:
步骤1.1:对资源加锁保证一致性并创建client对API Server进行访问,通过watch机制监听集群中节点、容器的状态变化,将信息同步到自己的数据结构中。
步骤1.2:准备API server的接口调用,比如pod绑定接口以及驱逐接口,调用APIServer的Bind接口,将容器绑定到指定的节点上。
步骤2:载入调度器,向集群注册自己定义的Action和六个插件。
步骤3:list-watch监听Pod,Queue,PodGroup和Node等资源,在本地维护一份集群资源的全局缓存。
上述步骤3包含:
步骤3.1:开始各个REST的ListWatch,其中包括node\podGroup\pv\pvc\sc等,其中PodGroup是调度器定义的CRDs,是实现批量调度的核心;
步骤3.2:根据processResyncTask队列,重新同步Pod状态,根据processCleanupJob队列,清理缓存;
步骤4:开启会话,执行调度;
上述步骤4包含:
步骤4.1:在每个调度周期开始时,需要新建一个会话对象;
上述步骤4.1包含:
步骤4.1.1:调用缓存快照储存第3步生成的缓存数据,将缓存中节点、任务和队列信息拷贝一份副本,之后在这个调度周期中使用这份副本进行调度。
步骤4.1.2:将配置中的各个插件初始化,然后调用插件的OnSessionOpen接口。插件在OnSessionOpen中,会初始化自己需要的数据,并将一些回调函数注册到session中。
上述步骤4.1.2包含:
步骤4.1.2.1:调用DRF对Job的优先级进行定义;
统计集群中所有node可分配资源总量
统计Job资源申请,计算资源占比(资源申请/资源总量)
注册Job排序函数,根据资源占比进行排序,主要资源占比越低job优先级越高
注册事件处理函数,包括分配函数以及驱逐函数,函数实现比较简单,就是当task发生变化时,增加(分配)/减少(驱逐)Job资源申请总量,并且更新资源占比。
步骤4.1.2.2:开启Gang Scheduling注册最小调度需求;
检查模拟调度中可调度的Job的task(Pod)数量,是否满足要求。
如果不满足数量要求,就返回校验失败,不调度job;如果满足最小调度需求就在真实节点上调度pod。
步骤4.1.2.3:priority插件对job、task根据优先级排序。
步骤4.1.2.4:当predicat插件注册预测函数后,判断某个节点是否满足容器的基本要求,之后node order插件会将predicates插件对集群节点资源(cpu,内存、gpu)的可使用情况进行获取,对其所请求资源的利用率根据不同参数选择,设置为不同的打分权重将可调度的节点分不同优先级并进行aix。
步骤4.1.2.5:当确定了可调度节点后,对于pod(task)的分布方式可根据Deloymode插件进行选择,此中插件提供了两种调度算法:
如图3所示,binack算法:尽量的填满节点,使调度pod更加集中,但是集中的部署对于一些任务对硬件资源的利用并不合适,因此可选第二个参数topology,更改为第二种算法:
如图4所示,topology算法:将任务均衡调度到节点,速度均衡,对整体存储容量有一定提升。此算法受4.1.2.4插件返回结果的影响,且满足最小调度需求,可调度节点为1,则最终调度结果与binack算法结果相同。
步骤4.2:通过Action执行调度;
上述步骤4.2包含:
步骤4.2.1:回收活动将待调度的task保存为抢占者,找到优先级最高的queue,job,task,随后遍历node,执行预选函数,找到node上正在运行的pod确定受害者(将被驱逐pod),如果受害者资源总量小于pod申请资源总量,就跳过驱逐受害者,否则调用删除接口,如果释放足够的资源,就跳出驱逐过程。
步骤4.2.2:执行分配,遍历node调用预选插件执行预选函数,比较pod资源申请和node空闲资源,根据4.1.2.4对节点的优先级的排序和pod分布算法插件(Deploymode)的预期结果进行调度,若满足条件则通过会话对apiserver发起绑定请求,否则执行驱逐,与已经运行的任务相比较,根据节点优先级从节点抢占任务。
步骤4.2.3:在具有资源请求pod调度后,进行回填行动,调度具有空InitResreq任务的操作。遍历节点列表并选择符合所有预测函数的pod将其调度到节点上,这和分配操作不是并行运行的,没有冲突风险。之后会话关闭,至此一个调度循环完成。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的***、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的***、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的***、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种实现kubernetes中pod批量调度***,其特征在于,包括:将循环的监听集群的信息状态通过快照的方式存储在缓存模块中;会话模块读取缓存模块中的信息,通过插件模块获取不同的调度策略,利用调度模块基于不同调度策略调度目标信息。
2.根据权利要求1所述的实现kubernetes中pod批量调度***,其特征在于,在所述缓存模块中,通过调用kubernetes的SDK,利用watch机制监听集群中的节点、容器的状态变化信息,并将状态变化信息同步存储至预设数据结构中。
3.根据权利要求1所述的实现kubernetes中pod批量调度***,其特征在于,在所述插件模块中,基于可插拔的方式向调度模块提供不同的调度策略,插件模块基于调度策略计算目标节点。
4.根据权利要求1所述的实现kubernetes中pod批量调度***,其特征在于,在所述调度模块中,调度器基于监听到的集群中的节点、容器的状态变化计算集群中的节点和容器的可使用资源信息,基于资源计算结果以及选中的目标节点进行pod的批量调度。
5.根据权利要求1所述的实现kubernetes中pod批量调度***,其特征在于,在所述插件模块中,包括:DRF插件、Gang Scheduling插件、predicates插件、priority插件、nodeorder插件以及Deploymode插件;
所述DRF插件是在调度时,令具有最低资源占用比例的任务具有最高优先级;
所述Gang Scheduling插件是当job中的全部pod,或者指定的预设数量的pod都分配到资源后,再将pod调度到节点上;
所述predicates插件是用来判断节点是否满足容器正常启动的基本资源要求;
所述priority插件是注册task排序函数,根据pod优先级排序;注册job排序函数,根据job优先级排序,以及注册抢占函数;
所述node order插件是根据满足调度资源对节点进行资源利用率排序,基于资源利用率排序,设定调度时对节点选择的优先级;
所述Deploymode插件是当多节点都能够进行调度时,根据job对同节点和跨节点数据通信的需求进行配置,提高吞吐量。
6.根据权利要求1所述的实现kubernetes中pod批量调度***,其特征在于,在所述调度模块中,将有明确资源需求的pod分配到某个节点,将pod申请的资源与节点剩余资源进行比较,当节点剩余的资源满足pod启动所需的资源条件时,则将pod绑定到当前节点;
将没有设置资源需求的pod分配到相应节点。
7.根据权利要求1所述的实现kubernetes中pod批量调度***,其特征在于,在所述调度模块中,根据优先级排序,将待调度任务保存为抢占者,利用抢占函数实现召回满足资源条件且优先级低的pod,并进行驱逐,并将抢占者调度至节点。
8.根据权利要求1所述的实现kubernetes中pod批量调度***,其特征在于,对pod设定多级队列机制,同个队列的任务依次运行;不同队列设置优先级,优先级高的队列中的任务优先调度。
9.根据权利要求8所述的实现kubernetes中pod批量调度***,其特征在于,设置队列的权重,权重高的队列将分配到更多的资源。
10.一种实现kubernetes中pod批量调度方法,其特征在于,包括:将循环的监听集群的信息状态通过快照的方式存储在缓存模块中;会话模块读取缓存模块中的信息,通过插件模块获取不同的调度策略,利用调度模块基于不同调度策略调度目标信息;
在所述缓存模块中,通过调用kubernetes的SDK,利用watch机制监听集群中的节点、容器的状态变化信息,并将状态变化信息同步存储至预设数据结构中;
在所述插件模块中,基于可插拔的方式向调度模块提供不同的调度策略,插件模块基于调度策略计算目标节点;
在所述调度模块中,调度器基于监听到的集群中的节点、容器的状态变化计算集群中的节点和容器的可使用资源信息,基于资源计算结果以及选中的目标节点进行pod的批量调度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210504835.5A CN114995971A (zh) | 2022-05-10 | 2022-05-10 | 实现kubernetes中pod批量调度方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210504835.5A CN114995971A (zh) | 2022-05-10 | 2022-05-10 | 实现kubernetes中pod批量调度方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114995971A true CN114995971A (zh) | 2022-09-02 |
Family
ID=83024797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210504835.5A Pending CN114995971A (zh) | 2022-05-10 | 2022-05-10 | 实现kubernetes中pod批量调度方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114995971A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116225664A (zh) * | 2023-04-25 | 2023-06-06 | 中国人民解放军军事科学院***工程研究院 | 一种基于云视频***任务优先级的抢占式调度方法 |
-
2022
- 2022-05-10 CN CN202210504835.5A patent/CN114995971A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116225664A (zh) * | 2023-04-25 | 2023-06-06 | 中国人民解放军军事科学院***工程研究院 | 一种基于云视频***任务优先级的抢占式调度方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109885389B (zh) | 一种基于容器的并行深度学习调度训练方法及*** | |
CN110413391B (zh) | 基于容器集群的深度学习任务服务质量保证方法和*** | |
McCann et al. | A dynamic processor allocation policy for multiprogrammed shared-memory multiprocessors | |
CN114138486B (zh) | 面向云边异构环境的容器化微服务编排方法、***及介质 | |
JP3944154B2 (ja) | マルチスレッド・サーバ内のスレッド・プールを動的に調整する方法およびシステム | |
KR100509794B1 (ko) | 데이터베이스 관리시스템을 이용하는 작업들의 실시간 처리를 위한 스케줄링 방법 | |
CN104636204B (zh) | 一种任务调度方法与装置 | |
US20030135621A1 (en) | Scheduling system method and apparatus for a cluster | |
Wang et al. | Pigeon: An effective distributed, hierarchical datacenter job scheduler | |
Mashayekhi et al. | Execution templates: Caching control plane decisions for strong scaling of data analytics | |
US6820263B1 (en) | Methods and system for time management in a shared memory parallel processor computing environment | |
CN108509280A (zh) | 一种基于推送模型的分布式计算集群本地性调度方法 | |
CN113886069A (zh) | 一种资源分配方法、装置、电子设备及存储介质 | |
CN116010064A (zh) | Dag作业调度和集群管理的方法、***及装置 | |
CN114995971A (zh) | 实现kubernetes中pod批量调度方法及*** | |
CN113760549B (zh) | 一种pod部署方法及装置 | |
Chiang et al. | DynamoML: Dynamic Resource Management Operators for Machine Learning Workloads. | |
CN112540854B (zh) | 在限定硬件资源条件下的深度学习模型调度部署方法及*** | |
CN116483546B (zh) | 分布式训练任务调度方法、装置、设备及存储介质 | |
CN115964176B (zh) | 云计算集群调度方法、电子设备和存储介质 | |
CN117519930A (zh) | 批量任务的执行方法、装置及电子设备 | |
CN111143033B (zh) | 基于可伸缩操作***的操作执行方法及装置 | |
CN117539612A (zh) | 基于混沌麻雀算法的ai训推平台任务调度方法和*** | |
CN116302519A (zh) | 一种基于容器云平台的微服务工作流弹性调度方法、***及设备 | |
Heath et al. | Development, analysis, and verification of a parallel hybrid dataflow computer architectural framework and associated load-balancing strategies and algorithms via parallel simulation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |