CN117170811B - 一种基于volcano的节点分组作业调度方法及系统 - Google Patents
一种基于volcano的节点分组作业调度方法及系统 Download PDFInfo
- Publication number
- CN117170811B CN117170811B CN202311148697.2A CN202311148697A CN117170811B CN 117170811 B CN117170811 B CN 117170811B CN 202311148697 A CN202311148697 A CN 202311148697A CN 117170811 B CN117170811 B CN 117170811B
- Authority
- CN
- China
- Prior art keywords
- node
- volcano
- hybrid
- priority
- group
- 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
- CCEKAJIANROZEO-UHFFFAOYSA-N sulfluramid Chemical group CCNS(=O)(=O)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)C(F)(F)F CCEKAJIANROZEO-UHFFFAOYSA-N 0.000 title claims abstract description 110
- 238000000034 method Methods 0.000 title claims abstract description 30
- 238000010397 one-hybrid screening Methods 0.000 claims abstract description 33
- 238000012827 research and development Methods 0.000 claims description 24
- 238000012423 maintenance Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 3
- 238000011161 development Methods 0.000 claims description 3
- 238000011160 research Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000013077 scoring method Methods 0.000 description 1
Classifications
-
- 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
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本说明书实施例提供一种基于volcano的节点分组作业调度方法及系统,其中,该方法包括建立混合集群,其中,混合集群包括Slurm集群和K8S集群,混合集群包括至少一个混合节点及至少一个K8S节点,混合节点在同一时间供Slurm集群和K8S集群中的一个调度;在Volcano调度器上安装节点组优先级插件;对至少一个Slurm节点、至少一个混合节点及至少一个K8S节点按照资源类型进行分组,生成多个节点组,为每个节点组配置优先级;对于未调度的Pod,Volcano调度器基于每个节点组配置优先级,从至少一个混合节点及至少一个K8S节点中确定用于运行未调度的Pod的目标节点,具有在混合调度场景下,提高资源使用率的优点。
Description
技术领域
本说明书涉及数据处理领域,特别涉及一种基于volcano的节点分组作业调度方法及系统。
背景技术
Volcano是基于Kubernetes的容器批量计算平台,用于在Kubernetes上运行传统的批处理作业,主要用于高性能计算场景。它提供了Kubernetes目前缺少的一套机制,这些机制通常是机器学习大数据应用、科学计算、特效渲染等多种高性能工作负载所需的。作为一个通用批处理平台,Volcano与几乎所有的主流计算框架无缝对接。它还提供了包括基于各种主流架构的CPU、GPU在内的异构设备混合调度能力。volcano具有调度算法多样性、调度性能高效性、无缝对接主流计算框架以及对异构设备的支持。它将这些批处理作业抽象为一个名为Volcano Job的CRD(Custom Resource Definition),并具有一个优秀的调度程序来提高资源利用率。但是,Volcano当前并不支持对节点的分组调,在混合调度场景下,容易导致资源使用率低下。
因此,需要提供一种基于volcano的节点分组作业调度系统,用于在混合调度场景下,提高资源使用率。
发明内容
本说明书实施例之一提供一种基于volcano的节点分组作业调度方法,包括:建立混合集群,其中,所述混合集群包括Slurm集群和K8S集群,所述混合集群包括至少一个混合节点及至少一个K8S节点,所述混合节点在同一时间供所述Slurm集群和所述K8S集群中的一个调度;在Volcano调度器上安装节点组优先级插件;对所述至少一个Slurm节点、至少一个混合节点及至少一个K8S节点按照资源类型进行分组,生成多个节点组,为每个所述节点组配置优先级;对于所述未调度的Pod,所述Volcano调度器基于每个所述节点组配置优先级,从所述至少一个混合节点及至少一个K8S节点中确定用于运行所述未调度的Pod的目标节点。
在一些实施例中,所述多个节点组至少包括混合CPU节点组、混合GPU节点组、K8SCPU节点组及K8S GPU节点组。
在一些实施例中,所述K8S CPU节点组的优先级高于所述混合CPU节点组的优先级;所述混合CPU节点组的优先级高于所述K8S GPU节点组的优先级;所述K8S GPU节点组的优先级高于所述混合GPU节点组的优先级。
在一些实施例中,所述Volcano调度器基于每个所述节点组配置优先级,从所述至少一个混合节点及至少一个K8S节点中确定用于运行所述未调度的Pod的目标节点,包括:从所述至少一个混合节点及至少一个K8S节点中确定满足预选要求的候选节点;基于每个所述节点组配置优先级,从所述满足预选要求的候选节点中确定用于运行所述未调度的Pod的目标节点。
在一些实施例中,所述基于每个所述节点组配置优先级,从所述满足预选要求的候选节点中确定用于运行所述未调度的Pod的目标节点,包括:基于所述每个所述候选节点的相关信息及个所述节点组配置优先级,从所述满足预选要求的候选节点中确定用于运行所述未调度的Pod的目标节点。
在一些实施例中,所述基于所述每个所述候选节点的相关信息及个所述节点组配置优先级,从所述满足预选要求的候选节点中确定用于运行所述未调度的Pod的目标节点,包括:对于每个所述候选节点,基于所述候选节点的相关信息,生成所述候选节点的打分结果;基于所述节点组配置优先级,确定所述候选节点的权重;基于所述权重及所述打分结果,确定所述候选节点的基础分值;基于每个所述候选节点的基础分值,确定用于运行所述未调度的Pod的目标节点。
在一些实施例中,所述候选节点的相关信息的至少包括所述候选节点的资源剩余信息。
在一些实施例中,所述Volcano调度器基于每个所述节点组配置优先级,从所述至少一个混合节点及至少一个K8S节点中确定用于运行所述未调度的Pod的目标节点,包括:判断所述K8S CPU节点组中是否存在所述目标节点;若所述K8S CPU节点组中不存在所述目标节点,判断所述混合CPU节点组中是否存在所述目标节点;若所述混合CPU节点组中不存在所述目标节点,判断所述K8S GPU节点组中是否存在所述目标节点;若所述K8S GPU节点组中不存在所述目标节点,判断所述混合GPU节点组是否存在所述目标节点。
在一些实施例中,所述未调度的Pod用于数值预报应用程序的研发。
本说明书实施例之一提供一种基于volcano的节点分组作业调度系统,包括:混合集群,包括Slurm集群和K8S集群,所述混合集群包括至少一个混合节点及至少一个K8S节点,所述混合节点在同一时间供所述Slurm集群和所述K8S集群中的一个集群调度;Volcano调度器,安装有节点组优先级插件;优先级配置模块,用于对所述至少一个混合节点及至少一个K8S节点按照资源类型进行分组,生成多个节点组,为每个所述节点组配置优先级;所述Volcano调度器还用于基于每个所述节点组配置优先级,从所述至少一个混合节点及至少一个K8S节点中确定用于运行所述未调度的Pod的目标节点。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书一些实施例所示的基于volcano的节点分组作业调度系统的模块图;
图2是根据本说明书一些实施例所示的基于volcano的节点分组作业调度方法的流程图;
图3是根据本说明书一些实施例所示的研发运维环境一体化系统架构的结构示意图;
图4是根据本说明书一些实施例所示的Volcano调度器从至少一个混合节点及至少一个K8S节点中确定用于运行未调度的Pod的目标节点的流程图;
图5是根据本说明书一些实施例所示的混合集群的示意图;
图6是根据本说明书一些实施例所示的在Volcano调度器上安装节点组优先级插件的代码示意图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
先对本说明书涉及的名词进行说明。
Kubernetes:是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。
CRD(Custom Resource Definition):用户自定义资源,是指各种可以运行在Kubernetes上面的软件。Kubernetes拥有一些内置的资源,而CRD则提供了一种方式,使用户可以自定义新的资源,使用CRD可以在不修改K8S源代码的基础上方便的扩展K8S的功能。
Pod(容器组):是kubernetes管理的最小单元,多个容器组合在一起叫做Pod。
Volcano:Volcano是CNCF下首个也是唯一的基于Kubernetes的容器批量计算平台,主要用于高性能计算场景。它提供了Kubernetes目前缺少的一套机制,这些机制通常是机器学习大数据应用、科学计算、特效渲染等多种高性能工作负载所需的。
Volcano Job:简称VcJob,是Volcano自定义的Job资源类型。区别于KubernetesJob,VcJob提供了更多高级功能,如可指定调度器、支持最小运行Pod数、支持Task、支持生命周期管理、支持指定队列、支持优先级调度等。Volcano Job更加适用于机器学习、大数据、科学计算等高性能计算场景。
CPU:中央处理器(Central Processing Unit,简称CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。
GPU:图形处理器(英语:graphics processing unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。
Volcano Controller:Volcano的控制器,在集群上管理Volcano Job。
Volcano Scheduler:Volcano Scheduler通过一系列的动作和插件调度VolcanoJob,并为它找到一个最适合的节点。
NodeGroupPriority Plugin:节点组优先级插件。
CNCF:云原生基金会。
Slurm:Slurm工作调度工具是面向Linux和Unix类似内核的免费和开源工作调度程序,由世界上许多超级计算机和计算机集群使用。
Singularity:Singularity是一个容器平台。它允许您创建和运行以可移植和可重复的方式打包软件的容器。您可以在笔记本电脑上使用Singularity构建容器,然后在世界上许多最大的HPC集群、本地大学或公司集群、单个服务器、云中或大厅下的工作站上运行它。
Podgroup:PodGroup是volcano中的一个资源类型,PodGroup是一组强关联的pod,主要用于批量调度。
图1是根据本说明书一些实施例所示的基于volcano的节点分组作业调度系统的模块图,如图1所示,基于volcano的节点分组作业调度系统可以包括混合集群、Volcano调度器及优先级配置模块。
混合集群可以包括Slurm集群和K8S集群,混合集群包括至少一个混合节点及至少一个K8S节点,混合节点在同一时间供Slurm集群和K8S集群中的一个集群调度。
Volcano调度器可以安装有节点组优先级插件。
优先级配置模块可以用于对至少一个混合节点及至少一个K8S节点按照资源类型进行分组,生成多个节点组,为每个节点组配置优先级。
Volcano调度器还用于基于每个节点组配置优先级,从至少一个混合节点及至少一个K8S节点中确定用于运行未调度的Pod的目标节点。
基于volcano的节点分组作业调度系统可以应用在研发运维环境一体化系统架构,图3是根据本说明书一些实施例所示的研发运维环境一体化系统架构的结构示意图,如图3所示,研发运维环境一体化系统架构包括数值预报研发系统和数值预报业务系统两部分,分别应用于研发场景和业务场景。在数值预报研发系统中,研发用户使用K8S和Docker技术,进行数值预报应用程序的研发、应用镜像的创建、容器的管理等工作;在数值预报业务系统中,一般业务用户使用Slurm和Singularity技术,拉取研发系统构建的预报应用程序并运行作业。引入Volcano,用以处理数值预报批量任务。Volcano能够弥补K8S调度能力的不足,并且支持机器学习、深度学习、大数据等领域的大量主流计算框架。通过将业务使用中的研发使用场景资源、业务使用场景资源、混合使用场景资源以及资源类型不通的CPU、GPU资源的节点进行集群节点分组,在调度层面赋予不同节点组不通的优先级,以实现调度层面的隔离。即只有当高优先级没有节点组满足作业资源需求时才在下一个节点组进行调度。在数值预报平台中该插件主要时针对CPU与GPU节点进行分组。给CPU节点组赋予较高的权重,CPU作业优先调度到CPU节点上,而不去占用GPU导致后续GPU节点因CPU资源不足无法调度GPU作业。对K8S集群中的节点类型进行分组,包含只运行K8S作业的节点与既可以运行K8S作业也可以运行Slurm作业的节点,给前者分配更高的优先级,这样就可以保证K8S作业不过先使用了混合节点资源,导致Slurm作业需求较大时没有足够的资源使用,而K8S节点却还有空余的资源。
关于混合集群、Volcano调度器及优先级配置模块的更多描述,可以参见图1及其相关描述,此处不再赘述。
当前并不支持对节点的分组调度,容易导致资源使用率在某些场景下的低下。例如,当出现集群拥有GPU资源时,调度器可能将CPU作业调度到GPU节点,导致后续GPU作业因为CPU不足无法调度到GPU节点。若要避免这种问题当前用户现有方式可以通过:a.用户虽然可以通过手动指定节点调度到某些节点来提高资源使用,但过程会消耗更多的时间以及人力成本。b.通过配置Volcano Job作业容忍的方式来划分不同的节点,但配置较为繁琐,且每次启动作业都需要配置任务的容忍,时间成本较高。
图2是根据本说明书一些实施例所示的基于volcano的节点分组作业调度方法的流程图,如图2所示,基于volcano的节点分组作业调度方法可以包括以下步骤。。
步骤210,建立混合集群。
图5是根据本说明书一些实施例所示的混合集群的示意图,如图5所示,混合集群包括Slurm集群和K8S集群,混合集群包括至少一个Slurm节点、至少一个混合节点及至少一个K8S节点,混合节点在同一时间供Slurm集群和K8S集群中的一个调度。
步骤220,在Volcano调度器上安装节点组优先级插件。
在一些实施例中,开发Volcano Scheduler官方提供模板的调度插件以生成节点组优先级插件(NodeGroupPriority Plugin)。
安装节点组优先级插件可以具体包括:在Kubernetes集群里面部署Volcano以及实现节点组优先级插件所需要的调度器,部署完Volcano之后,用户需要在VolcanoSchduler Configmap中添加配置节点组优先级插件用以开启节点组优先级功能,监听集群中Volcano Scheduler Configmap和Node配置的变更消息,更改Volcano SchdulerConfigmap和Node配置之后就会被Volcano Scheduler监听到。
在Volcano调度器上安装节点组优先级插件的代码可以如图6所示,添加“-namenodegrouppriority”字段。
步骤230,对至少一个混合节点及至少一个K8S节点按照资源类型进行分组,生成多个节点组,为每个节点组配置优先级。
在一些实施例中,如图5所示,多个节点组至少包括Slurm节点组、混合CPU节点组、混合GPU节点组、K8S CPU节点组及K8S GPU节点组。为每个节点组配置优先级可以具体包括:对所有的Node节点配置格式如“volcano.sh/nodegrouppriority:优先级数字-节点组名称”的标签。其中,“优先级数字”为非负整数,代表了当前节点的优先级,相同优先级的节点为同一节点组,数字越大优先级越高。“节点组名称”为节点组的组名称用以简略描述节点组特征。在k8s集群中的节点按照资源类型分为了CPU和GPU两个类型的节点,按照调度方式分为了3个类型的节点,由于Slurm调度模块不受volcano调度器影响,因此不做资源类型的划分。总共划分出5个类型的节点。其中4个节点组收到volcano调度器的作业调度。priority字段的大小说明了这4个节点组的作业调度优先级。由于gpu资源成本相对昂贵,gpu节点组的优先级设置为较低可以满足发起请求cpu作业时不会先往gpu节点上进行调度。
例如,为混合GPU节点组中的节点添加标签:“volcano.sh/nodegrouppriority:1-nodegroup1”。
在一些实施例中,K8S CPU节点组的优先级高于混合CPU节点组的优先级;混合CPU节点组的优先级高于K8S GPU节点组的优先级;K8S GPU节点组的优先级高于混合GPU节点组的优先级。
步骤240,对于未调度的Pod,Volcano调度器基于每个节点组配置优先级,从至少一个混合节点及至少一个K8S节点中确定用于运行未调度的Pod的目标节点。
其中,未调度的Pod用于数值预报应用程序的研发。
具体的,创建Volcano Job之后,Volcano Controller会根据Volcano Job配置创建Pod,此时Pod处于等待状态,等待Volcano Scheduler进行调度,Volcano Scheduler调度器启动时会加载Volcano Scheduler ConfigMap中配置的调度插件并注册对应的插件并获取所有节点的配置信息,Volcano调度器基于每个节点组配置优先级,从至少一个混合节点及至少一个K8S节点中确定用于运行未调度的Pod的目标节点。
在一些实施例中,从至少一个混合节点及至少一个K8S节点中确定满足预选要求的候选节点;基于每个节点组配置优先级,从满足预选要求的候选节点中确定用于运行未调度的Pod的目标节点。其中,预选要求可以为节点的资源剩余大于未调度的Pod所需资源。
在一些实施例中,基于每个候选节点的相关信息及个节点组配置优先级,从满足预选要求的候选节点中确定用于运行未调度的Pod的目标节点。例如,对于每个候选节点,基于候选节点的相关信息,生成候选节点的打分结果;基于节点组配置优先级,确定候选节点的权重;基于权重及打分结果,确定候选节点的基础分值;基于每个候选节点的基础分值,确定用于运行未调度的Pod的目标节点。可以理解的,优先级越高,候选节点的权重越大。其中,候选节点的相关信息的至少包括候选节点的资源剩余信息,还可以包括其它信息,例如,其他调度策略等。
可以理解的,节点组优先级通过获取对节点配置的标签信息,对不同的节点添加不同的较大权重分值,实现不同节点组的基础分值相差较大,实现节点打分层面的分组。由于其他调度策略的基础分值较小,所以节点的调度策略节点组优先级策略远远大于其他调度策略。
又例如,图4是根据本说明书一些实施例所示的Volcano调度器从至少一个混合节点及至少一个K8S节点中确定用于运行未调度的Pod的目标节点的流程图,如图4所示,Volcano调度器基于每个节点组配置优先级,从至少一个混合节点及至少一个K8S节点中确定用于运行未调度的Pod的目标节点,包括:
判断K8S CPU节点组中是否存在目标节点;
若K8S CPU节点组中不存在目标节点,判断混合CPU节点组中是否存在目标节点;
若混合CPU节点组中不存在目标节点,判断K8S GPU节点组中是否存在目标节点;
若K8S GPU节点组中不存在目标节点,判断混合GPU节点组是否存在目标节点。
从图4可以看出,作业会根据节点组优先级依次判断是否满足资源需求并将作业调度到该节点上。而最后一步节点组资源只有一个方向的判断,资源不足时并未继续向下。这是因为volcano在调度前整体会先通过gang算法判断集群资源是否满足需求,也就是说在进行当前节点组优先级调度时已经判断出当前集群时满足作业资源需求的,不存在左后一步出现资源不足的情况。
可以理解的,当K8S CPU节点组中存在多个候选节点时,可以基于候选节点的相关信息,生成候选节点的打分结果,基于打分结果从K8S CPU节点组中的多个候选节点中确定目标节点。
仅作为示例的,下面对应用本方法进行Pod调度的过程进行说明:
Pod进入调度环节首先是入队环节,该环节会将符合条件的作业过滤安排到队列中,Gang算法的要么所有调度,要么都不调度就会再这个环节进行过滤。
其次进入分配环节,该环节用于处理Pod列表中有资源请求需要调度的Pod,该环节包括预选和优选,其中,预选用于确定候选节点,优选用于从候选节点中确定目标节点,节点组优先级插件将会在分配环节生效,通过添加分配环节的打分方法对节点打分,进而实现节点组优先级功能。由于该环节是对Pod列表中有资源请求的Pod进行的调度,故节点组优先级插件也是只对Pod列表中有资源请求的Pod调度产生效果。
然后会进入抢占环节,该环节用于队列中作业之间,或作业中任务之间的资源抢占。
最后会进入回填环节,该环节处理Pod列表中没有指定资源申请量的Pod。
可以理解的,基于volcano的节点分组作业调度方法至少具备以下有益效果:
1、可以提高Volcano调度环节不同资源类型的节点调度场景场景下的资源利用率。
2、可以提供Volcano与其他调度器(例如,Slurm),提高混合调度场景下的资源使用率。
3、节点的分组调度可以在不同性能节点场景下优先将作业调度到高性能节点组中,提高作业训练效率,减少作业训练时间。
4、减少用户手动指定节点的时间成本,更自动化针对不同场景下的节点硬件环境进行调度。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。
Claims (8)
1.一种基于volcano的节点分组作业调度方法,其特征在于,包括:
建立混合集群,其中,所述混合集群包括Slurm集群和K8S集群,所述混合集群包括至少一个混合节点及至少一个K8S节点,所述混合节点在同一时间供所述Slurm集群和所述K8S集群中的一个调度;
在Volcano调度器上安装节点组优先级插件,具体包括:在Kubernetes集群里面部署Volcano以及实现节点组优先级插件所需要的调度器,部署完Volcano之后,在VolcanoSchduler Configmap中添加配置节点组优先级插件用以开启节点组优先级功能,监听集群中Volcano Scheduler Configmap和Node配置的变更消息,更改Volcano SchdulerConfigmap和Node配置之后就会被Volcano Scheduler监听到;
对所述至少一个混合节点及至少一个K8S节点按照资源类型进行分组,生成多个节点组,为每个所述节点组配置优先级,其中,所述多个节点组至少包括Slurm节点组、混合CPU节点组、混合GPU节点组、K8S CPU节点组及K8S GPU节点组;
对于未调度的Pod,所述Volcano调度器基于每个所述节点组配置优先级,从所述至少一个混合节点及至少一个K8S节点中确定用于运行所述未调度的Pod的目标节点,具体的,创建Volcano Job之后,Volcano Controller会根据Volcano Job配置创建Pod,此时Pod处于等待状态,等待Volcano Scheduler进行调度,Volcano Scheduler调度器启动时会加载Volcano Scheduler ConfigMap中配置的调度插件并注册对应的插件并获取所有节点的配置信息,Volcano调度器基于每个节点组配置优先级,从至少一个混合节点及至少一个K8S节点中确定用于运行未调度的Pod的目标节点;
其中,Volcano调度器基于每个节点组配置优先级,从至少一个混合节点及至少一个K8S节点中确定用于运行未调度的Pod的目标节点,包括:
判断K8S CPU节点组中是否存在目标节点;
若K8S CPU节点组中不存在目标节点,判断混合CPU节点组中是否存在目标节点;
若混合CPU节点组中不存在目标节点,判断K8S GPU节点组中是否存在目标节点;
若K8S GPU节点组中不存在目标节点,判断混合GPU节点组是否存在目标节点;
基于volcano的节点分组作业调度方法应用在研发运维环境一体化系统架构,研发运维环境一体化系统架构包括数值预报研发系统和数值预报业务系统两部分,分别应用于研发场景和业务场景,在数值预报研发系统中,研发用户使用K8S和Docker技术,进行数值预报应用程序的研发、应用镜像的创建、容器的管理;在数值预报业务系统中,用户使用Slurm和Singularity技术,拉取研发系统构建的预报应用程序并运行作业,引入Volcano,用以处理数值预报批量任务。
2.根据权利要求1所述的一种基于volcano的节点分组作业调度方法,其特征在于,所述K8S CPU节点组的优先级高于所述混合CPU节点组的优先级;
所述混合CPU节点组的优先级高于所述K8S GPU节点组的优先级;
所述K8S GPU节点组的优先级高于所述混合GPU节点组的优先级。
3.根据权利要求1或2所述的一种基于volcano的节点分组作业调度方法,其特征在于,所述Volcano调度器基于每个所述节点组配置优先级,从所述至少一个混合节点及至少一个K8S节点中确定用于运行所述未调度的Pod的目标节点,包括:
从所述至少一个混合节点及至少一个K8S节点中确定满足预选要求的候选节点;
基于每个所述节点组配置优先级,从所述满足预选要求的候选节点中确定用于运行所述未调度的Pod的目标节点。
4.根据权利要求3所述的一种基于volcano的节点分组作业调度方法,其特征在于,所述基于每个所述节点组配置优先级,从所述满足预选要求的候选节点中确定用于运行所述未调度的Pod的目标节点,包括:
基于每个所述候选节点的相关信息及个所述节点组配置优先级,从所述满足预选要求的候选节点中确定用于运行所述未调度的Pod的目标节点。
5.根据权利要求4所述的一种基于volcano的节点分组作业调度方法,其特征在于,所述基于每个所述候选节点的相关信息及个所述节点组配置优先级,从所述满足预选要求的候选节点中确定用于运行所述未调度的Pod的目标节点,包括:
对于每个所述候选节点,
基于所述候选节点的相关信息,生成所述候选节点的打分结果;
基于所述节点组配置优先级,确定所述候选节点的权重;
基于所述权重及所述打分结果,确定所述候选节点的基础分值;
基于每个所述候选节点的基础分值,确定用于运行所述未调度的Pod的目标节点。
6.根据权利要求5所述的一种基于volcano的节点分组作业调度方法,其特征在于,所述候选节点的相关信息的至少包括所述候选节点的资源剩余信息。
7.根据权利要求1或2所述的一种基于volcano的节点分组作业调度方法,其特征在于,所述未调度的Pod用于数值预报应用程序的研发。
8.一种基于volcano的节点分组作业调度系统,其特征在于,包括:
混合集群,包括Slurm集群和K8S集群,所述混合集群包括至少一个混合节点及至少一个K8S节点,所述混合节点在同一时间供所述Slurm集群和所述K8S集群中的一个集群调度;
Volcano调度器,安装有节点组优先级插件,具体包括:在Kubernetes集群里面部署Volcano以及实现节点组优先级插件所需要的调度器,部署完Volcano之后,在VolcanoSchduler Configmap中添加配置节点组优先级插件用以开启节点组优先级功能,监听集群中Volcano Scheduler Configmap和Node配置的变更消息,更改Volcano SchdulerConfigmap和Node配置之后就会被Volcano Scheduler监听到;
优先级配置模块,用于对所述至少一个混合节点及至少一个K8S节点按照资源类型进行分组,生成多个节点组,为每个所述节点组配置优先级,其中,所述多个节点组至少包括Slurm节点组、混合CPU节点组、混合GPU节点组、K8S CPU节点组及K8S GPU节点组;
所述Volcano调度器还用于基于每个所述节点组配置优先级,从所述至少一个混合节点及至少一个K8S节点中确定用于运行未调度的Pod的目标节点,具体的,创建Volcano Job之后,Volcano Controller会根据Volcano Job配置创建Pod,此时Pod处于等待状态,等待Volcano Scheduler进行调度,Volcano Scheduler调度器启动时会加载VolcanoScheduler ConfigMap中配置的调度插件并注册对应的插件并获取所有节点的配置信息,Volcano调度器基于每个节点组配置优先级,从至少一个混合节点及至少一个K8S节点中确定用于运行未调度的Pod的目标节点;
其中,Volcano调度器基于每个节点组配置优先级,从至少一个混合节点及至少一个K8S节点中确定用于运行未调度的Pod的目标节点,包括:
判断K8S CPU节点组中是否存在目标节点;
若K8S CPU节点组中不存在目标节点,判断混合CPU节点组中是否存在目标节点;
若混合CPU节点组中不存在目标节点,判断K8S GPU节点组中是否存在目标节点;
若K8S GPU节点组中不存在目标节点,判断混合GPU节点组是否存在目标节点;
基于volcano的节点分组作业调度系统应用在研发运维环境一体化系统架构,研发运维环境一体化系统架构包括数值预报研发系统和数值预报业务系统两部分,分别应用于研发场景和业务场景,在数值预报研发系统中,研发用户使用K8S和Docker技术,进行数值预报应用程序的研发、应用镜像的创建、容器的管理;在数值预报业务系统中,用户使用Slurm和Singularity技术,拉取研发系统构建的预报应用程序并运行作业,引入Volcano,用以处理数值预报批量任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311148697.2A CN117170811B (zh) | 2023-09-07 | 2023-09-07 | 一种基于volcano的节点分组作业调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311148697.2A CN117170811B (zh) | 2023-09-07 | 2023-09-07 | 一种基于volcano的节点分组作业调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117170811A CN117170811A (zh) | 2023-12-05 |
CN117170811B true CN117170811B (zh) | 2024-09-13 |
Family
ID=88944595
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311148697.2A Active CN117170811B (zh) | 2023-09-07 | 2023-09-07 | 一种基于volcano的节点分组作业调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117170811B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114675956A (zh) * | 2022-04-14 | 2022-06-28 | 三峡智控科技有限公司 | 一种基于Kubernetes集群之间Pod配置及调度的方法 |
CN114968566A (zh) * | 2022-05-17 | 2022-08-30 | 南京邮电大学 | 一种面向共享式gpu集群下的容器调度方法及装置 |
CN115408100A (zh) * | 2022-07-21 | 2022-11-29 | 天翼云科技有限公司 | 容器集群调度的方法、装置、设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960585B (zh) * | 2019-02-02 | 2021-05-14 | 浙江工业大学 | 一种基于kubernetes的资源调度方法 |
CN111522639B (zh) * | 2020-04-16 | 2022-11-01 | 南京邮电大学 | Kubernetes集群架构系统下多维资源调度方法 |
CN114510319A (zh) * | 2021-12-29 | 2022-05-17 | 中国科学院信息工程研究所 | 一种基于Kubernetes集群GPU空间共享的方法 |
CN114064296B (zh) * | 2022-01-18 | 2022-04-26 | 北京建筑大学 | 一种Kubernetes调度方法、装置和存储介质 |
CN114840304B (zh) * | 2022-04-15 | 2023-03-21 | 中兴通讯股份有限公司 | 一种容器调度方法、电子设备和存储介质 |
CN114995971A (zh) * | 2022-05-10 | 2022-09-02 | 兴业银行股份有限公司 | 实现kubernetes中pod批量调度方法及系统 |
CN115794370A (zh) * | 2022-09-27 | 2023-03-14 | 广州文远知行科技有限公司 | 一种gpu任务的调配方法、装置、设备和介质 |
-
2023
- 2023-09-07 CN CN202311148697.2A patent/CN117170811B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114675956A (zh) * | 2022-04-14 | 2022-06-28 | 三峡智控科技有限公司 | 一种基于Kubernetes集群之间Pod配置及调度的方法 |
CN114968566A (zh) * | 2022-05-17 | 2022-08-30 | 南京邮电大学 | 一种面向共享式gpu集群下的容器调度方法及装置 |
CN115408100A (zh) * | 2022-07-21 | 2022-11-29 | 天翼云科技有限公司 | 容器集群调度的方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117170811A (zh) | 2023-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9946563B2 (en) | Batch scheduler management of virtual machines | |
US11113782B2 (en) | Dynamic kernel slicing for VGPU sharing in serverless computing systems | |
CN110888743B (zh) | 一种gpu资源使用方法、装置及存储介质 | |
US11816509B2 (en) | Workload placement for virtual GPU enabled systems | |
US9104491B2 (en) | Batch scheduler management of speculative and non-speculative tasks based on conditions of tasks and compute resources | |
CN105940388A (zh) | 用于图形处理单元的工作负荷批量提交机制 | |
CN112860396B (zh) | 一种基于分布式深度学习的gpu调度方法及系统 | |
Senjab et al. | A survey of Kubernetes scheduling algorithms | |
CN101414270A (zh) | 硬件辅助的辅核任务动态优先级调度的实现方法 | |
CN108196946A (zh) | 一种微内核操作系统的分区多核方法 | |
CN115686805A (zh) | Gpu资源共享的方法和装置、调度gpu资源共享的方法和装置 | |
Maruf et al. | Extending resources for avoiding overloads of mixed‐criticality tasks in cyber‐physical systems | |
CN114610474A (zh) | 一种异构超算环境下多策略的作业调度方法及系统 | |
US20220229695A1 (en) | System and method for scheduling in a computing system | |
US7614056B1 (en) | Processor specific dispatching in a heterogeneous configuration | |
Chiang et al. | DynamoML: Dynamic Resource Management Operators for Machine Learning Workloads. | |
CN117170811B (zh) | 一种基于volcano的节点分组作业调度方法及系统 | |
CN114911538B (zh) | 一种运行系统的启动方法及计算设备 | |
CN109426556A (zh) | 一种进程调度方法和装置 | |
CN114896049A (zh) | 电力人工智能平台作业任务调度方法、系统、设备及介质 | |
CN115269140A (zh) | 一种基于容器的云计算工作流调度方法、系统及设备 | |
CN117170812B (zh) | 一种基于研发运维一体化架构的数值预报计算云系统 | |
Chiang et al. | Dynamic Resource Management for Machine Learning Pipeline Workloads | |
Patil et al. | Review on a comparative study of various task scheduling algorithm in cloud computing environment | |
CN105930210A (zh) | Mpi函数调用方法和装置 |
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 |