CN114237894A - 容器调度方法、装置、设备以及可读存储介质 - Google Patents

容器调度方法、装置、设备以及可读存储介质 Download PDF

Info

Publication number
CN114237894A
CN114237894A CN202111555587.9A CN202111555587A CN114237894A CN 114237894 A CN114237894 A CN 114237894A CN 202111555587 A CN202111555587 A CN 202111555587A CN 114237894 A CN114237894 A CN 114237894A
Authority
CN
China
Prior art keywords
scheduling
container
node
scheduled
containers
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
Application number
CN202111555587.9A
Other languages
English (en)
Inventor
全硕
张青莲
王旭亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Telecom Corp Ltd
Original Assignee
China Telecom Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Telecom Corp Ltd filed Critical China Telecom Corp Ltd
Priority to CN202111555587.9A priority Critical patent/CN114237894A/zh
Publication of CN114237894A publication Critical patent/CN114237894A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本公开提供一种容器调度方法、装置、设备以及可读存储介质。该容器调度方法,包括:获取集群内各节点的负载状态,包括已部署容器和剩余资源;获取待调度容器的资源需求;基于负载状态和待调度容器的资源需求,构建调度初始状态;根据调度初始状态,判断所述集群内各节点的剩余资源总和是否满足待调度容器的资源需求;若满足,则选取集群内的一个节点作为调度节点;按照预设的重部署算法对调度节点内的已部署容器进行二次调度;选取下一个节点作为调度节点进行二次调度步骤,直至遍历所述集群内的所有节点,生成调度结果。利用容器快速灵活部署的特点,对已部署容器进行二次调整,使资源利用在全局范围更加高效,实现节约资源、提升性能等目标。

Description

