CN114840304B - 一种容器调度方法、电子设备和存储介质 - Google Patents
一种容器调度方法、电子设备和存储介质 Download PDFInfo
- Publication number
- CN114840304B CN114840304B CN202210399975.0A CN202210399975A CN114840304B CN 114840304 B CN114840304 B CN 114840304B CN 202210399975 A CN202210399975 A CN 202210399975A CN 114840304 B CN114840304 B CN 114840304B
- Authority
- CN
- China
- Prior art keywords
- task
- resource
- container
- node
- scheduling
- 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.)
- Active
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/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
- 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/5061—Partitioning or combining of resources
-
- 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
-
- 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
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请实施例提供了一种容器调度方法、电子设备和存储介质。其中,该方法包括:根据任务类型将业务作业对应的任务容器划分到至少一个自定义描述资源对象;确定各所述集群节点对所述自定义描述资源对象内所述任务容器的适应度和承载能力;根据所述适应度和所述承载能力配置所述集群节点与所述任务容器的调度关系。本申请实施例实现任务容器的批量调度,可提高容器调度效率,依据适应度和承载能力将任务容器分配到不同的集群节点,可提高任务容器与集群节点匹配度,缓解集群节点资源竞争的问题。
Description
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种容器调度方法、电子设备和存储介质。
背景技术
近年来,大数据和人工智能技术发展飞速,数据挖掘、数据收集、数据处理、数据汇总和深度学习成为当前云数据中心的主流作业类型。这些不同类型的数据作业都需要划分成相互依赖的任务来协同运行。
随着容器虚拟化技术的发展,用户倾向于将任务连同它们的依赖封装到轻量级容器内运行。现有的容器部署方案为大数据和人工智能作业中的每个任务创建各自对应的容器运行,由于大数据和人工智能作业中往往包含多个任务,因此一个大数据和人工智能作业中往往包含多个容器。现有的容器调度方法中如Kubernetes以容器为单位采用流水线调度方式进行容器调度,即在一个调度周期内只对一个任务对应的容器进行调度,参见图1,流水线容器调度在处理大数据和人工智能作业时存在调度效率低下的缺陷。为了提高大数据和人工智能作业的调度效率,研究者提出了基于图2所示的批量调度方式,批量调度方式是在每个调度周期内将包含不同类型任务的大数据或人工智能作业作为调度单元进行调度。参见图3,大数据或人工智能作业往往包含不同的任务,现有的批量调度方式做出调度决策时需要遍历一个大数据或人工智能作业中所有任务的资源需求量,导致现有技术中业务作业的批量调度效率仍然较低。
发明内容
本申请实施例的主要目的在于提出一种容器调度方法、电子设备和存储介质,以实现业务作业的批量调度,可提高容器调度效率,降低业务作业等待时间。
本申请实施例还提供了一种容器调度方法,其中,该方法包括:
根据任务类型将业务作业对应的任务容器划分到至少一个自定义描述资源对象;
确定各所述集群节点对所述自定义描述资源对象内所述任务容器的适应度和承载能力;
根据所述适应度和所述承载能力配置所述集群节点与所述任务容器的调度关系。
本申请实施例还提供了一种电子设备,其中,该电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本申请实施例中任一所述方法。
本申请实施例还提供了一种计算机可读存储介质,其中,该计算机可读存储介质存储有一个或多个程序,所述一个或多个程序被所述一个或多个处理器执行,以实现如本申请实施例中任一所述方法。
本申请实施例,通过按照业务作业的任务类型划分任务容器到不同的自定义描述资源对象中,确定集群节点针对各自定义描述资源对象的中任务容器的适应度和承载能力,按照适应度和承载能力配置任务容器与集群节点间的调度关系,实现任务容器的批量调度,可提高容器调度效率,依据适应度和承载能力将任务容器分配到不同的集群节点,可提高任务容器与集群节点匹配度,缓解集群节点资源竞争的问题。
附图说明
图1是一种容器流水线调度方法的工作模式示意图;
图2是一种容器批量调度方法的工作模式示意图;
图3是一种大数据或人工智能作业的组成示意图;
图4是一种容器批量调度中资源竞争问题的示意图;
图5是本申请实施例提供的一种容器调度方法的流程图;
图6是本申请实施例提供的一种容器调度方法的流程图;
图7是本申请实施例提供的另一种容器调度方法的流程图;
图8是本申请实施例提供的另一种容器调度方法的流程图;
图9是本申请实施例提供的一种容器调度装置的结构示意图;
图10是本申请实施例提供的一种容器调度方法的场景示意图;
图11是本申请实施例提供的一种容器调度装置的示例图;
图12是本申请实施例提供的一种容器调度方法的流程示例图;
图13是本申请实施例提供的一种作业划分的流程示例图;
图14是本申请实施例提供的一种作业类型校验的流程示例图;
图15是本申请实施例提供的一种调度作业排序的流程示例图;
图16是本申请实施例提供的一种节点过滤及适应度计算的流程示例图;
图17是本申请实施例提供的一种节点承载能力计算的流程示例图;
图18是本申请实施例提供的一种调度节点选择的流程示例图;
图19是本申请实施例提供的一种节点绑定的流程示例图;
图20是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
应当理解,此处所描述的具体实施仅仅用以解释本发明,并用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”后缀仅为了有利于本发明的说明,其本身没有特有的意义,因此,“模块”、“部件”或“单元”可以混合地使用。
现有技术中以Volcano为代表的批量调度方式将一个大数据和人工智能作业包含的所有任务都尽可能地调度到同一个节点上,由于这些任务需求的资源类型可能相同,这种批量调度方式容易导致节点资源竞争的问题,如图4所示,目前,现有的批量调度方式仅在一定程度上提高了大数据和人工智能作业的调度效率,但仍存在调度效率低下、节点资源竞争的问题。针对上述问题,本发明实施例提供了一种容器调度方法以提高大数据和人工智能作业的调度效率,并缓解节点资源竞争的问题。
图5是本申请实施例提供的一种容器调度方法的流程图,本申请实施例可适用于大数据或人工智能作业调度的情况,该方法可以由容器调度装置来执行,该装置可以通过软件和/或硬件的方法实现,参见图5,本申请实施例提供的方法具体包括如下步骤:
步骤110、根据任务类型将业务作业对应的任务容器划分到至少一个自定义描述资源对象。
其中,任务类型可以是大数据或人工智能具体业务对应的业务类型,可以表示作业需要实现的功能或者需要传输的数据等,业务作业可以是大数据或人工智能待执行的事务,业务作业可以为一个或多个,任务容器可以是用于处理业务的环境,一个资源对象可以包括一个或多个任务容器,可以理解的是,自定义描述资源对象可以是用户根据需求自定义设置的资源对象,自定义描述资源中管理的任务容器可以对应相同的任务类型。
在本申请实施例中,针对各业务作业确定其对应的任务类型,可以按照任务类型将业务作业分别划分到不同的自定义描述资源对象中,自定义描述资源对象于业务类型之间可以配置有对应关系,业务作业可以按照业务类型与自定义描述资源对象之间的对应关系进行划分。
步骤120、确定各集群节点对自定义描述资源对象内任务容器的适应度和承载能力。
其中,集群节点可以是处理业务作业的处理节点,集群节点的数量可以为一个或多个,不同的集群节点可以位于相同位置或者不同位置。适应度可以是集群节点对不同自定义描述资源对象中业务作业的匹配程度,该匹配程度可以由资源以及处理性能等因素确定,承载能力可以是集群节点容纳业务作业的能力,承载能力可以由自定义描述资源对象的资源消耗量以及集群节点剩余资源量确定。
具体的,可以确定出各集群节点分别与不同自定义描述资源对象中任务容器的适应度,以及各集群节点容纳不同自定义描述资源对象中任务容器的承载能力。
步骤130、根据适应度和承载能力配置集群节点与任务容器的调度关系。
其中,调度关系可以是将任务容器与集群节点的配置关系,具有调度关系的集群节点可以处理对应任务容器。
在本申请实施例中,可以针对各任务容器按照其对应的适应度和承载能力确定与任务容器最匹配的集群节点,可以建立任务容器与集群节点的调度关系。
本申请实施例,通过按照业务作业的任务类型划分任务容器到不同的自定义描述资源对象中,确定集群节点针对各自定义描述资源对象的中任务容器的适应度和承载能力,按照适应度和承载能力配置任务容器与集群节点间的调度关系,实现任务容器的批量调度,可提高容器调度效率,依据适应度和承载能力将任务容器分配到不同的集群节点,可提高任务容器与集群节点匹配度,缓解集群节点资源竞争的问题。
图6是本申请实施例提供的一种容器调度方法的流程图,本申请实施例是在上述申请实施例基础上的具体化,参见图6,本申请实施例提供的方法具体包括如下步骤:
步骤210、创建分别对应业务作业包括任务的任务容器,其中,任务容器包括镜像名称、容器启动命令、容器启动参数和任务类型标签。
在本申请实施例中,业务作业中可以包括多个任务,该任务可以是集群节点的待处理事务,针对各业务作业可以为其包含的任务创建对应的任务容器,其中,每个任务容器可以存在镜像名称、容器启动命令、容器启动参数以及任务类型标签。例如,在Kubernetes下使Kubernetes API-Server的容器创建模块为作业中的每一个任务创建与其对应的Kubernetes Pod。
步骤220、创建对应业务作业的自定义描述资源对象,其中,自定义描述资源对象包括名称、作业类型标签和调度优先级标签。
具体的,可以为业务作业创建自定义描述资源对象,并为自定义描述资源对象设置名称、作业类型标签和调度优先级标签等信息。
步骤230、按照任务容器的任务类型标签将各任务容器划分到具有匹配的作业任务类型标签的自定义描述资源对象。
在本申请实施例中,可以将任务容器按照其配置的任务类型标签划分到不同的自定义描述资源对象中,该自定义描述资源对象具体的任务类型标签可以与任务容器的任务类型标签相匹配,该匹配可以包括任务类型表示相同或者相关联。
步骤240、根据资源对象类型筛选自定义描述资源对象。
具体的,可以提取自定义描述资源对象的类型,若提取自定义描述资源对象的类型与设置的资源对象的类型相同,则对该自定义描述资源对象做进一步处理,若提取自定义描述资源对象的类型与设置的资源对象的类型不同,则不对该自定义描述资源对象进行处理。
步骤250、根据任务队列对各自定义描述资源对象进行排序。
其中,任务队列可以是暂存任务容器的存储空间,任务队列中的自定义描述对象可以采用先入先出的输出决策。
在本申请实施例中,可以将各自定义描述资源对象输入到任务队列,在任务队列中对各自定义描述资源对象进行排序,便于后续的任务容器调度,其中,任务队列的数量可以为一个或多个,例如,可以将相同资源对象类型的自定义描述资源对象存储到相同的任务队列,可以将不同的自定义描述资源对象分别存储到不同的任务队列。
步骤260、确定各集群节点对自定义描述资源对象内任务容器的适应度和承载能力。
步骤270、根据适应度和承载能力配置集群节点与任务容器的调度关系。
进一步的,在上述申请实施例的基础上,根据任务队列对各所述自定义描述资源对象进行排序,包括以下至少之一:在所述任务队列中按照入队顺序对各所述自定义描述资源对象进行排序;在所述任务队列中按照调度优先级对各所述自定义描述资源对象进行排序。
其中,入队顺序可以是自定义描述资源对象到达任务队列的时间顺序,调度优先级可以是自定义描述资源对象被调度先后顺序。
在本申请实施例中,各自定义描述资源对象可以在任务队列中按照其到达任务队列的入队顺序进行排序,先到达任务队列的自定义描述资源对象可以先输出,还可以包括自定义描述资源对象在任务队列中按照其配置的调度优先级进行排序,自定义描述资源对象中调度优先级高的任务容器先输出。进一步的,还可以综合入队顺序以及调度优先级对自定义描述资源对象进行排序,例如,任务队列中按照调度优先级从高到低依次排列各自定义描述资源对象,针对具有相同调度优先级的多个自定义描述资源对象,可以按照上述多个自定义描述资源对象的入队顺序依次在任务队列中进行排序。
图7是本申请实施例提供的另一种容器调度方法的流程图,本申请实施例是在上述申请实施例基础上的具体化,参见图7,本申请实施例体提供的方法具体包括如下步骤:
步骤310、根据任务类型将业务作业对应的任务容器划分到至少一个自定义描述资源对象。
步骤320、在各自定义描述资源对象中获取目标资源对象,并获取各集群节点的资源信息。
其中,目标资源对象可以是多个自定义描述资源对象中当前被处理的资源对象,目标资源对象可以随机获取或者从任务队列中选取。
在本申请实施例中,可以在各个自定义描述资源对象中当前待处理的资源对象记为目标资源对象,同时,可以提取各集群节点的资源信息,该资源信息可以反映不同集群节点当前性能状况,该资源信息可以包括集群节点的资源类型、资源总量、剩余资源量等信息。
步骤330、在各集群节点中剔除状态信息中包含污点标签的集群节点;在各集群节点中剔除资源剩余量小于资源需求量的集群节点。
其中,污点标签可以是集群节点上定义的键值型属性数据,在集群节点的污点标签存在时,该集群节点拒绝调度任务容器。资源需求量可以是表示自定义描述资源对象中任务容器需要的资源量。
具体的,可以通过状态信息对各集群节点进行筛选,该筛选过程可以包括提取各集群节点的状态信息,若提取到的状态信息存在污点标签,则该状态信息对应的集群节点拒绝调度任务容器,则可以将该集群节点剔除。还可以使用资源信息对集群节点进行筛选,具体的筛选过程可以包括提取各集群节点资源信息中的资源剩余量,若资源剩余量小于自定义描述资源对象中任务容器需要的总资源量,则确定集群节点无法容纳任务容器进行调度,则可以将该集群节点剔除。
步骤340、在目标资源对象中提取第一个任务容器记为示例容器。
其中,示例容器可以是目标资源对象中用于衡量容器资源状态的基准任务容器,示例容器可以是目标资源对象中第一个加入的任务容器,进一步的,示例容器的选择不限于选择第一个任务容器,还可以在目标资源对象中随机选择任务容器或者以目标资源对象中所有任务容器的资源平均量构建虚拟的示例容器等。
在本申请实施例中,可以在记为目标资源对象中的自定义描述资源对象中选择第一个任务容器作为示例容器。
步骤350、提取示例容器的资源需求量。
具体的,可以提取示例容器的容器列表,按照容器列表确定各容器对象的不同资源的资源需求量,例如,可以提取示例容器的容量列表中不同容器对象对中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)、内存、磁盘和网络带宽等资源的需求量等,可以将各相同资源的总和作为资源需求量。
步骤360、根据资源需求量与资源信息中资源剩余量的匹配度确定适应度。
其中,资源剩余量可以是各集群节点中不同类型资源剩余未占用的值,例如,集群节点剩余CPU量、剩余GPU量、剩余内存、剩余磁盘以及剩余网络带宽等。
在本申请实施例中,可以基于任务容器的资源需求量以及集群节点的资源剩余量确定出匹配度,例如,可以将资源需求量与资源剩余量的比值作为匹配度,该比值在小于1的情况下越接近1则其越匹配,在此不对通过资源需求量和资源剩余量确定匹配度的方式进行限制。
步骤370、按照资源需求量与资源信息中资源剩余量确定集群节点对任务容器的容纳数量作为承载能力。
其中,容纳数量可以是集群节点中容纳示例容器的数量,该容纳数量可以由资源剩余量和资源需求量的商值确定。
在本申请实施例中,针对各集群节点可以提取其对应的资源剩余量,可以将该资源剩余量与示例容器的资源需求量的商值作为容纳数量,该容纳数量可以是集群节点对任务容器的承载能力。
步骤380、根据适应度和承载能力配置集群节点与任务容器的调度关系。
进一步的,在上述申请实施例的基础上,根据所述资源需求量与所述资源信息中资源剩余量的匹配度确定所述适应度,包括:
按照LeastRequestedPriority策略和BalancedResourceAllocation策略确定所述资源需求量与所述资源剩余量的匹配度。
在本申请实施例中,可以按照LeastRequestedPriority策略和BalancedResourceAllocation策略共同确定出各集群节点与示例容器的匹配度,其中,LeastRequestedPriority策略可以包括由资源需求量与资源总量的比值确定,该匹配度=(资源剩余量-资源需求量)/资源总量,该匹配度的取值越高,则集群节点对目标资源对象中任务容器的适应度越高。而BalancedResourceAllocation策略可以包括各集群节点CPU和内存使用率方差越小的节点权重越高,可以在LeastRequestedPriority策略确定出匹配度后,按照各集群节点的CPU和内存的使用率再使用权重对匹配度进行调整。
进一步的,在上述申请实施例的基础上,按照所述资源需求量与所述资源信息中资源剩余量确定集群节点对所述任务容器的容纳数量,包括:
提取示例容器中的各类资源的资源需求量以及资源信息中各类资源的所述资源剩余量;针对各类资源确定所述资源剩余量与资源需求量的商值,将各商值中的最小值作为容纳数量。
在本申请实施例中,可以提取示例容器中不同资源的资源需求量,例如,CPU、GPU、内存、磁盘和网络带宽的需求量。针对集群节点也分别提取上述类型资源的资源剩余量,对于相同资源,可以将资源剩余量与资源需求量的商作为对应资源的资源容纳数,可以将取值最小的资源容纳数作为集群节点与对于示例容器的容纳数量。
图8是本申请实施例提供的另一种容器调度方法的流程图,本申请实施例是在上述申请实施例基础上的具体化,参见图8,本申请实施例体提供的方法具体包括如下步骤:
步骤410、根据任务类型将业务作业对应的任务容器划分到至少一个自定义描述资源对象。
步骤420、确定各集群节点对自定义描述资源对象内任务容器的适应度和承载能力。
步骤430、针对相同任务容器按照适应度的取值从大到小对各集群节点进行排序。
在本申请实施例中,可以针对相同任务容器的对适应度按照从大到小的顺序进行排序,可以使用适应度与集群节点的对应关系,将按照该排序排列各集群节点,可以理解的是,每个任务容器可以存在各自对应的集群节点构成的排序序列。
步骤440、将集群节点排序中前百分之二十的集群节点作为候选节点。
具体的,可以在集群节点构成的排序中可以将前百分之二十的集群节点选择为候选节点,该候选节点可以用于进行任务容器调度。
步骤450、确定任务容器的容器总数与候选节点的节点总数的商值。
其中,节点总数可以是集群节点中被选择为候选节点的总数,容器总数可以是自定义资源描述对象中包括的任务容器的总数。
在本申请实施例中,可以计算容器总数与节点总数的商值。
步骤460、按照商值和承载能力将任务容器分配到各候选节点。
在本申请实施例中,可以按照以上述过程确定的商值以及承载能力为依据为任务容器分配候选节点,将自定义描述资源对象的任务容器分配到候选节点。例如,可以将商值对应数量的任务容器分配到每个候选节点,且使得每个候选节点中分配到的任务容器的数量不得大于承载能力。
步骤470、建立各任务容器与各自对应的候选节点的调度关系。
具体的,可以在任务容器中存储与其分配到的候选节点的标识信息,可以将使用该标识信息表明任务容器与候选节点的调度关系,例如,可以在任务容器设置一个节点名称字段,可以使用节点名称字段存储任务容器分配到的候选节点的节点名称。
进一步的,在上述申请实施例的基础上,按照所述商值和所述承载能力将所述任务容器分配到各所述候选节点,包括:
按照各候选节点的适应度从高到低的顺序判断候选节点的承载能力是否大于或等于商值;若是,则为候选节点配置商值数量的任务容器;若否,则为候选节点配置承载能力数量的任务容器。
具体的,可以按照承载能力将候选节点进行排序,在排序中依次选择一个候选节点进行判断,确定该候选节点的承载能力是否大于节点总数与容器总数的商值,若大于或等于,则按照为当前的候选节点配置商值数量的任务容器,若小于,则为当前的候选节点配置承载能力数量的任务容器。
进一步的,在上述申请实施例的基础上,确定存在所述任务容器未分配到所述候选节点,则按照所述集群节点排序中次前百分之二十的所述集群节点作为新的候选节点,将未分配的所述任务容器分配到所述新的候选节点。
具体的,在完成候选节点的分配后,可以对各任务容器进行判断,确定任务容器是否均已被分配到候选节点,例如,判断任务容器中节点名称字段是否为空,若是,则确定该任务容器未被分配,这种情况下,当前选择的候选节点无法完成调度所有任务容器的需求,可以在集群节点排序中以当前选择的候选节点为起点,重新在集群节点排序中选择起点后面的百分之二十的集群节点作为新的候选节点,可以将未分配的任务容器按照上述的分配方式分配给新的候选节点。
进一步的,在上述申请实施例的基础上,建立各任务容器与各自对应的候选节点的调度关系,包括:
将任务容器的节点名称字段设置为其对应候选节点的标识信息。
在本申请实施中,调度关系的绑定可以是将任务容器的节点名称字段设置为该任务容器所属的候选节点的标识信息,该标识信息可以包括候选节点的网络地址、节点名称或者节点编号等。
图9是本申请实施例提供的一种容器调度装置的结构示意图,可执行本申请任意实施例提供的容器调度方法,具备执行方法相应的功能模块和有益效果。该装置可以由软件和/或硬件实现,参见图9,本申请实施例提供的装置具体包括如下:
任务划分模块501,用于根据任务类型将业务作业对应的任务容器划分到至少一个自定义描述资源对象。
集群参数模块502,用于确定各所述集群节点对所述自定义描述资源对象内所述任务容器的适应度和承载能力。
调度设置模块503,用于根据所述适应度和所述承载能力配置所述集群节点与所述任务容器的调度关系。
本申请实施例,通过任务划分模块按照业务作业的任务类型划分任务容器到不同的自定义描述资源对象中,集群参数模块确定集群节点针对各自定义描述资源对象的中任务容器的适应度和承载能力,调度设置模块按照适应度和承载能力配置任务容器与集群节点间的调度关系,实现任务容器的批量调度,可提高容器调度效率,依据适应度和承载能力将任务容器分配到不同的集群节点,可提高任务容器与集群节点匹配度,缓解集群节点资源竞争的问题。
进一步的,在上述申请实施例的基础上,装置还包括:
队列处理模块,用于根据任务队列对各所述自定义描述资源对象进行排序。
进一步的,在上述申请实施例的基础上,装置还包括:
资源对象筛选模块,用于根据资源对象类型筛选所述自定义描述资源对象。
进一步的,在上述申请实施例的基础上,任务划分模块501包括:
容器创建单元,用于创建分别对应所述业务作业包括任务的所述任务容器,其中,所述任务容器包括镜像名称、容器启动命令、容器启动参数和任务类型标签。
资源对象单元,用于创建对应所述业务作业的自定义描述资源对象,其中,所述自定义描述资源对象包括名称、作业类型标签和调度优先级标签。
划分执行单元,用于按照所述任务容器的任务类型标签将各所述任务容器划分到具有匹配的作业任务类型标签的所述自定义描述资源对象。
进一步的,在上述申请实施例的基础上,集群参数模块502包括:
在各所述自定义描述资源对象中获取目标资源对象,并获取各所述集群节点的资源信息;
示例确定单元,用于在所述目标资源对象中提取第一个所述任务容器记为示例容器。
资源提取单元,用于提取所述示例容器的资源需求量。
适应度单元,用于根据所述资源需求量与所述资源信息中资源剩余量的匹配度确定所述适应度。
承载能力单元,用于按照所述资源需求量与所述资源信息中资源剩余量确定集群节点对所述任务容器的容纳数量作为所述承载能力。
进一步的,在上述申请实施例的基础上,集群参数模块502还包括:
集群筛选单元,用于在各所述集群节点中剔除状态信息中包含污点标签的集群节点;在各所述集群节点中剔除资源剩余量小于所述资源需求量的集群节点。
进一步的,在上述申请实施例的基础上,适应度单元,具体用于:按照LeastRequestedPriority策略和BalancedResourceAllocation策略确定所述资源需求量与所述资源剩余量的匹配度。
进一步的,在上述申请实施例的基础上,承载能力单元具体用于:提取所述示例容器中的各类资源的所述资源需求量以及所述资源信息中各类资源的所述资源剩余量;针对所述各类资源确定所述资源剩余量与所述资源需求量的商值,将各所述商值中的最小值作为所述容纳数量。
进一步的,在上述申请实施例的基础上,调度设置模块503包括:
排序单元,用于针对相同所述任务容器按照所述适应度的取值从大到小对各所述集群节点进行排序。
候选选择单元,用于将所述集群节点排序中前百分之二十的所述集群节点作为候选节点。
商值确定单元,用于确定所述任务容器的容器总数与所述候选节点的节点总数的商值。
任务分配单元,用于按照所述商值和所述承载能力将所述任务容器分配到各所述候选节点。
关系建立单元,用于建立各所述任务容器与各自对应的所述候选节点的调度关系。
进一步的,在上述申请实施例的基础上,任务分配单元具体用于:按照各所述候选节点的所述适应度从高到低的顺序判断所述候选节点的所述承载能力是否大于或等于所述商值;若是,则为所述候选节点配置所述商值数量的所述任务容器;若否,则为所述候选节点配置所述承载能力数量的所述任务容器。
进一步的,在上述申请实施例的基础上,调度设置模块503还包括:
异常处理单元,用于确定存在所述任务容器未分配到所述候选节点,则按照所述集群节点排序中次前百分之二十的所述集群节点作为新的候选节点,将未分配的所述任务容器分配到所述新的候选节点。
进一步的,在上述申请实施例的基础上,关系建立单元具体用于:将所述任务容器的节点名称字段设置为其对应所述候选节点的标识信息。
进一步的,在上述申请实施例的基础上,队列处理模块中具体用于:在所述任务队列中按照入队顺序对各所述自定义描述资源对象进行排序;在所述任务队列中按照调度优先级对各所述自定义描述资源对象进行排序。
在一个示例性的实施方式中,基于Kubernetes架构的容器调度为例,参见图10,Kubernetes集群由一个Kubernetes Master节点和若干个Kubernetes Node节点组成。在本申请实施例中,Kubernetes Master节点负责对待调度作业进行调度。Kubernetes Node节点负责根据Kubernetes Master节点绑定的结果部署并运行待调度任务。参见图11,实现本申请实施例提供的容器调度装置由六个组件构成,包括:Kubernetes API-Server的容器创建模块、Kubernetes API-Server的事件监听模块、Kubernetes Etcd、基于Kubernetes的批量调度器、基于Kubernetes的批量调度器中的容器调度队列和Kubernetes API-Server的调度绑定模块。其中,Kubernetes API-Server的容器创建模块用于为大数据或人工智能作业中的每一个任务创建与其对应的容器并根据任务类型标签将任务划分至不同的待调度作业中;Kubernetes API-Server的事件监听模块用于监听Kubernetes API-Server的容器创建模块的创建事件并对待调度作业的类型进行校验;Kubernetes Etcd用于存储本发明提出的批量调度装置中各个组件运行的状态信息和集群信息;其中,批量调度装置中各个组件运行的状态信息包括组件运行错误的时间点和错误事件日志;集群信息包括集群各节点和容器的状态信息和资源信息;基于Kubernetes的批量调度器中的容器调度队列用于根据待调度作业的调度优先级以及加入队列的时间点进行调度顺序排序;基于Kubernetes的批量调度器用于对容器调度队列弹出的待调度作业进行调度;基于Kubernetes的批量调度器包括过滤模块、适应度计算模块、承载能力计算模块和调度节点选择模块;过滤模块用于过滤掉不满足状态校验和资源校验的节点;适应度计算模块用于对通过过滤模块的节点进行适应度计算;承载能力计算模块用于对通过过滤模块的节点进行承载能力计算;调度节点选择模块用于根据节点的适应度和承载能力值为待调度作业中的每一个任务选择最合适的调度节点;Kubernetes API-Server的调度绑定模块用于根据基于Kubernetes的批量调度器发送的调度结果,对待调度作业中的每一个任务与其调度节点进行绑定。
图12是本申请实施例提供的一种容器调度方法的流程示例图,参见图12,本申请实施例提供的方法包括如下七个步骤:作业划分、作业类型校验、待调度作业排序、节点过滤及适应度计算、节点承载能力计算、调度节点选择和节点绑定。
首先,Kubernetes API-Server的容器创建模块根据用户提交的作业配置请求创建相应的容器并根据任务类型标签将作业中的任务划分至不同的待调度作业中。Kubernetes API-Server的事件监听模块对待调度作业的类型进行校验。其次,基于Kubernetes的批量调度器中的容器调度队列对通过作业类型检验的待调度作业进行调度优先级排序并从队头弹出待调度作业进行调度。再次,基于Kubernetes的批量调度器的过滤模块和适应度计算模块分别进行节点过滤及适应度计算。接着,基于Kubernetes的批量调度器的承载能力计算模块计算节点的承载能力。随后,基于Kubernetes的批量调度器的调度节点选择模块根据节点的适应度和承载能力为待调度作业中的每一个任务选择最合适的调度节点。最后,Kubernetes API-Server的调度绑定模块将待调度作业的每一个任务和其调度节点进行绑定。
具体的,基于Kubernetes架构的容器批量调度方法的具体处理步骤如下:
第一步:作业划分
Kubernetes API-Server的容器创建模块为大数据或人工智能作业中的每一个任务创建与其对应的容器并根据任务类型标签将任务划分至不同的待调度作业中,参见图13所示。最终划分得到的每个待调度作业中的任务类型一致。
本步骤又可以包括下列步骤:
(1)用户通过Kubernetes中的kubectl命令行工具向Kubernetes API-Server的容器创建模块发送大数据或人工智能作业的创建请求。Kubernetes API-Server的容器创建模块为作业中的每一个任务创建与其对应的Kubernetes Pod(以下简称Pod)。创建的Pod对象包括Pod中容器的镜像名称、容器启动命令、容器启动参数和Pod对应的任务类型标签。
(2)若用户提交的作业类型为大数据或人工智能作业,则Kubernetes API-Server的容器创建模块为该作业创建描述待调度作业的Kubernetes CRD(以下简称CRD)资源对象。创建的CRD资源对象中包括CRD资源对象的名称、CRD资源对象对应的作业类型标签和CRD资源对象的调度优先级标签。Kubernetes API-Server的容器创建模块将具有相同任务类型标签的Pod划分至同一个待调度作业对应的CRD资源对象中。具体而言,KubernetesAPI-Server的容器创建模块遍历大数据或人工智能作业的所有Pod对象,将任务类型标签一致的Pod对象划分至同一个待调度作业对应的CRD资源对象中。其中,CRD资源对象的作业类型标签与它包含的所有Pod对象的任务类型标签一致。
(3)Kubernetes API-Server的容器创建模块将待调度作业对应的CRD资源对象实例化并存储在Kubernetes API-Server中。
第二步:作业类型校验
Kubernetes API-Server的事件监听模块对待调度作业的类型进行校验,参见图14所示。只有通过类型校验的待调度作业才能送入容器调度队列。
本步骤又可以包括下列步骤:
(1)Kubernetes API-Server的事件监听模块监听到Kubernetes API-Server的容器创建模块中的对象创建事件。
(2)Kubernetes API-Server的事件监听模块会对该创建事件中待调度作业对应的对象的类型进行校验。如果该待调度作业创建的资源类型不为描述批量作业的CRD资源类型,那么视为校验不通过。Kubernetes API-Server的事件监听模块将校验结束的时间点和校验错误写入Kubernetes的事件日志并存入Kubernetes Etcd中;否则,视为校验通过,将该待调度作业对应的CRD资源对象送入基于Kubernetes的批量调度器中的容器调度队列中并执行第三步。
第三步:待调度作业排序
根据待调度作业对应的CRD资源对象中定义的作业的调度优先级和它们到达基于Kubernetes的批量调度器中的容器调度队列的时间顺序,基于Kubernetes的批量调度器中的容器调度队列对它们进行调度顺序的排序,参见图15所示。
本步骤又可以包括下列步骤:
(1)基于Kubernetes的批量调度器中的容器调度队列监听待调度作业对应的CRD资源对象的加入事件。新的待调度作业对应的CRD资源对象默认会加入到队尾。
(2)当基于Kubernetes的批量调度器中的容器调度队列收到有新的待调度作业对应的CRD资源对象加入时,会根据队列中所有待调度作业对应的CRD资源对象中的调度优先级标签对它们进行降序排序,即优先级最高的待调度作业对应的CRD资源对象被放置在队头,优先级最低的待调度作业对应的CRD资源对象被放置在队尾。
(3)若基于Kubernetes的批量调度器中的容器调度队列中包含多个优先级相同的待调度作业对应的CRD资源对象,则按照这些CRD资源对象加入基于Kubernetes的批量调度器中的容器调度队列的时间顺序进行排序(即First-In-First-Out策略)。
(4)在所有待调度作业对应的CRD资源对象完成排序后,基于Kubernetes的批量调度器中的容器调度队列从队头弹出待调度作业对应的CRD资源对象执行第四步。
第四步:节点过滤及适应度计算
基于Kubernetes的批量调度器的过滤模块根据集群中的节点信息和待调度作业对应的CRD资源对象的资源信息对集群节点进行过滤初选,随后,基于Kubernetes的批量调度器的适应度计算模块对通过过滤初选的节点进行节点适应度计算,参见图16所示。
本步骤又可以包括下列步骤:
(1)基于Kubernetes的批量调度器监听基于Kubernetes的批量调度器中的容器调度队列的待调度作业对应的CRD资源的弹出事件。
(2)当监听到待调度作业对应的CRD资源对象从基于Kubernetes的批量调度器中的容器调度队列的队头弹出时,基于Kubernetes的批量调度器向Kubernetes Etcd发起请求获取当前集群中各个节点的状态信息和资源信息。节点的状态信息主要表示该节点是否可以被调度;节点的资源信息指的是节点上各类资源的总量和剩余量大小。节点的各类资源包括CPU、GPU、内存、磁盘和网络带宽资源。
(3)基于Kubernetes的批量调度器的过滤模块对获取到的各个节点的状态进行状态校验。若当前节点的状态中包含NoExecute或者NoSchedule污点,表示该节点被设置为不可调度,该节点状态校验不通过;否则,该节点通过状态校验。
(4)基于Kubernetes的批量调度器的过滤模块对通过状态校验的节点进行资源校验。基于Kubernetes的批量调度器的过滤模块从待调度作业中的CRD资源对象取出第一个Pod对象作为示例Pod对象。随后,基于Kubernetes的批量调度器的过滤模块获取该示例Pod对象的各类资源需求量。其中,示例Pod对象需求的各类资源包括CPU、GPU、内存、磁盘和网络带宽资源。对于任意一种类型的资源,若示例Pod对象的资源需求量大于该节点的资源剩余量,则该节点资源校验不通过;否则该节点通过资源校验。
(5)基于Kubernetes的批量调度器的过滤模块将通过状态校验和资源校验的节点存储在可调度节点列表中。
(6)在集群内所有节点完成过滤步骤后,基于Kubernetes的批量调度器的适应度计算模块对可调度节点列表中的节点依次遍历。
(7)对于可调度节点列表中的每一个节点,基于Kubernetes的批量调度器的适应度计算模块会根据待调度作业的CRD资源对象中的示例Pod的各类资源需求量和该节点的各类资源剩余量进行节点适应度计算。其中,节点的适应度数值具体为节点的得分。节点的得分越高表示示例Pod对象部署在该节点上的适合程度越高。节点的得分通过Kubernetes原生的LeastRequestedPriority和BalancedResourceAllocation优选策略计算得到。
(8)基于Kubernetes的批量调度器的适应度计算模块存储可调度节点列表中每个节点的适应度数值并执行第五步。
第五步:节点承载能力计算
基于Kubernetes的批量调度器的承载能力计算模块对可调度节点列表中的每个节点计算其能容纳待调度作业对应的CRD资源对象中待调度Pod对象的数量作为该节点的承载能力,参见图17所示。
本步骤又可以包括下列步骤:
(1)基于Kubernetes的批量调度器的承载能力计算模块从待调度作业对应的CRD资源对象中取出第一个任务对应的Pod对象作为示例Pod对象。基于Kubernetes的批量调度器的承载能力计算模块获取示例Pod对象的各类资源需求量。示例Pod对象的需求的各类资源包括CPU、GPU、内存、磁盘和网络带宽资源。具体是基于Kubernetes的批量调度器的承载能力计算模块获取示例Pod对象中的容器列表并依次遍历该容器列表中的容器对象,获取每个容器对象的各类资源需求量,最后将每个容器对象的各类资源需求量进行累加汇总得到该示例Pod对象的各类资源需求量。
(2)基于Kubernetes的批量调度器的承载能力计算模块获取每个节点上各种类型资源的剩余量大小。节点的各类资源包括CPU、GPU、内存、磁盘和网络带宽资源。
(3)对于每一种类型的资源,基于Kubernetes的批量调度器的承载能力计算模块对节点的资源剩余量和示例Pod对象的资源需求量作商,取整数部分。所有类型资源中商最小的数值就是该节点能够容纳待调度作业对应的CRD资源对象中示例Pod对象的最大数量。
(4)基于Kubernetes的批量调度器的承载能力计算模块将所有类型资源中商最小的数值作为该节点的承载能力值进行存储并执行第六步。
第六步:调度节点选择
基于Kubernetes的批量调度器的调度节点选择模块根据可调度节点列表中节点的适应度和节点的承载能力为待调度CRD资源对象中的每一个任务对应的Pod对象选择最合适的调度节点,参见图18所示。
本步骤又可以包括下列步骤:
(1)基于Kubernetes的批量调度器的调度节点选择模块获取可调度节点列表中每个节点的适应度和承载能力数值。节点的适应度通过第三步节点过滤及适应度计算得到,节点的承载能力通过第四步节点承载能力计算得到。
(2)基于Kubernetes的批量调度器的调度节点选择模块根据每个节点的适应度和承载能力数值为待调度作业对应的CRD资源对象中的每个任务对应的Pod对象选择最合适的调度节点。其中,适应度数值越高的节点表示任务调度在该节点的适应程度高,因此在调度节点选择时会被优先考虑。承载能力数值表示该节点部署待调度作业中任务的数量上限,决定了该节点可调度的任务数量。具体而言,基于Kubernetes的批量调度器的调度节点选择模块首先根据节点的适应度数值对可调度节点列表中的节点进行降序排序。
(3)基于Kubernetes的批量调度器的调度节点选择模块选取可调度节点列表中适应度数值前20%的可调度节点并将它们存储为候选调度节点列表(候选调度节点列表至少包含1个候选节点)。
(4)基于Kubernetes的批量调度器的调度节点选择模块将待调度作业对应的CRD资源对象中包含的任务对应的Pod对象的数量与候选调度节点列表中的节点数量作商以确定候选调度节点列表中的每一个候选调度节点需要部署的待调度作业对应的CRD资源对象中任务对应的Pod对象的数量。
(5)若该商值小于1,说明候选调度节点列表中的节点数量超过待调度作业对应的CRD资源对象任务对应的Pod的数量。因此,从适应度最高的候选调度节点开始,每一个节点部署待调度作业对应的CRD资源对象中一个任务对应的Pod对象,直到待调度作业对应的CRD资源对象中所有的任务对应的Pod都被选定调度节点为止。基于Kubernetes的批量调度器的调度节点选择模块定义名为调度数量的变量,该变量表示候选节点列表中的候选节点分别部署的待调度作业对应的CRD资源对象中任务对应的Pod对象的数量。之后,基于Kubernetes的批量调度器的调度节点选择模块把参与部署待调度任务对应的CRD资源对象的所有节点的调度数量的数值设置为1;否则,候选节点列表中的节点按照此商值部署待调度CRD资源对象。具体而言,对于候选节点列表中的任意节点,若商值大于该节点的承载能力值时,则该节点的调度数量值被设置为该节点的承载能力值;否则,该节点的调度数量值被设置为商值。
(6)若待调度作业对应的CRD资源对象中存在任务对应的Pod对象未找到最合适的调度节点,则待调度作业全体被视为调度失败。基于Kubernetes的批量调度器的调度节点选择模块将调度错误发生的位置和错误的原因写入Kubernetes事件日志并存入Kubernetes Etcd中。在所有候选节点列表中的节点都完成调度数量值的设置后,基于Kubernetes的批量调度器的调度节点选择模块对候选调度节点列表中所有节点的调度数量值进行存储。
(7)基于Kubernetes的批量调度器的调度节点选择模块对候选节点列表中所有节点的调度数量值进行累加汇总。若候选节点列表中所有节点的调度数量总和小于待调度作业对应的CRD资源对象中任务对应的Pod的数量,则基于Kubernetes的批量调度器的调度节点选择模块将候选调度节点列表清空并选取节点适应度数值次高的20%节点,将它们存储为候选调度节点列表并重复步骤4-6直至待调度作业对应的CRD资源对象中的所有任务对应的Pod对象都被指定调度节点为止;若调度数量总和等于待调度CRD资源对象中Pod的数量,则表示待调度作业对应的CRD资源对象中的所有任务对应的Pod对象都找到最合适的调度节点。基于Kubernetes的批量调度器的调度节点选择模块将待调度作业CRD资源对象中的每个任务对应的Pod对象和其对应的调度节点作为调度结果发送给Kubernetes API-Server的调度绑定模块并执行第七步。
第七步:节点绑定
Kubernetes API-Server的调度绑定模块将待调度作业对应的CRD资源对象中的每一个任务对应的Pod对象与其对应的调度节点进行绑定,参见图19所示。
本步骤又可以包括下列步骤:
(1)Kubernetes API-Server的调度绑定模块监听基于Kubernetes的批量调度器的调度结果发送事件。
(2)若监听到来自基于Kubernetes的批量调度器发送的调度结果,KubernetesAPI-Server的调度绑定模块从调度结果中解析出待调度作业对应的CRD资源对象中的每一个任务对应的Pod对象和其调度节点。若Kubernetes API-Server的调度绑定模块解析对象错误,则Kubernetes API-Server的调度绑定模块将解析错误的位置和错误的原因写入Kubernetes事件日志并存入Kubernetes Etcd中。
(3)Kubernetes API-Server的调度绑定模块对待调度作业对应的CRD资源对象中的每一个任务对应的Pod对象和其调度节点进行绑定操作。具体而言,Kubernetes API-Server的调度绑定模块遍历待调度作业对应的CRD资源对象中任务对应的Pod对象并将待调度任务对应的Pod对象中的NodeName字段设置为其调度节点的名称,并异步更新Kubernetes API-Server中该Pod的NodeName字段设置为该节点的名称。若存在待调度作业对应的CRD资源对象中部分任务对应的Pod对象与其调度节点无法绑定的情况,则Kubernetes API-Server的调度绑定模块将绑定错误的位置和错误的原因写入Kubernetes事件日志并存入Kubernetes Etcd中。
(4)当待调度作业对应的CRD资源对象中所有任务对应的Pod对象都完成了与其调度节点的绑定操作,则该待调度作业对应的CRD资源对象完成调度流程。
图20是本申请实施例提供的一种电子设备的结构示意图,该电子设备包括处理器60、存储器61、输入装置62和输出装置63;电子设备中处理器60的数量可以是一个或多个,图20中以一个处理器60为例;电子设备中处理器60、存储器61、输入装置62和输出装置63可以通过总线或其他方式连接,图20中以通过总线连接为例。
存储器61作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请实施例中的容器调度装置对应的模块(任务划分模块501、集群参数模块502和调度设置模块503)。处理器60通过运行存储在存储器61中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的容器调度方法。
存储器61可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器61可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器61可进一步包括相对于处理器60远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置62可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置63可包括显示屏等显示设备。
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种容器调度方法,该方法包括:
根据任务类型将业务作业对应的任务容器划分到至少一个自定义描述资源对象;
确定各所述集群节点对所述自定义描述资源对象内所述任务容器的适应度和承载能力;
根据所述适应度和所述承载能力配置所述集群节点与所述任务容器的调度关系。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
值得注意的是,上述装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。
Claims (14)
1.一种容器调度方法,其中,该方法包括:
根据任务类型将业务作业对应的任务容器划分到至少一个自定义描述资源对象;
确定各集群节点对所述自定义描述资源对象内所述任务容器的适应度和承载能力,包括:在各所述自定义描述资源对象中获取目标资源对象,并获取各所述集群节点的资源信息;在所述目标资源对象中提取第一个所述任务容器记为示例容器;提取所述示例容器的资源需求量;根据所述资源需求量与所述资源信息中资源剩余量的匹配度确定所述适应度;按照所述资源需求量与所述资源信息中资源剩余量确定集群节点对所述任务容器的容纳数量作为所述承载能力;
根据所述适应度和所述承载能力配置所述集群节点与所述任务容器的调度关系。
2.根据权利要求1所述方法,其特征在于,还包括:
根据任务队列对各所述自定义描述资源对象进行排序。
3.根据权利要求1所述方法,其特征在于,还包括:
根据资源对象类型筛选所述自定义描述资源对象。
4.根据权利要求1所述方法,其特征在于,所述根据任务类型将业务作业对应的任务容器划分到至少一个自定义描述资源对象,包括:
创建对应所述业务作业包括任务的所述任务容器,其中,所述任务容器包括镜像名称、容器启动命令、容器启动参数和任务类型标签;
创建对应所述业务作业的自定义描述资源对象,其中,所述自定义描述资源对象包括名称、作业类型标签和调度优先级标签;
按照所述任务容器的任务类型标签将各所述任务容器划分到具有匹配的作业类型标签的所述自定义描述资源对象。
5.根据权利要求1所述方法,其特征在于,还包括:
在各所述集群节点中剔除状态信息中包含污点标签的集群节点;
在各所述集群节点中剔除资源剩余量小于所述资源需求量的集群节点。
6.根据权利要求1所述方法,其特征在于,所述根据所述资源需求量与所述资源信息中资源剩余量的匹配度确定所述适应度,包括:
按照LeastRequestedPriority策略和BalancedResourceAllocation策略确定所述资源需求量与所述资源剩余量的匹配度。
7.根据权利要求1所述方法,其特征在于,所述按照所述资源需求量与所述资源信息中资源剩余量确定集群节点对所述任务容器的容纳数量,包括:
提取所述示例容器中的各类资源的所述资源需求量以及所述资源信息中各类资源的所述资源剩余量;
针对所述各类资源确定所述资源剩余量与所述资源需求量的商值,将各所述商值中的最小值作为所述容纳数量。
8.根据权利要求1所述方法,其特征在于,所述根据所述适应度和所述承载能力配置所述集群节点与所述任务容器的调度关系,包括:
针对相同所述任务容器按照所述适应度的取值从大到小对各所述集群节点进行排序;
将所述集群节点排序中前百分之二十的所述集群节点作为候选节点;
确定所述任务容器的容器总数与所述候选节点的节点总数的商值;
按照所述商值和所述承载能力将所述任务容器分配到各所述候选节点;
建立各所述任务容器与各自对应的所述候选节点的调度关系。
9.根据权利要求8所述方法,其特征在于,所述按照所述商值和所述承载能力将所述任务容器分配到各所述候选节点,包括:
按照各所述候选节点的所述适应度从高到低的顺序判断所述候选节点的所述承载能力是否大于或等于所述商值;
若是,则为所述候选节点配置所述商值数量的所述任务容器;
若否,则为所述候选节点配置所述承载能力数量的所述任务容器。
10.根据权利要求8所述方法,其特征在于,还包括:
确定存在所述任务容器未分配到所述候选节点,则按照所述集群节点排序中次前百分之二十的所述集群节点作为新的候选节点,将未分配的所述任务容器分配到所述新的候选节点。
11.根据权利要求8所述方法,其特征在于,所述建立各所述任务容器与各自对应的所述候选节点的调度关系,包括:
将所述任务容器的节点名称字段设置为其对应所述候选节点的标识信息。
12.根据权利要求2所述方法,其特征在于,所述根据任务队列对各所述自定义描述资源对象进行排序,包括以下至少之一:
在所述任务队列中按照入队顺序对各所述自定义描述资源对象进行排序;
在所述任务队列中按照调度优先级对各所述自定义描述资源对象进行排序。
13.一种电子设备,其特征在于,该电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-12中任一所述方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或多个程序,所述一个或多个程序被所述一个或多个处理器执行,以实现如权利要求1-12中任一所述方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210399975.0A CN114840304B (zh) | 2022-04-15 | 2022-04-15 | 一种容器调度方法、电子设备和存储介质 |
PCT/CN2023/087625 WO2023198061A1 (zh) | 2022-04-15 | 2023-04-11 | 一种容器调度方法、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210399975.0A CN114840304B (zh) | 2022-04-15 | 2022-04-15 | 一种容器调度方法、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114840304A CN114840304A (zh) | 2022-08-02 |
CN114840304B true CN114840304B (zh) | 2023-03-21 |
Family
ID=82566535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210399975.0A Active CN114840304B (zh) | 2022-04-15 | 2022-04-15 | 一种容器调度方法、电子设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114840304B (zh) |
WO (1) | WO2023198061A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114840304B (zh) * | 2022-04-15 | 2023-03-21 | 中兴通讯股份有限公司 | 一种容器调度方法、电子设备和存储介质 |
CN116501947B (zh) * | 2023-06-21 | 2023-10-27 | 中国传媒大学 | 语义搜索云平台的构建方法、系统及设备和存储介质 |
CN117170811B (zh) * | 2023-09-07 | 2024-09-13 | 中国人民解放军国防科技大学 | 一种基于volcano的节点分组作业调度方法及系统 |
CN117240773B (zh) * | 2023-11-15 | 2024-02-02 | 华北电力大学 | 一种电力通信网节点编排方法、装置、设备及介质 |
CN117435324B (zh) * | 2023-11-28 | 2024-05-28 | 江苏天好富兴数据技术有限公司 | 基于容器化的任务调度方法 |
CN118093209B (zh) * | 2024-04-26 | 2024-07-30 | 银河麒麟软件(长沙)有限公司 | 在离线混部动态调整应用优先级配置方法及装置 |
CN118276792A (zh) * | 2024-06-04 | 2024-07-02 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种Kubernetes卷资源自动清理方法及系统 |
CN118349336B (zh) * | 2024-06-18 | 2024-10-18 | 济南浪潮数据技术有限公司 | 云计算平台中任务处理的方法、装置、设备、介质及产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108519911A (zh) * | 2018-03-23 | 2018-09-11 | 上饶市中科院云计算中心大数据研究院 | 一种基于容器的集群管理系统中资源的调度方法和装置 |
CN111538586A (zh) * | 2020-01-23 | 2020-08-14 | 中国银联股份有限公司 | 集群gpu资源管理调度系统、方法以及计算机可读存储介质 |
CN113204428A (zh) * | 2021-05-28 | 2021-08-03 | 北京市商汤科技开发有限公司 | 资源调度方法、装置、电子设备以及计算机可读存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9015724B2 (en) * | 2009-09-23 | 2015-04-21 | International Business Machines Corporation | Job dispatching with scheduler record updates containing characteristics combinations of job characteristics |
CN106325998B (zh) * | 2015-06-30 | 2020-08-25 | 华为技术有限公司 | 一种基于云计算的应用部署的方法和装置 |
US10783046B2 (en) * | 2016-11-22 | 2020-09-22 | Nutanix, Inc. | Executing resource management operations in distributed computing systems |
US11243818B2 (en) * | 2017-05-04 | 2022-02-08 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a scheduler and workload manager that identifies and optimizes horizontally scalable workloads |
CN111522639B (zh) * | 2020-04-16 | 2022-11-01 | 南京邮电大学 | Kubernetes集群架构系统下多维资源调度方法 |
CN111858069B (zh) * | 2020-08-03 | 2023-06-30 | 网易(杭州)网络有限公司 | 集群资源调度的方法、装置及电子设备 |
CN113342477B (zh) * | 2021-07-08 | 2024-05-10 | 河南星环众志信息科技有限公司 | 一种容器组部署方法、装置、设备及存储介质 |
CN114035941A (zh) * | 2021-10-18 | 2022-02-11 | 阿里巴巴(中国)有限公司 | 资源调度系统、方法以及计算设备 |
CN114840304B (zh) * | 2022-04-15 | 2023-03-21 | 中兴通讯股份有限公司 | 一种容器调度方法、电子设备和存储介质 |
-
2022
- 2022-04-15 CN CN202210399975.0A patent/CN114840304B/zh active Active
-
2023
- 2023-04-11 WO PCT/CN2023/087625 patent/WO2023198061A1/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108519911A (zh) * | 2018-03-23 | 2018-09-11 | 上饶市中科院云计算中心大数据研究院 | 一种基于容器的集群管理系统中资源的调度方法和装置 |
CN111538586A (zh) * | 2020-01-23 | 2020-08-14 | 中国银联股份有限公司 | 集群gpu资源管理调度系统、方法以及计算机可读存储介质 |
CN113204428A (zh) * | 2021-05-28 | 2021-08-03 | 北京市商汤科技开发有限公司 | 资源调度方法、装置、电子设备以及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023198061A1 (zh) | 2023-10-19 |
CN114840304A (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114840304B (zh) | 一种容器调度方法、电子设备和存储介质 | |
CN108519911A (zh) | 一种基于容器的集群管理系统中资源的调度方法和装置 | |
CN112667376A (zh) | 任务调度处理方法、装置、计算机设备及存储介质 | |
CN105892996A (zh) | 一种批量数据处理的流水线作业方法及装置 | |
CN111880939A (zh) | 容器动态迁移方法、装置及电子设备 | |
US10929182B2 (en) | Systems and methods for scheduling a set of non-preemptive tasks in a multi-robot environment | |
CN115242598A (zh) | 一种云操作系统部署方法及装置 | |
CN112214321B (zh) | 一种新增微服务的节点选择方法、装置及微服务管理平台 | |
CN113886069A (zh) | 一种资源分配方法、装置、电子设备及存储介质 | |
CN116340005B (zh) | 容器集群的调度方法、装置、设备及存储介质 | |
CN112527449A (zh) | 一种集群节点标签创建方法、系统及电子设备和存储介质 | |
CN115391023A (zh) | 多任务容器集群的计算资源优化方法及装置 | |
CN101446906B (zh) | 一种调度多批处理任务的方法及系统 | |
CN109271236A (zh) | 一种业务调度的方法、装置、计算机存储介质及终端 | |
CN114721824A (zh) | 一种资源分配方法、介质以及电子设备 | |
CN104520811A (zh) | 优化具有多个中央处理器的计算机的启动时间的系统及方法 | |
CN115665157B (zh) | 一种基于应用资源类型的均衡调度方法和系统 | |
CN113626173A (zh) | 调度方法、装置及存储介质 | |
CN113301087A (zh) | 资源调度方法、装置、计算设备和介质 | |
CN114489970A (zh) | Kubernetes中利用Coscheduling插件实现队列排序的方法及系统 | |
CN107368355A (zh) | 虚拟机的动态调度方法和装置 | |
CN110908791B (zh) | 调度方法、调度装置和调度系统 | |
CN114077940A (zh) | 工单的处理方法、装置和计算机可读存储介质 | |
CN112925640A (zh) | 一种集群训练节点分配方法、电子设备 | |
CN112363819A (zh) | 大数据任务动态编排调度方法、装置及计算设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |