CN112905297A - 容器集群资源调度方法和装置 - Google Patents
容器集群资源调度方法和装置 Download PDFInfo
- Publication number
- CN112905297A CN112905297A CN201911220571.5A CN201911220571A CN112905297A CN 112905297 A CN112905297 A CN 112905297A CN 201911220571 A CN201911220571 A CN 201911220571A CN 112905297 A CN112905297 A CN 112905297A
- Authority
- CN
- China
- Prior art keywords
- node
- resource
- container instance
- node group
- container
- 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
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供了一种容器集群资源调度方法和装置,涉及容器技术领域,所述方法包括:应用程序接口服务器根据容器应用部署请求,确定要部署的容器实例、以及每个容器实例的工作负载类型和资源需求,每个容器实例包括一个或多个容器;中央调度器根据每个容器实例的工作负载类型和资源需求,将每个容器实例与对应的节点组绑定;每个分组调度器根据对应的节点组绑定的每个容器实例的资源需求和该节点组中各节点的资源利用率,将该节点组绑定的每个容器实例与对应的节点绑定;每个节点为绑定的每个容器实例分配资源以运行每个容器实例。
Description
技术领域
本公开涉及容器技术领域,尤其是一种容器集群资源调度方法和装置。
背景技术
容器是一种轻量级的虚拟化资源,大规模容器集群往往需要管理上万个异构容器节点,需要调度运行上百万容器实例。
目前,Kubernetes、Swarm等主流的容器调度平台的容器调度方案由中央调度器集中调度,调度过程为:对需要调度的容器实例遍历所有节点,由中央调度器找出满足容器实例的资源需求的节点,然后对这些节点按调度策略进行打分,选择分数最高的节点部署容器实例。
发明内容
发明人注意到,在大规模异构容器集群中,整个容器集群包括多种规格的节点,每个节点往往集成了多种计算、存储和网络设备。
例如,除了CPU(中央处理器)、内存(Memory)、HDD(机械硬盘)、SSD(固态硬盘)和普通网卡等基础设备之外,每个节点还可能装备了GPU(图形处理器)、NPU(神经网络处理器)、FGPA(现场可编程门阵列)、SNIC(智能网卡)等专用PCI-E(周边元件互连高速)设备。与用于通用计算的CPU不同的是,这些PCI-E设备各有其适用场景,例如,GPU适合图形/视频处理,NPU适合机器学习,FGPA适合单一领域的专用计算,SNIC适合网络加速。
不同节点可能配置了不同型号甚至不同厂家的设备,而不同型号、厂家的设备性能可能存在很大的差异。尤其是PIC-E设备的厂家众多、型号众多,以GPU为例,不同厂家的GPU在相同主频、带宽和显存下,其浮点数处理能力可能相差一倍以上。
大规模异构容器集群可承载多种容器工作负载类型,包括Web应用、在线交易、视频/图形处理、数据分析、机器学习、网络处理等。不同应用对资源的需求是不同的,有些只需要通用的CPU,有些需要GPU,有些需要SNIC,有些需要CPU和GPU。
目前的调度方案难以满足不同工作负载类型的应用部署需求。
为了解决上述问题,本公开实施例提出了如下解决方案。
根据本公开实施例的一方面,提供一种容器集群资源调度方法,包括:应用程序接口服务器根据容器应用部署请求,确定要部署的容器实例、以及每个容器实例的工作负载类型和资源需求,每个容器实例包括一个或多个容器;中央调度器根据每个容器实例的工作负载类型和资源需求,将每个容器实例与对应的节点组绑定;每个分组调度器根据对应的节点组绑定的每个容器实例的资源需求和该节点组中各节点的资源利用率,将该节点组绑定的每个容器实例与对应的节点绑定;每个节点为绑定的每个容器实例分配资源以运行每个容器实例。
在一些实施例中,所述资源需求包括一项或多项资源的资源需求项,所述资源需求项包括资源类型、资源请求量、资源请求最大量和资源标签,所述资源标签包括资源厂家和产品型号;每个容器实例对应的节点组根据如下方式来确定:确定多个待选择节点组,所述待选择节点组的工作负载类型包括该容器实例的工作负载类型,并且与该容器实例的资源需求中每项资源的资源类型和资源标签均匹配;根据每个待选择节点组中各节点每项资源的当前资源利用率,确定该容器实例对应的节点组。
在一些实施例中,根据待选择节点组中各节点每项资源的当前资源利用率,确定该容器实例对应的节点组包括:根据每个待选择节点组中各节点每项资源的当前资源利用率,确定每个待选择节点组的每项资源的当前资源平均利用率;根据每个待选择节点组的每项资源的当前资源平均利用率和每项资源的权重,确定每个待选择节点组的当前资源平均利用率;将当前资源平均利用率最小的待选择节点组作为该容器实例对应的节点组。
在一些实施例中,该节点组绑定的每个容器实例对应的节点根据如下方式来确定:从该节点组中确定多个待选择节点,所述待选择节点与该容器实例的每项资源的资源请求量和资源请求最大量匹配;计算每个待选择节点按照所述资源请求量为该容器实例分配资源后的每项资源的估计资源利用率;根据每个待选择节点的每项资源的估计资源利用率和每项资源的权重,确定每个待选择节点的估计资源平均利用率;根据每个待选择节点的估计资源平均利用率和该节点组的当前资源平均利用率,确定该容器实例对应的节点。
在一些实施例中,根据每个待选择节点的估计资源平均利用率和该节点组的当前资源平均利用率,确定该容器实例对应的节点包括:计算每个待选择节点的估计资源平均利用率与对应节点组的当前资源平均利用率之间的差值的绝对值;将所述绝对值最小的待选择节点确定为该容器实例对应的节点。
在一些实施例中,每个分组调度器以插件方式来实现。
在一些实施例中,所述中央调度器将每个容器实例与对应的节点组绑定后,通知所述应用程序接口服务器更新分组绑定信息,所述分组绑定信息包括每个容器实例绑定的节点组;每个分组调度器从所述分组绑定信息获取对应的节点组绑定的每个容器实例,在将该节点组绑定的每个容器实例与对应的节点绑定后,通知所述应用程序接口服务器更新节点绑定信息,所述节点绑定信息包括该节点组绑定的每个容器实例绑定的节点;每个节点从所述节点绑定信息获取绑定的每个容器实例,在为绑定的每个容器实例分配资源以运行容器实例后,通知所述应用程序接口服务器更新容器实例的运行状态信息。
在一些实施例中,所述方法还包括:每个分组调度器在对应的节点组中的某个容器实例的运行异常的情况下,将该容器实例与一个新节点绑定;在未能将该容器实例与新节点绑定的情况下,该分组调度器通知所述应用程序接口服务器更新所述分组绑定信息,以删除该容器实例绑定的节点组,并触发所述中央调度器将该容器实例与一个新的节点组绑定。
根据本公开实施例的另一方面,提供一种容器集群资源调度装置,包括:应用程序接口服务器,被配置为根据容器应用部署请求,确定要部署的容器实例、以及每个容器实例的工作负载类型和资源需求,每个容器实例包括一个或多个容器;中央调度器,被配置为根据每个容器实例的工作负载类型和资源需求,将每个容器实例与对应的节点组绑定;多个分组调度器,每个分组调度器被配置为根据对应的节点组绑定的每个容器实例的资源需求和该节点组中各节点的资源利用率,将该节点组绑定的每个容器实例与对应的节点绑定;多个节点组,每个节点组中的每个节点被配置为为绑定的每个容器实例分配资源以运行每个容器实例。
在一些实施例中,所述资源需求包括一项或多项资源的资源需求项,所述资源需求项包括资源类型、资源请求量、资源请求最大量和资源标签,所述资源标签包括资源厂家和产品型号;每个容器实例对应的节点组根据如下方式来确定:确定多个待选择节点组,所述待选择节点组的工作负载类型包括该容器实例的工作负载类型,并且与该容器实例的资源需求中每项资源的资源类型和资源标签均匹配;根据每个待选择节点组中各节点每项资源的当前资源利用率,确定该容器实例对应的节点组。
在一些实施例中,根据待选择节点组中各节点每项资源的当前资源利用率,确定该容器实例对应的节点组包括:根据每个待选择节点组中各节点每项资源的当前资源利用率,确定每个待选择节点组的每项资源的当前资源平均利用率;根据每个待选择节点组的每项资源的当前资源平均利用率和每项资源的权重,确定每个待选择节点组的当前资源平均利用率;将当前资源平均利用率最小的待选择节点组作为该容器实例对应的节点组。
在一些实施例中,该节点组绑定的每个容器实例对应的节点根据如下方式来确定:从该节点组中确定多个待选择节点,所述待选择节点与该容器实例的每项资源的资源请求量和资源请求最大量匹配;计算每个待选择节点按照所述资源需求为该容器实例分配资源后的每项资源的估计资源利用率;根据每个待选择节点的每项资源的估计资源利用率和每项资源的权重,确定每个待选择节点的估计资源平均利用率;根据每个待选择节点的估计资源平均利用率和该节点组的当前资源平均利用率,确定该容器实例对应的节点。
在一些实施例中,根据每个待选择节点的估计资源平均利用率和该节点组的当前资源平均利用率,确定该容器实例对应的节点包括:计算每个待选择节点的估计资源平均利用率与对应节点组的当前资源平均利用率之间的差值的绝对值;将所述绝对值最小的待选择节点确定为该容器实例对应的节点。
在一些实施例中,每个分组调度器以插件方式来实现。
在一些实施例中,所述中央调度器还被配置为将每个容器实例与对应的节点组绑定后,通知所述应用程序接口服务器更新分组绑定信息,所述分组绑定信息包括每个容器实例绑定的节点组;每个分组调度器还被配置为从所述分组绑定信息获取对应的节点组绑定的每个容器实例,在将该节点组绑定的每个容器实例与对应的节点绑定后,通知所述应用程序接口服务器更新节点绑定信息,所述节点绑定信息包括该节点组绑定的每个容器实例绑定的节点;每个节点还被配置为从所述节点绑定信息获取绑定的每个容器实例,在为绑定的每个容器实例分配资源以运行容器实例后,通知所述应用程序接口服务器更新容器实例的运行状态信息。
在一些实施例中,每个分组调度器还被配置为在对应的节点组中的某个容器实例的运行异常的情况下,将该容器实例与一个新节点绑定;在未能将该容器实例与新节点绑定的情况下,通知所述应用程序接口服务器更新所述分组绑定信息,以删除该容器实例绑定的节点组,并触发所述中央调度器将该容器实例与一个新的节点组绑定。
本公开实施例中,中央调度器根据工作负载类型和资源需求确定每个容器实例对应的节点组,每个分组调度器根据资源需求和资源利用率确定节点组中每个容器实例对应的节点,进而每个节点为绑定的每个容器实例分配资源以运行每个容器实例。这样的方式下,一方面,根据不同类型的容器应用部署请求,可以选择合适的节点来部署各容器实例;另一方面,分组调度器可以大大缓解中央调度器的调度压力,提高容器实例的调度速度;再一方面,可以合理分配节点的资源,提高各节点的资源利用率。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本公开一些实施例的容器集群资源调度装置的架构示意图;
图2是根据本公开一些实施例的容器集群资源调度方法的流程示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1是根据本公开一些实施例的容器集群资源调度装置的架构示意图。
如图1所示,容器集群资源调度装置包括多个节点组,例如节点组1、节点组2…节点组n。每个节点组对应一个分组调度器。例如,节点组1对应分组调度器1、节点组2对应分组调度器2…节点组n对应分组调度器n。
每个节点组包括多个节点。例如,同一节点组中每个节点支持的资源可以相同,例如均包括CPU、内存、HDD、SDD、GPU、NPU和SNIC。例如,同一节点组中每个节点支持的资源标签也相同。例如,CPU、内存、HDD、SDD、GPU、NPU和SNIC的资源厂家和产品型号均相同。
利用中央调度器和分组调度器可以实现资源的调度,从而运行容器实例。
图2是根据本公开一些实施例的容器集群资源调度方法的流程示意图。下面结合图1和图2对容器集群资源调度方法进行介绍。
在步骤202,应用程序接口服务器根据容器应用部署请求,确定要部署的容器实例、以及每个容器实例的工作负载类型和资源需求。这里,容器实例也可以称为Pod。每个容器实例可以包括一个或多个容器。
在一些实施例中,每个容器实例的工作负载类型和资源需求均相同。工作负载类型例如可以包括计算密集型、IO(输入输出)密集型、存储密集型等。资源需求例如可以包括一项或多项资源的资源需求项。每个资源需求项可以包括资源类型、资源请求量、资源请求最大量和资源标签,资源标签包括资源厂家和产品型号。这里,资源请求量表示容器实例当前需要该资源的量,资源请求最大量表示容器实例可能需要该资源的最大量。
例如,容器应用部署请求中请求部署100个视频服务器实例,每个视频服务器实例的工作负载类型均为GPU计算密集型(即GPU资源的优先级最高)。每个视频服务器实例包括两个容器,一个容器为视频引擎(Video),一个容器为视频日志(VideoLog)。视频引擎容器需要GPU、GPU Memory、SNIC、SSD等资源,视频日志容器需要CPU、Memory和HDD资源。
作为示例,容器应用部署请求例如可以用下述代码表示。
AppDeployment:
Name:VideoServer
WorkloadType:GPUIntensive
Replicas:100
Containers:
-Name:VedioEngine
Image:vedioEngine:1.0
Resources:
-ResourceType:GPU
Requests:1000CUDA
Limits:1000CUDA
Labels:
Architecture:Maxwell
Vendor:NVidia
-ResourceType:GpuMemory
Requests:2048MB
Limits:2048GMB
-ResourceType:SSD
Requests:500G
-ResourceType:SNIC
Requests:1GB
Limits:20GB
-Name:VideoLog
Image:videoLog:1.0
Resources:
-ResourceType:CPU
Requests:100MC
Limits:1000MC
Labels:
Architecture:ARM64
Vendor:Samsung
-ResourceType:Memory
Requests:256MB
Limits:2048MB
-ResourceType:HDD
Requests:100GB
Limits:500GB
在步骤204,中央调度器根据每个容器实例的工作负载类型和资源需求,将每个容器实例与对应的节点组绑定。
例如,中央调度器可以监控(例如通过HTTP2长连接)应用程序接口服务器,从而获得每个容器实例的工作负载类型和资源需求。在一些实施例中,中央调度器将每个容器实例与对应的节点组绑定后,可以通知应用程序接口服务器更新分组绑定信息。这里,分组绑定信息包括每个容器实例绑定的节点组。
在一些实现方式中,中央调度器可以以插件方式来实现。
在步骤206,每个分组调度器根据对应的节点组绑定的每个容器实例的资源需求和该节点组中各节点的资源利用率,将该节点组绑定的每个容器实例与对应的节点绑定。
例如,每个分组调度器可以监控应用程序接口服务器,从而获得对应的分组绑定信息。每个分组调度器可以从分组绑定信息获取对应的节点组绑定的每个容器实例,在将该节点组绑定的每个容器实例与对应的节点绑定后,可以通知应用程序接口服务器更新节点绑定信息。这里,节点绑定信息包括该节点组绑定的每个容器实例绑定的节点。
在一些实现方式中,每个分组调度器可以以插件方式来实现。
在步骤208,每个节点为绑定的每个容器实例分配资源以运行每个容器实例,从而完成容器实例的部署。
例如,每个节点可以通过节点代理监控应用程序接口服务器,从而获得对应的节点绑定信息。每个节点可以从节点绑定信息获取绑定的每个容器实例,在为绑定的每个容器实例分配资源以运行容器实例后,可以通知应用程序接口服务器更新容器实例的运行状态信息。
另外,每个节点在运行容器实例出现异常的情况下,可以通知应用程序接口服务器更新容器实例的运行状态信息,以便分组调度器监控。
上述实施例中,中央调度器根据工作负载类型和资源需求确定每个容器实例对应的节点组,每个分组调度器根据资源需求和资源利用率确定节点组中每个容器实例对应的节点,进而每个节点为绑定的每个容器实例分配资源以运行每个容器实例。这样的方式下,一方面,根据不同类型的容器应用部署请求,可以选择合适的节点来部署各容器实例;另一方面,分组调度器可以大大缓解中央调度器的调度压力,提高容器实例的调度速度;再一方面,可以合理分配节点的资源,提高各节点的资源利用率。
在一些实施例中,每个分组调度器在对应的节点组中的某个容器实例的运行异常的情况下,可以将该容器实例与一个新节点绑定;在未能将该容器实例与新节点绑定的情况下,该分组调度器通知应用程序接口服务器更新分组绑定信息,以删除该容器实例绑定的节点组,并触发中央调度器将该容器实例与一个新的节点组绑定。进而,由新的节点组按照以上方式将该容器实例与新的节点组中的一个节点绑定,从而使得该容器实例可以运行在重新绑定的节点上。
上述实施例中,在容器实例的运行异常的情况下,在之前绑定的节点组内选择新节点来更新容器实例绑定的节点。在未能更新的情况下,更新该容器实例绑定的节点组,从而确保该容器实例能够正常运行。
在一些实施例中,容器集群资源调度方法还可以包括:分组管理器创建节点组的过程。分组管理器创建节点组的过程可以包括:定义节点组支持的工作负载类型;定义节点组支持的节点资源模板,包括资源类型、资源规格(即支持的资源请求量)、资源标签(包括资源厂家和产品型号)等;向节点组添加节点。
下面介绍一种步骤204中确定每个容器实例对应的节点组的具体实现方式。
首先,确定多个待选择节点组。这里,待选择节点组的工作负载类型包括该容器实例的工作负载类型,并且与该容器实例的资源需求中每项资源的资源类型和资源标签均匹配。
应理解,待选择节点组可以支持多种工作负载类型,只要包括该容器实例的工作负载类型即可。另外,与该容器实例的资源需求中每项资源的资源类型和资源标签均匹配可以理解为:该容器实例的资源需求中每项资源的资源类型和资源标签与待选择节点组的该项资源的资源类型和资源标签均相同。例如,以CPU资源为例,该容器实例的资源需求中的CPU厂家与待选择节点组的CPU厂家相同,该容器实例的资源需求中的CPU型号与待选择节点组的CPU型号也相同。
然后,根据每个待选择节点组中各节点每项资源的当前资源利用率,确定该容器实例对应的节点组。
例如,根据每个待选择节点组中各节点每项资源的当前资源利用率,确定每个待选择节点组的每项资源的当前资源平均利用率;根据每个待选择节点组的每项资源的当前资源平均利用率和每项资源的权重,确定每个待选择节点组的当前资源平均利用率;将当前资源平均利用率最小的待选择节点组作为该容器实例对应的节点组。
例如,待选择节点组i的资源包括CPU、Memory、GPU、NPU、SNIC、HDD、SSD。假设这7种资源在待选择节点组i中所有节点的当前资源平均利用率分别为U1、U2、U3、U4…U7,这7种资源的权重分别为W1、W2、W3、W4…W7,则待选择节点组i的当前资源平均利用率为GUi=W1U1+W2U2+…W7U7。
应理解,在待选择节点组只有一个的情况下,则可以直接将该待选择节点组作为该容器实例对应的节点组。
上述实现方式中,在确定容器实例对应的节点组时,考虑了节点组资源的资源厂家和产品型号,从而可以更针对性地利用节点组资源。另外,还考虑了节点组中各节点每项资源的当前资源利用率,从而可以使得各节点组的资源利用更均匀,分配更合理。
在利用上述方式确定每个容器实例对应的节点组后,可以将每个容器实例与对应的节点组绑定。这样,每个节点组可以绑定多个容器实例,进而可以确定每个节点组绑定的每个容器实例对应的节点。
接下来介绍一种确定某个节点组绑定的每个容器实例对应的节点的具体实现方式。
首先,从该节点组中确定多个待选择节点。
这里,待选择节点与该容器实例的每项资源的资源请求量和资源请求最大量匹配。换言之,待选择节点的资源能够满足该容器实例的每项资源的资源请求量和资源请求最大量匹配。例如,该容器实例需要CPU、Memory、GPU、NPU、SNIC、HDD、SSD这7种资源,待选择节点的这7种资源均能够满足资源请求量和资源请求最大量匹配。
然后,计算每个待选择节点按照资源请求量为该容器实例分配资源后的每项资源的估计资源利用率。
例如,待选择节点为该容器实例分配CPU资源后,待选择节点的CPU的资源利用率即为CPU资源的估计资源利用率。又例如,待选择节点为该容器实例分配Memory资源后,待选择节点的Memory的资源利用率即为Memory资源的估计资源利用率。如此可以得到每项资源的估计资源利用率。
之后,根据每个待选择节点的每项资源的估计资源利用率和每项资源的权重,确定每个待选择节点的估计资源平均利用率。
例如,待选择节点的估计资源平均利用率可以为每项资源的估计资源利用率加权求和。
之后,根据每个待选择节点的估计资源平均利用率和该节点组的当前资源平均利用率,确定该容器实例对应的节点。
在一些实现方式中,可以计算每个待选择节点的估计资源平均利用率与对应节点组的当前资源平均利用率之间的差值的绝对值;然后将绝对值最小的待选择节点确定为该容器实例对应的节点。
这里,节点组的当前资源平均利用率可以按照以上介绍的方式来获得。另外,待选择节点的估计资源平均利用率与对应节点组的当前资源平均利用率之间的差值的绝对值也可以称为待选择节点的平衡度。
应理解,在待选择节点只有一个的情况下,则可以直接将该待选择节点作为该容器实例对应的节点。
上述实现方式中,在确定容器实例对应的节点时,考虑了节点的估计资源平均利用率和节点组的当前资源平均利用率,从而可以更有效地利用节点组中各节点的资源,使得节点组中各节点的资源利用更均匀,分配更合理。
在一些实施例中,在确定容器实例对应的节点时,还可以考虑不同容器实例的亲和性和互斥性中的至少一个。例如,在仅考虑互斥性的情况下,如果未绑定节点的容器实例与待选择节点已经绑定的某个容器实施互斥,则不将该未绑定节点的容器实例与该待选择节点绑定。又例如,在仅考虑亲和性的情况下,如果未绑定节点的容器实例需要与某个容器实例与同一个节点绑定,而待选择节点未绑定该容器实施需要的容器实例,则不将该未绑定节点的容器实例与该待选择节点绑定。再例如,在同时考虑亲和性和互斥性的情况下,可以以二者中的一个为准来确定是否该未绑定节点的容器实例与该待选择节点绑定。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于装置实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开实施例还提供了一种容器集群资源调度装置。参见图1,容器集群资源调度装置可以包括应用程序接口服务器、中央调度器、多个分组调度器和多个节点组。
应用程序接口服务器被配置为根据容器应用部署请求,确定要部署的容器实例、以及每个容器实例的工作负载类型和资源需求。这里,每个容器实例包括一个或多个容器。
中央调度器被配置为根据每个容器实例的工作负载类型和资源需求,将每个容器实例与对应的节点组绑定。
每个分组调度器被配置为根据对应的节点组绑定的每个容器实例的资源需求和该节点组中各节点的资源利用率,将该节点组绑定的每个容器实例与对应的节点绑定。例如,每个分组调度器可以以插件方式来实现,不需要增加额外硬件资源。
在一些实现方式中,每个分组调度器还被配置为在对应的节点组中的某个容器实例的运行异常的情况下,将该容器实例与一个新节点绑定;在未能将该容器实例与新节点绑定的情况下,通知应用程序接口服务器更新分组绑定信息,以删除该容器实例绑定的节点组,并触发中央调度器将该容器实例与一个新的节点组绑定。
每个节点组中的每个节点被配置为为绑定的每个容器实例分配资源以运行每个容器实例。
在一些实施例中,资源需求包括一项或多项资源的资源需求项,资源需求项包括资源类型、资源请求量、资源请求最大量和资源标签,资源标签包括资源厂家和产品型号。每个容器实例对应的节点组根据如下方式来确定:确定多个待选择节点组,待选择节点组的工作负载类型包括该容器实例的工作负载类型,并且与该容器实例的资源需求中每项资源的资源类型和资源标签均匹配;根据每个待选择节点组中各节点每项资源的当前资源利用率,确定该容器实例对应的节点组。
在一些实施例中,根据待选择节点组中各节点每项资源的当前资源利用率,确定该容器实例对应的节点组包括:根据每个待选择节点组中各节点每项资源的当前资源利用率,确定每个待选择节点组的每项资源的当前资源平均利用率;根据每个待选择节点组的每项资源的当前资源平均利用率和每项资源的权重,确定每个待选择节点组的当前资源平均利用率;将当前资源平均利用率最小的待选择节点组作为该容器实例对应的节点组。
在一些实施例中,该节点组中的每个容器实例对应的节点根据如下方式来确定:从该节点组中确定多个待选择节点,待选择节点与该容器实例的每项资源的资源请求量和资源请求最大量匹配;计算每个待选择节点按照资源需求为该容器实例分配资源后的每项资源的估计资源利用率;根据每个待选择节点的每项资源的估计资源利用率和每项资源的权重,确定每个待选择节点的估计资源平均利用率;根据每个待选择节点的估计资源平均利用率和该节点组的当前资源平均利用率,确定该容器实例对应的节点。
在一些实施例中,根据每个待选择节点的估计资源平均利用率和该节点组的当前资源平均利用率,确定该容器实例对应的节点包括:计算每个待选择节点的估计资源平均利用率与对应节点组的当前资源平均利用率之间的差值的绝对值;将绝对值最小的待选择节点确定为该容器实例对应的节点。
在一些实施例中,中央调度器还被配置为将每个容器实例与对应的节点组绑定后,通知应用程序接口服务器更新分组绑定信息,分组绑定信息包括每个容器实例绑定的节点组;每个分组调度器还被配置为从分组绑定信息获取对应的节点组中的每个容器实例,在将该节点组中的每个容器实例与对应的节点绑定后,通知应用程序接口服务器更新节点绑定信息,节点绑定信息包括该节点组中的每个容器实例绑定的节点;每个节点还被配置为从节点绑定信息获取绑定的每个容器实例,在为绑定的每个容器实例分配资源以运行容器实例后,通知应用程序接口服务器更新容器实例的运行状态信息。
本公开各实施例可以适用于微服务、大数据、人工智能等多工作负载类型的调度场景,根据工作负载类型可以灵活地进行节点资源的弹性伸缩。
至此,已经详细描述了本公开的各实施例。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解,可由计算机程序指令实现流程图中一个流程或多个流程和/或方框图中一个方框或多个方框中指定的功能。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改或者对部分技术特征进行等同替换。本公开的范围由所附权利要求来限定。
Claims (16)
1.一种容器集群资源调度方法,包括:
应用程序接口服务器根据容器应用部署请求,确定要部署的容器实例、以及每个容器实例的工作负载类型和资源需求,每个容器实例包括一个或多个容器;
中央调度器根据每个容器实例的工作负载类型和资源需求,将每个容器实例与对应的节点组绑定;
每个分组调度器根据对应的节点组绑定的每个容器实例的资源需求和该节点组中各节点的资源利用率,将该节点组绑定的每个容器实例与对应的节点绑定;
每个节点为绑定的每个容器实例分配资源以运行每个容器实例。
2.根据权利要求1所述的方法,其中,所述资源需求包括一项或多项资源的资源需求项,所述资源需求项包括资源类型、资源请求量、资源请求最大量和资源标签,所述资源标签包括资源厂家和产品型号;
每个容器实例对应的节点组根据如下方式来确定:
确定多个待选择节点组,所述待选择节点组的工作负载类型包括该容器实例的工作负载类型,并且与该容器实例的资源需求中每项资源的资源类型和资源标签均匹配;
根据每个待选择节点组中各节点每项资源的当前资源利用率,确定该容器实例对应的节点组。
3.根据权利要求2所述的方法,其中,根据待选择节点组中各节点每项资源的当前资源利用率,确定该容器实例对应的节点组包括:
根据每个待选择节点组中各节点每项资源的当前资源利用率,确定每个待选择节点组的每项资源的当前资源平均利用率;
根据每个待选择节点组的每项资源的当前资源平均利用率和每项资源的权重,确定每个待选择节点组的当前资源平均利用率;
将当前资源平均利用率最小的待选择节点组作为该容器实例对应的节点组。
4.根据权利要求3所述的方法,其中,该节点组绑定的每个容器实例对应的节点根据如下方式来确定:
从该节点组中确定多个待选择节点,所述待选择节点与该容器实例的每项资源的资源请求量和资源请求最大量匹配;
计算每个待选择节点按照所述资源请求量为该容器实例分配资源后的每项资源的估计资源利用率;
根据每个待选择节点的每项资源的估计资源利用率和每项资源的权重,确定每个待选择节点的估计资源平均利用率;
根据每个待选择节点的估计资源平均利用率和该节点组的当前资源平均利用率,确定该容器实例对应的节点。
5.根据权利要求4所述的方法,其中,根据每个待选择节点的估计资源平均利用率和该节点组的当前资源平均利用率,确定该容器实例对应的节点包括:
计算每个待选择节点的估计资源平均利用率与对应节点组的当前资源平均利用率之间的差值的绝对值;
将所述绝对值最小的待选择节点确定为该容器实例对应的节点。
6.根据权利要求1所述的方法,其中,每个分组调度器以插件方式来实现。
7.根据权利要求1所述的方法,其中:
所述中央调度器将每个容器实例与对应的节点组绑定后,通知所述应用程序接口服务器更新分组绑定信息,所述分组绑定信息包括每个容器实例绑定的节点组;
每个分组调度器从所述分组绑定信息获取对应的节点组绑定的每个容器实例,在将该节点组绑定的每个容器实例与对应的节点绑定后,通知所述应用程序接口服务器更新节点绑定信息,所述节点绑定信息包括该节点组绑定的每个容器实例绑定的节点;
每个节点从所述节点绑定信息获取绑定的每个容器实例,在为绑定的每个容器实例分配资源以运行容器实例后,通知所述应用程序接口服务器更新容器实例的运行状态信息。
8.根据权利要求7所述的方法,还包括:
每个分组调度器在对应的节点组中的某个容器实例的运行异常的情况下,将该容器实例与一个新节点绑定;
在未能将该容器实例与新节点绑定的情况下,该分组调度器通知所述应用程序接口服务器更新所述分组绑定信息,以删除该容器实例绑定的节点组,并触发所述中央调度器将该容器实例与一个新的节点组绑定。
9.一种容器集群资源调度装置,包括:
应用程序接口服务器,被配置为根据容器应用部署请求,确定要部署的容器实例、以及每个容器实例的工作负载类型和资源需求,每个容器实例包括一个或多个容器;
中央调度器,被配置为根据每个容器实例的工作负载类型和资源需求,将每个容器实例与对应的节点组绑定;
多个分组调度器,每个分组调度器被配置为根据对应的节点组绑定的每个容器实例的资源需求和该节点组中各节点的资源利用率,将该节点组绑定的每个容器实例与对应的节点绑定;
多个节点组,每个节点组中的每个节点被配置为为绑定的每个容器实例分配资源以运行每个容器实例。
10.根据权利要求9所述的装置,其中,所述资源需求包括一项或多项资源的资源需求项,所述资源需求项包括资源类型、资源请求量、资源请求最大量和资源标签,所述资源标签包括资源厂家和产品型号;
每个容器实例对应的节点组根据如下方式来确定:
确定多个待选择节点组,所述待选择节点组的工作负载类型包括该容器实例的工作负载类型,并且与该容器实例的资源需求中每项资源的资源类型和资源标签均匹配;
根据每个待选择节点组中各节点每项资源的当前资源利用率,确定该容器实例对应的节点组。
11.根据权利要求10所述的装置,其中,根据待选择节点组中各节点每项资源的当前资源利用率,确定该容器实例对应的节点组包括:
根据每个待选择节点组中各节点每项资源的当前资源利用率,确定每个待选择节点组的每项资源的当前资源平均利用率;
根据每个待选择节点组的每项资源的当前资源平均利用率和每项资源的权重,确定每个待选择节点组的当前资源平均利用率;
将当前资源平均利用率最小的待选择节点组作为该容器实例对应的节点组。
12.根据权利要求11所述的装置,其中,该节点组绑定的每个容器实例对应的节点根据如下方式来确定:
从该节点组中确定多个待选择节点,所述待选择节点与该容器实例的每项资源的资源请求量和资源请求最大量匹配;
计算每个待选择节点按照所述资源需求为该容器实例分配资源后的每项资源的估计资源利用率;
根据每个待选择节点的每项资源的估计资源利用率和每项资源的权重,确定每个待选择节点的估计资源平均利用率;
根据每个待选择节点的估计资源平均利用率和该节点组的当前资源平均利用率,确定该容器实例对应的节点。
13.根据权利要求12所述的装置,其中,根据每个待选择节点的估计资源平均利用率和该节点组的当前资源平均利用率,确定该容器实例对应的节点包括:
计算每个待选择节点的估计资源平均利用率与对应节点组的当前资源平均利用率之间的差值的绝对值;
将所述绝对值最小的待选择节点确定为该容器实例对应的节点。
14.根据权利要求9所述的装置,其中,每个分组调度器以插件方式来实现。
15.根据权利要求9所述的装置,其中:
所述中央调度器还被配置为将每个容器实例与对应的节点组绑定后,通知所述应用程序接口服务器更新分组绑定信息,所述分组绑定信息包括每个容器实例绑定的节点组;
每个分组调度器还被配置为从所述分组绑定信息获取对应的节点组绑定的每个容器实例,在将该节点组绑定的每个容器实例与对应的节点绑定后,通知所述应用程序接口服务器更新节点绑定信息,所述节点绑定信息包括该节点组绑定的每个容器实例绑定的节点;
每个节点还被配置为从所述节点绑定信息获取绑定的每个容器实例,在为绑定的每个容器实例分配资源以运行容器实例后,通知所述应用程序接口服务器更新容器实例的运行状态信息。
16.根据权利要求15所述的装置,其中,每个分组调度器还被配置为:
在对应的节点组中的某个容器实例的运行异常的情况下,将该容器实例与一个新节点绑定;
在未能将该容器实例与新节点绑定的情况下,通知所述应用程序接口服务器更新所述分组绑定信息,以删除该容器实例绑定的节点组,并触发所述中央调度器将该容器实例与一个新的节点组绑定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911220571.5A CN112905297A (zh) | 2019-12-03 | 2019-12-03 | 容器集群资源调度方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911220571.5A CN112905297A (zh) | 2019-12-03 | 2019-12-03 | 容器集群资源调度方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112905297A true CN112905297A (zh) | 2021-06-04 |
Family
ID=76103871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911220571.5A Pending CN112905297A (zh) | 2019-12-03 | 2019-12-03 | 容器集群资源调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112905297A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113449159A (zh) * | 2021-06-29 | 2021-09-28 | 乐视云计算有限公司 | 节点数据处理方法、装置、设备和计算机可读存储介质 |
CN114064295A (zh) * | 2021-12-13 | 2022-02-18 | 南方电网数字电网研究院有限公司 | 一种结合变电网关的本地资源管理方法及系统 |
CN114598666A (zh) * | 2022-02-24 | 2022-06-07 | 阿里巴巴(中国)有限公司 | 资源处理方法及资源调度方法 |
CN116016438A (zh) * | 2022-12-12 | 2023-04-25 | 上海道客网络科技有限公司 | 基于容器云平台的多子网统一分配ip地址的方法和系统 |
WO2024016596A1 (zh) * | 2022-07-21 | 2024-01-25 | 天翼云科技有限公司 | 容器集群调度的方法、装置、设备及存储介质 |
-
2019
- 2019-12-03 CN CN201911220571.5A patent/CN112905297A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113449159A (zh) * | 2021-06-29 | 2021-09-28 | 乐视云计算有限公司 | 节点数据处理方法、装置、设备和计算机可读存储介质 |
CN113449159B (zh) * | 2021-06-29 | 2024-02-02 | 乐视云网络技术(北京)有限公司 | 节点数据处理方法、装置、设备和计算机可读存储介质 |
CN114064295A (zh) * | 2021-12-13 | 2022-02-18 | 南方电网数字电网研究院有限公司 | 一种结合变电网关的本地资源管理方法及系统 |
CN114064295B (zh) * | 2021-12-13 | 2022-06-21 | 南方电网数字电网研究院有限公司 | 一种结合变电网关的本地资源管理方法及系统 |
CN114598666A (zh) * | 2022-02-24 | 2022-06-07 | 阿里巴巴(中国)有限公司 | 资源处理方法及资源调度方法 |
WO2024016596A1 (zh) * | 2022-07-21 | 2024-01-25 | 天翼云科技有限公司 | 容器集群调度的方法、装置、设备及存储介质 |
CN116016438A (zh) * | 2022-12-12 | 2023-04-25 | 上海道客网络科技有限公司 | 基于容器云平台的多子网统一分配ip地址的方法和系统 |
CN116016438B (zh) * | 2022-12-12 | 2023-08-15 | 上海道客网络科技有限公司 | 基于容器云平台的多子网统一分配ip地址的方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112905297A (zh) | 容器集群资源调度方法和装置 | |
US20210218796A1 (en) | Efficient, automated distributed-search methods and systems | |
Polo et al. | Performance-driven task co-scheduling for mapreduce environments | |
Warneke et al. | Exploiting dynamic resource allocation for efficient parallel data processing in the cloud | |
Abd Latiff | A checkpointed league championship algorithm-based cloud scheduling scheme with secure fault tolerance responsiveness | |
US10387179B1 (en) | Environment aware scheduling | |
US8108876B2 (en) | Modifying an operation of one or more processors executing message passing interface tasks | |
Iordache et al. | Resilin: Elastic mapreduce over multiple clouds | |
CN105843683B (zh) | 用于动态优化平台资源分配的方法、系统和设备 | |
CN114741207B (zh) | 一种基于多维度组合并行的gpu资源调度方法和系统 | |
CN107864211B (zh) | 集群资源调度方法及系统 | |
CN112416585A (zh) | 面向深度学习的gpu资源管理与智能化调度方法 | |
US20230393879A1 (en) | Coordinated Container Scheduling For Improved Resource Allocation In Virtual Computing Environment | |
Tsai et al. | Service replication strategies with mapreduce in clouds | |
Lebre et al. | Putting the next 500 vm placement algorithms to the acid test: The infrastructure provider viewpoint | |
US20200233691A1 (en) | Containerized management services with high availability | |
US20200133728A1 (en) | Data based scheduling for horizontally scalable clusters | |
CN109960579A (zh) | 一种调整业务容器的方法及装置 | |
CN113535321A (zh) | 虚拟化容器管理方法、系统和存储介质 | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
KR101640231B1 (ko) | 자동 분산병렬 처리 하둡 시스템의 지원을 위한 클라우드 구동 방법 | |
CN105653347A (zh) | 一种服务器、资源管理方法及虚拟机管理器 | |
Djebbar et al. | Task scheduling strategy based on data replication in scientific cloud workflows | |
He et al. | Elastic application container | |
Zhang et al. | Cost-efficient and latency-aware workflow scheduling policy for container-based systems |
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 |