容器调度方法、装置、设备以及可读存储介质
技术领域
本公开涉及云计算技术领域,具体而言,涉及容器调度方法、装置、设备以及可读存储介质。
背景技术
随着容器技术的流行,容器的种类和数量在不断增多,容器集群的规模也在持续增长,使得容器调度变得更加复杂,给资源高效利用带来新的挑战。例如,开源的容器集群管理系统Kubernetes,能够提供应用部署、维护、扩展机制等功能,利用kubernetes能方便管理跨集群运行容器化的应用。在Kubernetes集群技术中,节点(Node)代表Kubernetes集群中运行的宿主物理计算机或虚拟机服务器,为容器提供必要的计算资源。Pod(容器集合)作为Kubernetes集群的最小调度单位,一个Pod中可以包含一个或多个运行的容器,这些容器运行在同一台节点上,共享节点的资源。
现有的容器调度策略不够完善,主要基于预选策略和优选策略。调度时在满足容器对节点和Pod的亲和性、非亲和性等条件下,会综合考虑节点资源(例如CPU、内存)的使用情况,选出本次容器调度的最优方案(优选策略分数最高)。上述的调度方案按照容器的自然调度顺序进行编排,资源分配不够合理,可能会导致后续的容器无法调度,造成部分资源浪费、性能下降。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种容器调度方法,用于至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或多个问题。
根据本公开实施例的第一方面,提供一种容器调度方法,包括:
获取集群内各节点的负载状态,所述负载状态包括已部署容器和剩余资源;
获取待调度容器的资源需求;
基于所述负载状态和所述待调度容器的资源需求,构建调度初始状态;
根据所述调度初始状态,判断所述集群内各节点的剩余资源总和是否满足所述待调度容器的资源需求;
若集群内各节点的剩余资源总和满足待调度容器的资源需求,则选取所述集群内的一个节点作为调度节点;
按照预设的重部署算法对所述调度节点内的已部署容器进行二次调度;
选取下一个节点作为调度节点进行所述二次调度步骤,直至遍历所述集群内的所有节点,生成调度结果。
在本公开的一种示例性实施例中,按照预设的重部署算法对所述调度节点内的已部署容器进行二次调度的步骤包括:
构建二次调度容器组集合SetC={Cs1,Cs2,…,C si,...,Csn},其中,C si为第i个容器组,共有n个容器组,所述容器组C si包括一个或多个容器;
判断所述二次调度容器组集合SetC是否为空;
若所述二次调度容器组集合SetC不为空,则判断容器组Csi中的容器是否可以调度到其他节点;
若所述容器组Csi中的容器均可以调度到其他节点,则生成可行调度方案;所述可行调度方案为:将所述容器组Csi中的容器调出,并将所述待调度容器调入该调度节点;
将所述可行调度方案返回至所述调度结果;
若所述二次调度容器组集合SetC为空,则选取下一个节点作为调度节点。
在本公开的一种示例性实施例中,构建所述容器组C si基于的公式为:
(ΣPC si-PC si)+P(N)<PC<ΣPC si+P(N)
其中,ΣPC si表示容器组Csi中所有容器的使用资源总和,(ΣPC si-PC si)表示容器组Csi中任意去除一个容器后的使用资源总和;P(N)表示所述调度节点的剩余资源,PC表示所述待调度容器的资源需求。
在本公开的一种示例性实施例中,按照预设的重部署算法对所述调度节点内的已部署容器进行二次调度的步骤还包括:
当所述容器组Csi中存在不能调度到其他节点的容器时,对所述调度初始状态进行更新;
基于更新后的调度初始状态生成调度结果;
其中,对所述调度初始状态进行更新的过程为:基于在该调度节点调入所述待调度容器,并将所述容器组Csi中可以调度到其他节点的容器调度至对应的节点的调度过程更新各节点的负载状态;以及
将所述容器组Csi中不能调度到其他节点的容器作为待调度容器。
在本公开的一种示例性实施例中,根据动态规划算法判断所述容器组Csi中的容器是否可以调度到其他节点。
在本公开的一种示例性实施例中,生成调度结果后,还包括:
对所有的所述可行调度方案进行评分,生成评分结果;
基于所述评分结果确定最优调度方案。
在本公开的一种示例性实施例中,对所述可行调度方案进行评分基于的公式为:
Figure BDA0003419007430000031
其中,Score表示评分值,Scorenodek表示基于节点CPU利用率和/或节点内存利用率的评分值,n表示节点的总个数,k表示第k个计算节点,number表示需要二次调度的容器数量。
根据本公开实施例的第二方面,提供一种容器调度装置,包括:
负载状态获取模块,用于获取集群内各节点的负载状态,所述负载状态包括已部署容器和剩余资源;
资源需求获取模块,用于获取待调度容器的资源需求;
调度初始状态构建模块,用于基于所述负载状态和所述待调度容器的资源需求,构建调度初始状态;
判断模块,用于根据所述调度初始状态,判断所述集群内各节点的剩余资源总和是否满足所述待调度容器的资源需求;
调度节点选取模块,用于选取所述集群内的一个节点作为调度节点;
二次调度模块,用于按照预设的重部署算法对所述调度节点内的已部署容器进行二次调度;
调度结果生成模块,用于选取下一个节点作为调度节点进行所述二次调度步骤,直至遍历所述集群内的所有节点,生成调度结果。
根据本公开实施例的第三方面,提供一种电子设备,包括:
存储器;以及
耦合到所属存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如如上任意一项所述的容器调度方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上任意一项所述的容器调度方法。
本公开实施例中利用容器快速灵活部署的特点,基于集群内各节点的负载状态和待调度容器的资源需求,按照预设的充部署算法对已部署容器进行二次调度,以生成能够满足待调度容器资源需求的调度方案。充分利用容器快速灵活部署的特点,结合动态规划及递归思想,在容器调度时通过二次调度已部署容器,减少容器部署顺序对容器调度的影响,达到尽可能多的调度容器的目的,避免某类资源闲置,从而达到节约资源、提升性能、提高资源利用率的目的。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出本公开示例性场景I中,按照表1的评分结果生成调度结果示意图;
图2示意性示出本公开示例性场景I中的另外一种可行部署方案。
图3示意性示出本公开示例性实施例中容器调度方法的流程图。
图4示意性示出本公开示例性实施例中根据预设的重部署算法对调度节点内的已部署容器进行二次调度的流程图。
图5示意性示出本公开一个示例性实施例中具体应用场景中调度结果示意图。
图6示意性示出本公开一个示例性实施例中容器调度装置的方框图。
图7示意性示出本公开一个示例性实施例中一种电子设备的方框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
现有技术中,容器调度时按照容器的自然调度顺序对容器进行编排,调度策略为:在其他条件相同的情况下,基于优选函数计算各节点分数,将容器调度至分数高的节点。如果节点的分数相同,则随机选择调度的节点。
具体地,优选函数例如可以为LeastRequested(衡量节点资源使用情况)和BalancedResourceAllocation(CPU和内存资源被占用率相近的胜出),其中,LeastRequested由节点的空闲资源与节点的总容量来比较一个比值,根据空闲比例来评估,其得分Score1按如下公式获得:
Score1=((cppCupcity-cpuTotalRequest)*10/cpuCapcity+(memoryCapcity-memoryTotalRequest)*10/memoryCapcity)/2
BalanceResourceAllocation由CPU和内存资源被占用率之差的绝对值进行评估,其得分Score2按如下公式获得:
Score2=10|cpuTotalRequest/cpuCapcity-memoryTotalRequest/memoryCapcity|*10
节点的得分分数Scorenode按如下公式①获得:
Scorenode=Score1+Score2
为更好地进行方案说明,构建下述场景I。场景I中的节点和待调度容器如下:
集群节点为node1和node2,节点nodel的资源为cpu 16核,内存32G,节点node2的资源为cpu 16核,内存32G。
待调度容器包括:
调度容器A,所需资源为cpu2核,内存4G;
调度容器B,所需资源为cpu4核,内存8G;
调度容器C,所需资源为cpu8核,内存16G;
调度容器D,所需资源为cpu2核,内存4G;
调度容器E,所需资源为cpu12核,内存24G。
按照A、B、C、D、E的顺序进行容器调度,基于上述的优选函数进行评分,评分结果如表1所示:
表1
Figure BDA0003419007430000071
根据表1的节点分数,获得如图1所示的调度结果。节点node1的已部署容器为:容器A和容器C,剩余资源为cpu6核,内存12G。节点node2的已部署容器为:容器B和容器D,剩余资源为cpu10核,内存20G。调度容器E时,node1、node2均不满足E的资源需求,导致调度失败。
但实际上,图2示出了场景I的另外一种可行部署方案,按照图2的方式部署容器时,在节点node1部署容器A和容器E,节点node2部署容器B、容器C、容器D时,能够满足容器E的调度需求。可见,现有的容器调度策略存在了较大的资源闲置,资源利用率低下。
基于此,本实施例提供了一种容器调度方法,下面结合附图对本公开示例实施方式进行详细说明。
图3示意性示出本公开示例性实施例中容器调度方法的流程图。参考图1,容器调度方法可以包括:
S301,获取集群内各节点的负载状态,所述负载状态包括已部署容器和剩余资源;
S302,获取待调度容器的资源需求;
S303,基于所述负载状态和所述待调度容器的资源需求,构建调度初始状态;
S304,根据所述调度初始状态,判断所述集群内各节点的剩余资源总和是否满足所述待调度容器的资源需求;
S305,若集群内各节点的剩余资源总和满足待调度容器的资源需求,则选取所述集群内的一个节点作为调度节点;
S306,按照预设的重部署算法对所述调度节点内的已部署容器进行二次调度;
S307,选取下一个节点作为调度节点进行所述二次调度步骤,直至遍历所述集群内的所有节点,生成调度结果。
在本公开的一个实施例中,容器调度方法还包括:
S308,若所有节点的剩余资源综合无法满足待调度容器的资源需求,则返回空集作为调度结果。
下面,对容器调度方法的各步骤进行详细说明。
在步骤S301~S303中,基于所述负载状态和所述待调度容器的资源需求,构建调度初始状态为:构建节点集合Set{N1,N2...}和待调度容器的资源需求。其中,节点集合Set{N1,N2...}中记录每个节点的剩余资源及已部署容器。
在步骤S304中,根据所述调度初始状态,判断所述集群内各节点的剩余资源总和是否满足所述待调度容器的资源需求。
若集群内各节点的剩余资源总和满足待调度容器的资源需求,则选取所述集群内的一个节点作为调度节点;进入步骤S306。
如图4所示,步骤S306中,按照预设的重部署算法对所述调度节点内的已部署容器进行二次调度的步骤包括:
S401,构建二次调度容器组集合SetC={Cs1,Cs2,…,C si,...,Csn},其中,C si为第i个容器组,SetC共有n个容器组。容器组C si包括一个或多个容器。
在本公开的一种示例性实施例中,构建所述容器组C si基于下述公式②:
(ΣPC si-PC si)+P(N)<PC<ΣPC si+P(N) ②
其中,ΣPC si表示容器组Csi中所有容器的使用资源总和,(ΣPC si-PC si)表示容器组Csi中任意去除一个容器后的使用资源总和;P(N)表示所述调度节点的剩余资源,PC表示所述待调度容器的资源需求。
在本公开的一种示例性实施例中,容器组C si构造为:C si={C1,C2,…,Cj,...,Cm},其中,Cj为第j个容器,C si共有m个容器。
该步骤上本质上为将容器组C si调度出去,给待调度容器腾出所需的空间。
S402,判断所述二次调度容器组集合SetC是否为空。
S403,若二次调度容器组集合SetC不为空,则判断容器组Csi中的容器{C1,C2,…,Cj,...,Cm}是否可以调度到其他节点。
在本公开的一种示例性实施例中,根据动态规划算法判断容器组Csi中的容器是否可以调度到其他节点。动态规划算法例如可以使用完全背包或者多重背包问题进行求解。
S404,若所述容器组Csi中的容器均可以调度到其他节点,则生成可行调度方案。该可行调度方案为:将容器组Csi中的容器调出,并将待调度容器调入该调度节点。
S405,若所述二次调度容器组集合SetC为空,则进入步骤S307。
在本公开的一个实施例中,步骤S306还包括:
S406,当所述容器组Csi中存在不能调度到其他节点的容器时,对所述调度初始状态进行更新。基于更新后的调度初始状态生成调度结果。
其中,对所述调度初始状态进行更新的过程为:
1)基于在该调度节点调入所述待调度容器,并将所述容器组Csi中可以调度到其他节点的容器调度至对应的节点的调度过程更新各节点的负载状态。
2)将容器组Csi中不能调度到其他节点的容器作为待调度容器。
具体地,例如该调度节点为N0,待调度容器为C,构建容器组Csi={C1,C2,C3},其中,C1可调度至节点N1,C3可调度至节点N3,C2不可调度到其他节点。则,待调度容器更为为C2,节点N0的剩余资源更新为:Csi使用资源总和+N0剩余资源-容器C所需资源;节点N1的剩余资源更新为:N1剩余资源-容器C1所需资源;节点N3的剩余资源更新为:N3剩余资源-容器C3所需资源。
通过该步骤,递归进入容器C2的调度策略中。
在本公开的一种示例性实施例中,生成调度结果后,还包括:
对所有的所述可行调度方案进行评分,生成评分结果;
基于所述评分结果确定最优调度方案。
具体地,将执行二次调度步骤得到的所有可行调度方案均进行评分,
在本公开的一种实施例中,对可行调度方案进行评分基于下述公式③:
Figure BDA0003419007430000101
其中,Score表示可行调度方案的评分值,Scorenodek表示基于节点CPU利用率和/或节点内存利用率的评分值,n表示节点的总个数,k表示第k个计算节点,number表示需要执行二次调度步骤的容器数量。
具体地,在本公开的一种实施例中,Scorenodek可以基于前文所述的公式①(Scorenodek=Score1+Score2)获得。通过对可行调度方案中的每个节点进行评分,基于所有节点评分值的总和除以执行二次调度步骤的容器数量,获得可行调度方案的评分值,该公式中,各节点的评分越高,number越小,则方案的评分值越高。
在本公开的一种实施例中,如果得到最高的可行调度方案存在多个,则随机选择其中一个可行调度方案作为最优调度方法。
下面通过具体应用场景来对上述的容器调度方法进行详细说明。
参照前文所构建的场景I,节点node1和node2在部署完容器A、B、C、D后,如图1所示。
(1)构建调度初始状态,包括:
1)待调度容器E所需资源为cpu12、内存24G;
2)节点集合Set{N1,N2}:N1记录节点node1的负载状态为部署容器A、容器C,剩余资源:cpu6核,内存12G。N2记录节点node2的负载状态为部署容器B、容器D,剩余资源:cpu10核,内存20G。待调度容器E的资源需求为cpu12核,内存24G。基于节点node1和node2的负载状态和待调度容器E。
(2),选取节点node1,按照公式②:(ΣPC si-PC si)+P(N)<PC<ΣPC si+P(N),构建二次调度容器组{CS1},CS1={C}。
对于容器CS1,可以调度到节点node2。生成可行调度方案a如下:
容器C从节点node1调度到节点node2;容器E调度到节点node1。
(3),选取节点node2,按照公式②:(ΣPC si-PC si)+P(N)<PC<ΣPC si+P(N),构建二次调度容器组{CS1,CS2},CS1={B},CS2={D}。
对于容器CS1,容器B可以调度到节点node1。生成可行调度方案b如下:
容器B从节点node2调度到节点node1,容器E调度到节点node2。
对于容器CS2,容器D可以调度到节点node1。生成可行调度方案c如下:
容器D从节点node2调度到节点node1,容器E调度到节点node2。
c.D从node2调到node1,E调到node2
生成如图5所示的可行调度方案a、b和c。
对可行调度方案a、b和c按照公式③进行评分,得到评分结果如下:
Score(可行调度方案a)=Score(可行调度方案b)>Score(可行调度方案c);
基于上述评分结果,可行调度方案a和可行调度方案b的评分一致,随机选择其中一种作为最优调度方案。
图6示意性示出本公开的一种容器调度装置600的示意图。
参照图6,一种容器调度装置600,包括:
负载状态获取模块610,用于获取集群内各节点的负载状态,所述负载状态包括已部署容器和剩余资源;
资源需求获取模块620,用于获取待调度容器的资源需求;
调度初始状态构建模块630,用于基于所述负载状态和所述待调度容器的资源需求,构建调度初始状态;
判断模块640,用于根据所述调度初始状态,判断所述集群内各节点的剩余资源总和是否满足所述待调度容器的资源需求;
调度节点选取模块650,用于在所述集群内各节点的剩余资源总和是否满足所述待调度容器的资源需求时,选取所述集群内的一个节点作为调度节点;
二次调度模块660,用于按照预设的重部署算法对所述调度节点内的已部署容器进行二次调度;
调度结果生成模块670,用于选取下一个节点作为调度节点进行所述二次调度步骤,直至遍历所述集群内的所有节点,生成调度结果。
在在本公开的一种实施例中,容器调度装置600还包括评分模块和最优调度方案确定模块,其中,评分模块用于对所有的所述可行调度方案进行评分,生成评分结果;最优调度方案确定模块用于基于所述评分结果确定最优调度方案。
在本公开的一种实施例中,容器调度装置600还可包括实现上述各处理方法实施例的其他流程步骤的模块。例如,二次调度模块660可以包括二次调度容器组集合构建子模块、判断二次调度容器组集合SetC是否子模块、判断容器组Csi中的容器是否可以调度到其他节点子模块、可行调度方案生成模块、调度初始状态更新模块。各个模块和子模块的具体原理可参照上述容器调度方法实施例的描述,此处不再重复说明。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图7来描述根据本发明的这种实施方式的电子设备700。图7显示的电子设备700仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,电子设备700以通用计算设备的形式表现。电子设备700的组件可以包括但不限于:上述至少一个处理单元710、上述至少一个存储单元720、连接不同系统组件(包括存储单元720和处理单元710)的总线730。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元710执行,使得所述处理单元710执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元710可以执行如图1中所示的步骤S301,获取集群内各节点的负载状态,所述负载状态包括已部署容器和剩余资源;步骤S302,获取待调度容器的资源需求;步骤S303,基于所述负载状态和所述待调度容器的资源需求,构建调度初始状态;步骤S304,根据所述调度初始状态,判断所述集群内各节点的剩余资源总和是否满足所述待调度容器的资源需求;步骤S305,若集群内各节点的剩余资源总和满足待调度容器的资源需求,则选取所述集群内的一个节点作为调度节点;步骤S306,按照预设的重部署算法对所述调度节点内的已部署容器进行二次调度;步骤S307,选取下一个节点作为调度节点进行所述二次调度步骤,直至遍历所述集群内的所有节点,生成调度结果。以及步骤S308,若所有节点的剩余资源综合无法满足待调度容器的资源需求,则返回空集作为调度结果。
存储单元720可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)7201和/或高速缓存存储单元7202,还可以进一步包括只读存储单元(ROM)7203。
存储单元720还可以包括具有一组(至少一个)程序模块7205的程序/实用工具7204,这样的程序模块7205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线730可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备700也可以与一个或多个外部设备800(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备700交互的设备通信,和/或与使得该电子设备700能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口750进行。并且,电子设备700还可以通过网络适配器760与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器760通过总线730与电子设备700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
根据本发明的实施方式的用于实现上述方法的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和构思由权利要求指出。

Claims (10)

1.一种容器调度方法,其特征在于,包括:
获取集群内各节点的负载状态,所述负载状态包括已部署容器和剩余资源;
获取待调度容器的资源需求;
基于所述负载状态和所述待调度容器的资源需求,构建调度初始状态;
根据所述调度初始状态,判断所述集群内各节点的剩余资源总和是否满足所述待调度容器的资源需求;
若集群内各节点的剩余资源总和满足待调度容器的资源需求,则选取所述集群内的一个节点作为调度节点;
按照预设的重部署算法对所述调度节点内的已部署容器进行二次调度;
选取下一个节点作为调度节点进行所述二次调度步骤,直至遍历所述集群内的所有节点,生成调度结果。
2.根据权利要求1所述的面向二次调度的容器调度方法,其特征在于,按照预设的重部署算法对所述调度节点内的已部署容器进行二次调度的步骤包括:
构建二次调度容器组集合SetC={Cs1,Cs2,…,C si,...,Csn},其中,C si为第i个容器组,共有n个容器组,所述容器组C si包括一个或多个容器;
判断所述二次调度容器组集合SetC是否为空;
若所述二次调度容器组集合SetC不为空,则判断容器组Csi中的容器是否可以调度到其他节点;
若所述容器组Csi中的容器均可以调度到其他节点,则生成可行调度方案;所述可行调度方案为:将所述容器组Csi中的容器调出,并将将所述待调度容器调入该调度节点;
若所述二次调度容器组集合SetC为空,则选取下一个节点作为调度节点。
3.根据权利要求2述的面向二次调度的容器调度方法,其特征在于,
构建所述容器组C si基于的公式为:
(ΣPC si-PC si)+P(N)<PC<ΣPC si+P(N)
其中,ΣPC si表示容器组Csi中所有容器的使用资源总和,(ΣPC si-PC si)表示容器组Csi中任意去除一个容器后的使用资源总和;P(N)表示所述调度节点的剩余资源,PC表示所述待调度容器的资源需求。
4.根据权利要求2述的面向二次调度的容器调度方法,其特征在于,按照预设的重部署算法对所述调度节点内的已部署容器进行二次调度的步骤还包括:
当所述容器组Csi中存在不能调度到其他节点的容器时,对所述调度初始状态进行更新;
基于更新后的调度初始状态生成调度结果;
其中,对所述调度初始状态进行更新的过程为:基于在该调度节点调入所述待调度容器,并将所述容器组Csi中可以调度到其他节点的容器调度至对应的节点的调度过程更新各节点的负载状态;以及
将所述容器组Csi中不能调度到其他节点的容器作为待调度容器。
5.根据权利要求2述的面向二次调度的容器调度方法,其特征在于,根据动态规划算法判断所述容器组Csi中的容器是否可以调度到其他节点。
6.根据权利要求2述的面向二次调度的容器调度方法,其特征在于,
生成调度结果后,还包括:
对所有的所述可行调度方案进行评分,生成评分结果;
基于所述评分结果确定最优调度方案。
7.根据权利要求6述的面向二次调度的容器调度方法,其特征在于,对所述可行调度方案进行评分基于的公式为:
Figure FDA0003419007420000021
其中,Score表示评分值,Scorenodek表示基于节点CPU利用率和/或节点内存利用率的评分值,n表示节点的总个数,k表示第k个计算节点,number表示需要二次调度的容器数量。
8.一种容器调度装置,其特征在于,包括:
负载状态获取模块,用于获取集群内各节点的负载状态,所述负载状态包括已部署容器和剩余资源;
资源需求获取模块,用于获取待调度容器的资源需求;
调度初始状态构建模块,用于基于所述负载状态和所述待调度容器的资源需求,构建调度初始状态;
判断模块,用于根据所述调度初始状态,判断所述集群内各节点的剩余资源总和是否满足所述待调度容器的资源需求;
调度节点选取模块,用于选取所述集群内的一个节点作为调度节点;
二次调度模块,用于按照预设的重部署算法对所述调度节点内的已部署容器进行二次调度;
调度结果生成模块,用于选取下一个节点作为调度节点进行所述二次调度步骤,直至遍历所述集群内的所有节点,生成调度结果。
9.一种电子设备,其特征在于,包括:
存储器;以及
耦合到所属存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1-7任一项所述的容器调度方法。
10.一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如权利要求1-7任一项所述的容器调度方法。
CN202111555587.9A 2021-12-17 2021-12-17 容器调度方法、装置、设备以及可读存储介质 Pending CN114237894A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111555587.9A CN114237894A (zh) 2021-12-17 2021-12-17 容器调度方法、装置、设备以及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111555587.9A CN114237894A (zh) 2021-12-17 2021-12-17 容器调度方法、装置、设备以及可读存储介质

Publications (1)

Publication Number Publication Date
CN114237894A true CN114237894A (zh) 2022-03-25

Family

ID=80758411

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111555587.9A Pending CN114237894A (zh) 2021-12-17 2021-12-17 容器调度方法、装置、设备以及可读存储介质

Country Status (1)

Country Link
CN (1) CN114237894A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114706596A (zh) * 2022-04-11 2022-07-05 中国电信股份有限公司 容器部署方法、资源调度方法、装置、介质和电子设备
CN116340005A (zh) * 2023-05-26 2023-06-27 北京好心情互联网医院有限公司 容器集群的调度方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107818013A (zh) * 2016-09-13 2018-03-20 华为技术有限公司 一种应用调度方法及装置
CN110515730A (zh) * 2019-08-22 2019-11-29 北京宝兰德软件股份有限公司 基于kubernetes容器编排系统的资源二次调度方法及装置
CN112269641A (zh) * 2020-11-18 2021-01-26 网易(杭州)网络有限公司 一种调度方法、装置、电子设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107818013A (zh) * 2016-09-13 2018-03-20 华为技术有限公司 一种应用调度方法及装置
CN110515730A (zh) * 2019-08-22 2019-11-29 北京宝兰德软件股份有限公司 基于kubernetes容器编排系统的资源二次调度方法及装置
CN112269641A (zh) * 2020-11-18 2021-01-26 网易(杭州)网络有限公司 一种调度方法、装置、电子设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
平凡;陈莉君;: "基于Kubernetes的动态负载均衡机制研究与设计", 计算机与数字工程, no. 01, 20 January 2020 (2020-01-20) *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114706596A (zh) * 2022-04-11 2022-07-05 中国电信股份有限公司 容器部署方法、资源调度方法、装置、介质和电子设备
CN114706596B (zh) * 2022-04-11 2023-12-01 中国电信股份有限公司 容器部署方法、资源调度方法、装置、介质和电子设备
CN116340005A (zh) * 2023-05-26 2023-06-27 北京好心情互联网医院有限公司 容器集群的调度方法、装置、设备及存储介质
CN116340005B (zh) * 2023-05-26 2023-08-15 北京好心情互联网医院有限公司 容器集群的调度方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN111966500B (zh) 资源调度方法、装置、电子设备及存储介质
CN110727512B (zh) 集群资源调度方法、装置、设备及储存介质
CN109753356A (zh) 一种容器资源调度方法、装置及计算机可读存储介质
US9852035B2 (en) High availability dynamic restart priority calculator
CN104714849B (zh) 用于在综合工作负载环境中实现最佳性能的系统和方法
CN109358965B (zh) 云计算集群资源调度方法、介质、装置和计算设备
CN109857556B (zh) 内存回收方法及装置、存储介质和电子设备
CN114237894A (zh) 容器调度方法、装置、设备以及可读存储介质
US7856626B2 (en) Method of refactoring methods within an application
CN110782122B (zh) 数据处理方法、装置及电子设备
CN109032788B (zh) 预留资源池动态调度方法、装置、计算机设备及存储介质
CN112988383A (zh) 一种资源分配方法、装置、设备以及存储介质
CN105302536A (zh) MapReduce应用的相关参数的配置方法和装置
CN113204425A (zh) 供进程管理内部线程的方法、装置、电子设备及存储介质
CN105426231A (zh) 多进程处理装置和多进程处理方法
CN117311999B (zh) 一种服务集群的资源调度方法、存储介质及电子设备
CN111352664A (zh) 分布式机器学习任务启动方法、系统、设备及存储介质
CN113722079B (zh) 基于目标应用的任务调度分配方法、装置、设备及介质
US11977909B2 (en) Hardware placement and maintenance scheduling in high availability systems
CN115150268A (zh) Kubernetes集群的网络配置方法、装置、及电子设备
CN115220908A (zh) 资源调度方法、装置、电子设备及存储介质
CN113157341B (zh) 对象的资源环境自适应处理方法、装置和电子设备
CN113902867B (zh) 模型文件的处理方法及装置、存储介质、电子设备
CN117762605A (zh) 容器组部署方法、装置、电子设备和介质
CN116560799A (zh) 基于k8s服务的异构RISC-V集群设备、方法、装置、设备和介质

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