CN115118723A - 集群调度系统 - Google Patents
集群调度系统 Download PDFInfo
- Publication number
- CN115118723A CN115118723A CN202210606302.8A CN202210606302A CN115118723A CN 115118723 A CN115118723 A CN 115118723A CN 202210606302 A CN202210606302 A CN 202210606302A CN 115118723 A CN115118723 A CN 115118723A
- Authority
- CN
- China
- Prior art keywords
- cluster
- hybrid
- computing node
- node
- churm
- 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.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种集群调度系统。所述集群调度系统包括slurm集群和K8s集群,所述集群调度系统中包括多个混合计算节点,所述混合计算节点归属于所述slurm集群和所述K8s集群,但同一时间任一所述混合计算节点仅供所述slurm集群和所述K8s集群中的一个集群调度。采用本申请提供的集群调度系统可以提高任务执行效率。
Description
技术领域
本申请涉及通信技术领域,特别是涉及一种集群调度系统。
背景技术
目前应用于传统高性能集群的集群调度器主要为slurm,主流的高性能容器为Singularity容器,应用于AI计算的集群调度器主要是Kubernetes(简称K8s),主流的容器为Docker容器。
而在一些高性能计算领域(例如:气象海洋环境研究领域、数值天气预报和数值海洋预报等领域),高性能计算集群往往需要同时支撑并行计算、AI(ArtificialIntelligence,人工智能)等混合负载。
相关技术中,可以在同一集群中同时部署slurm、K8s两种调度器和Singularity和Docker两种容器来实现混合负载。但该种方式存在slurm、K8s两种任务在同一个节点冲突运行,严重影响计算效率。
发明内容
基于此,有必要针对上述技术问题,提供一种能够避免混合负载时,slurm、K8s两种任务在同一个节点冲突运行的集群调度系统。
第一方面,本申请提供了一种集群调度系统,所述集群调度系统包括slurm集群和K8s集群,所述集群调度系统中包括多个混合计算节点,所述混合计算节点归属于所述slurm集群和所述K8s集群,但同一时间任一所述混合计算节点仅供所述slurm集群和所述K8s集群中的一个集群调度。
基于本公开实施例提供的集群调度系统,通过混合计算节点将slurm集群和K8s集群融合在同一个集群调度系统中运行,且同一时间混合计算节点仅供slurm集群或K8s集群调度,避免两种任务同时运行在同一个计算节点的问题,进而可以提高任务执行效率。
在其中一个实施例中,所述slurm集群与所述K8s集群之间具有通信机制,所述slurm集群与所述K8s集群通过所述通信机制占用和释放所述混合计算节点,以使同一时间任一所述混合计算节点仅供所述slurm集群和K8s集群中的一个集群调度。
本公开实施例提供的集群调度系统,在slurm集群和K8s集群之间建立通信机制,通过该通信机制动态获取和释放混合计算节点,实现同一混合计算节点同一时刻最多只能同时服务于一套集群,以避免两种任务同时运行在同一个计算节点的问题,进而可以提高任务执行效率。
在其中一个实施例中,所述slurm集群中的slurm主服务在启动时,遍历全部所述混合计算节点,并执行第一K8s命令,以将所述K8s集群侧所述全部混合计算节点的K8s集群调度状态设置为第一调度状态;
遍历全部所述混合计算节点,根据存在slurm作业的第一混合计算节点执行第二K8s命令,以将所述K8s集群侧所述第一混合计算节点的所述K8s集群调度状态设置为第二调度状态;
其中,所述第一调度状态表征所述混合计算节点能够被所述K8s集群调度,所述第二调度状态表征所述混合计算节点不能被所述K8s集群调度。
本公开实施例提供的集群调度系统,可以避免重新启动前因为故障等原因,导致slurm作业未完成,但未能变更其占用的混合计算节点的K8s集群调度状态,进而导致混合计算节点被误占用,造成的资源浪费的问题。
在其中一个实施例中,在slurm作业前处理过程中,确定对应所述slurm作业的第一目标混合计算节点,根据所述第一目标混合计算节点执行所述第二K8s命令,以将所述K8s集群侧所述第一目标混合计算节点的所述K8s集群调度状态设置为所述第二调度状态。
本公开实施例提供的集群调度系统,在确定第一目标混合计算节点服务于slurm集群后,在slurm作业前处理中,通过第二K8s命令实现slurm集群和K8s集群之间的通信,以使得第一目标混合计算节点不能被K8s集群调用,保证同一时刻同一混合计算节点最多只能同时服务于一套集群,以避免两种任务同时运行在同一个计算节点的问题,进而可以提高任务执行效率。
在其中一个实施例中,在slurm作业后处理过程后,确定对应所述slurm作业的第二目标混合计算节点,根据所述第二目标混合计算节点执行所述第一K8s命令,以将所述K8s集群侧所述第二目标混合计算节点的所述K8s集群调度状态设置为所述第一调度状态。
本公开实施例提供的集群调度系统,在slurm作业完成后,可以通过第二K8s命令实现slurm集群和K8s集群之间的通信,及时释放第二混合计算节点,以使得第二目标混合计算节点能够被K8s集群调用,可以提高资源利用率。
在其中一个实施例中,所述slurm主服务在所述slurm作业前处理过程中和/或所述slurm作业后处理过程中,获取第一全部混合节点列表和所述slurm作业对应的第一计算节点列表,所述第一全部混合节点列表用于记录所述集群调度系统中的全部所述混合计算节点,所述第一计算节点列表用于记录运行所述slurm作业的全部计算节点;
在slurm作业前处理过程中,将所述第一全部混合节点列表与所述第一计算节点列表交集中的计算节点,作为所述第一目标混合计算节点,和/或在slurm作业后处理过程中,将所述第一全部混合节点列表与所述第一计算节点列表交集中的计算节点,作为所述第二目标混合计算节点。
本公开实施例提供的集群调度系统,在slurm作业前处理过程和/或slurm作业后处理过程中,均可以通过获取第一混合节点列表和第一计算节点列表,并对第一混合节点列表和第一计算节点列表求并集的方式,确定第一目标混合计算节点和第二目标混合计算节点,进而根据第一目标混合计算节点和第二目标混合计算节点实现针对混合计算节点的占用和释放,可以提高混合计算节点的占用精度和释放精度,避免两种任务同时运行在同一个计算节点的问题,以及提高资源利用率。
在其中一个实施例中,所述K8s集群中的K8s调度器根据运行有容器组pod的第二混合计算节点执行第一slurm命令,以将所述slurm集群侧所述第二混合计算节点的所述slurm集群调度状态设置为第三调度状态;
所述K8s调度器根据未运行有容器组pod的第三混合计算节点执行第二slurm命令,以将所述slurm集群侧所述第三混合计算节点的所述slurm集群调度状态设置为第四调度状态;
其中,所述第三调度状态表征所述混合计算节点不能被所述slurm集群调度,所述第四调度状态表征所述混合计算节点能够被所述slurm集群调度。
本公开实施例提供的集群调度系统,K8s集群通过slurm命令实现与slurm集群之间的通信,以使得第三目标混合计算节点不能被K8s集群调用,保证同一时刻同一混合计算节点最多只能同时服务于一套集群,以避免两种任务同时运行在同一个计算节点的问题,进而可以提高任务执行效率。
在其中一个实施例中,所述K8s调度器获取第二全部混合节点列表和第二计算节点列表,所述第二全部混合节点列表用于记录所述集群调度系统中的全部所述混合计算节点,所述第二计算节点列表用于记录运行所述容器组pod的作业的全部计算节点;
将所述第二全部混合节点列表和所述第二计算节点列表并集中的计算节点,作为所述第三混合计算节点;
将所述第二全部混合节点列表和所述第二计算节点列表差集中的计算节点,作为所述第四混合计算节点。
本公开实施例提供的集群调度系统,在确定第二混合计算节点和/或确定第三混合计算节点之后,K8s调度器可以通过执行对应的slurm命令与slurm集群通信,以占用或者释放混合计算节点,进而能够提高混合计算节点的占用精度和释放精度,避免两种任务同时运行在同一个计算节点的问题,以及能够提高资源利用率。
在其中一个实施例中,所述K8s集群响应于镜像创建任务,从镜像仓库中获取应用容器引擎Docker镜像文件,在计算节点中基于所述Docker镜像文件创建Docker容器镜像,并将所述Docker容器镜像保存至所述镜像仓库中。
本公开实施例提供的集群调度系统,可以实现Docker容器镜像的制作。
在其中一个实施例中,将所述Docker容器镜像转换为Singularity容器镜像,将所述Singularity容器镜像固化至云平台共享存储系统中,所述云平台共享存储系统挂载于所述集群调度系统中的计算节点之上。
本公开实施例提供的集群调度系统,由于Singularity容器镜像为Docker容器镜像转换而来,也即Singularity容器镜像与Docker容器镜像之间存在一对一的对应关系,进而通过K8s镜像仓库对Docker容器镜像进行管理,即可实现对Singularity容器镜像的管理,提高了对Singularity容器镜像的管理效率。
上述集群调度系统,包括slurm集群和K8s集群,并且集群调度系统中包括多个混合计算节点,混合计算节点归属于slurm集群和K8s集群,但同一时间任一混合计算节点仅供slurm集群和K8s集群中的一个集群调度。基于本公开实施例提供的集群调度系统,通过混合计算节点将slurm集群和K8s集群融合在同一个集群调度系统中运行,且同一时间混合计算节点仅供slurm集群或K8s集群调度,避免两种任务同时运行在同一个计算节点的问题,进而可以提高任务执行效率。
附图说明
图1为一个实施例中集群调度系统的结构框图;
图2为一个实施例中slurm集群实现计算节点调度的示意图;
图3为一个实施例中K8s集群实现计算节点调度的示意图;
图4为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1是根据一示例性实施例示出的一种集群调度系统的结构框图,参照图1所示,集群调度系统包括slurm集群和K8s集群,集群调度系统中包括多个混合计算节点,混合计算节点归属于slurm集群和K8s集群,但同一时间任一混合计算节点仅供所述slurm集群和K8s集群中的一个集群调度。
本公开实施例中,集群调度系统中可以包括slurm集群和K8s集群,其中slurm集群由slurm主服务和集群调度系统中供slurm主服务调度的计算节点组成,K8s集群由K8s调度器和集群调度系统中供K8s调度器调度的计算节点组成,在slurm集群侧和K8s集群侧分别维护有集群计算节点列表,该集群计算节点列表中记录了集群调度系统中归属于相应集群(slurm集群和K8s集群)的计算节点。
其中,slurm集群面向HPC(High Performance Computing,高性能计算机群)作业,K8s集群面向容器镜像创建管理。
举例来说,集群调度系统中可以包括多个混合计算节点,该多个混合计算节点可以为集群调度系统中的部分或者全部计算节点,也即可以将集群调度系统中的部分或者全部计算节点设置为混合计算节点。示例性的,在slurm集群侧和K8s集群侧维护的集群计算节点列表中,特征标识Feature设置为混合标识mix的计算节点,即为混合计算节点。
混合计算节点既属于slurm集群,又属于K8s集群,也即同一混合计算节点同时记录于slurm集群的集群计算节点列表和K8s集群的集群计算节点列表中,但同一时间任一混合计算节点仅供slurm集群和K8s集群中的一个集群调度,也即针对任一混合计算节点,若该混合计算节点已被K8s集群调度,则slurm集群不可调度该混合计算节点,同样,若该混合计算节点已被slurm集群调度,则K8s集群不可调度该混合计算节点。
示例型的,以图1所示示例为例,其中具有三角形图案标识的混合计算节点当前服务于slurm集群,具有圆形团标识的混合计算节点当前服务与k8s集群。
根据本公开实施例提供的集群调度系统,包括slurm集群和K8s集群,并且集群调度系统中包括多个混合计算节点,混合计算节点归属于slurm集群和K8s集群,但同一时间任一混合计算节点仅供slurm集群和K8s集群中的一个集群调度。基于本公开实施例提供的集群调度系统,通过混合计算节点将slurm集群和K8s集群融合在同一个集群调度系统中运行,且同一时间同一混合计算节点仅供slurm集群或K8s集群调度,避免两种任务同时运行在同一个计算节点的问题,进而可以提高任务执行效率。
在一示例性实施例中,slurm集群与K8s集群之间具有通信机制,slurm集群与K8s集群通过通信机制占用和释放混合计算节点,以使同一时间任一混合计算节点仅供slurm集群和K8s集群中的一个集群调度。
本公开实施例中,slurm集群和K8s集群之间建立有通信机制,slurm集群和K8s集群通过该通信机制,告知对方其对混合计算节点的占用和释放。示例性的,slurm集群在占用或者释放混合计算节点的过程中,可以通过该通信机制告知K8s集群其对混合计算节点的占用或者释放,以使得K8s集群在slurm集群占用该混合计算节点后,不能对该混合计算节点进行调度,或者使得K8s集群在slurm集群释放该混合计算节点后,能够对该混合计算节点进行调度。
其中,slurm集群和K8s集群之间的通信机制可以包括执行对方命令。示例性的,在slurm集群占用或者释放混合计算节点的过程中,可以根据占用或者释放的混合计算节点执行相应的K8s命令,以变更将该混合计算节点在K8s集群侧的状态,以使得K8s集群在该混合计算节点的状态表征为slurm集群占用的情况下,不对该混合计算节点进行调度。
同样的,在K8s集群占用或者释放混合计算节点的过程中,可以根据占用或者释放的混合计算节点执行相应的slurm命令,以变更将该混合计算节点在slurm集群侧的状态,以使得slurm集群在该混合计算节点的状态表征为K8s集群占用的情况下,不对该混合计算节点进行调度。
本公开实施例提供的集群调度系统,在slurm集群和K8s集群之间建立通信机制,通过该通信机制动态获取和释放混合计算节点,实现同一混合计算节点同一时刻最多只能同时服务于一套集群,以避免两种任务同时运行在同一个计算节点的问题,进而可以提高任务执行效率。
在一示例性实施例中,slurm集群中的slurm主服务在启动时,遍历全部混合计算节点,并执行第一K8s命令,以将K8s集群侧全部混合计算节点的K8s集群调度状态设置为第一调度状态;
遍历全部混合计算节点,根据存在slurm作业的第一混合计算节点执行第二K8s命令,以将K8s集群侧第一混合计算节点的K8s集群调度状态设置为第二调度状态;
其中,第一调度状态表征混合计算节点能够被K8s集群调度,第二调度状态表征混合计算节点不能被K8s集群调度。
本公开实施例中,K8s集群维护有第一集群计算节点列表,该第一集群计算节点列表中混合计算节点具有K8s集群调度状态,K8s集群调度状态用于表征该混合计算节点是否可以被K8s集群调度,其中,在K8s集群调度状态为第一调度状态的情况下,表征该混合计算节点能够被K8s集群调度,在K8s集群调度状态为第二调度状态的情况下,表征该混合计算节点不能被K8s集群调度。
slurm集群的slurm主服务在图1中标识为slurmctld。slurm主服务在启动时可以遍历全部混合计算节点(该过程可以通过遍历记录全部混合节点的全部混合节点列表实现,以下对此不在赘述),并根据各混合计算节点执行第一K8s命令,该第一K8s命令为用于将K8s集群侧指定混合计算节点的K8s集群调度状态设置为第一调度状态的命令。在slurm主服务根据各混合计算节点执行第一K8s命令后,K8s集群侧全部混合计算节点的K8s集群调度状态均设置为第一调度状态,也即当前全部的混合计算节点均能够被K8s集群调度。
进一步的,slurm主服务再次遍历全部混合计算节点,若当前遍历的混合计算节点中存在slurm作业,则将该混合计算节点作为第一混合计算节点,并根据该第一混合计算节点执行第二K8s命令,以通过该第二K8s命令将K8s集群侧该第一混合计算节点的K8s集群调度状态设置为第二调度状态,也即当前第一混合计算节点不能够被K8s集群调度。其中,第二K8s命令为用于将K8s集群侧指定混合计算节点的K8s集群调度状态设置为第二调度状态的命令。
本公开实施例中,slurm主服务在启动时可以通过第一K8s命令,先将K8s集群侧全部混合计算节点的K8s集群调度状态设置为第一调度状态,再通过第二K8s命令,将K8s集群侧第一混合计算节点的K8s集群调度状态设置为第二调度状态,也即重新设置存在slurm作业的第一混合计算节点的K8s集群调度状态,可以避免重新启动前因为故障等原因,导致存在slurm作业未完成,但未能变更其占用的混合计算节点的K8s集群调度状态,进而导致混合计算节点被误占用,造成的资源浪费的问题,可以提高资料利用率。
在一示例性实施例中,在slurm作业前处理过程中,确定对应slurm作业的第一目标混合计算节点,根据第一目标混合计算节点执行第二K8s命令,以将K8s集群侧第一目标混合计算节点的K8s集群调度状态设置为第二调度状态。
本公开实施例中,在slurm主服务接收到用户提交的slurm作业后,可以从slurm集群能够调用的计算节点中确定运行slurm作业的计算节点,将这些计算节点中的混合计算节点作为第一目标混合计算节点。进而可以根据第一目标混合计算节点执行第二K8s命令,通过该第二K8s命令将K8s集群侧第一目标混合计算节点的K8s集群调度状态设置为第二调度状态,以使得K8s集群不能够调用该第一目标混合计算节点。
本公开实施例提供的集群调度系统,在确定第一目标混合计算节点服务于slurm集群后,在slurm作业前处理中,通过第二K8s命令实现slurm集群和K8s集群之间的通信,以使得第一目标混合计算节点不能被K8s集群调用,保证同一时刻同一混合计算节点最多只能同时服务于一套集群,以避免两种任务同时运行在同一个计算节点的问题,进而可以提高任务执行效率。
在一示例性实施例中,在slurm作业后处理过程后,确定对应slurm作业的第二目标混合计算节点,根据第二目标混合计算节点执行第一K8s命令,以将K8s集群侧第二目标混合计算节点的K8s集群调度状态设置为第一调度状态。
本公开实施例中,slurm作业存在一定的耗时,为避免在该耗时内计算节点的属性产生变化(例如,原本为混合计算节点的计算节点,变更为普通计算节点,和/或原本的普通计算节点变更为混合计算节点),故在slurm作业运行结束后,在slurm作业后处理中,可以从运行slurm作业的计算节点中确定第二目标混合计算节点,将运行slurm作业的计算节点中的混合计算节点作为第二目标混合计算节点。也即,第一目标混合计算节点与第二目标混合计算节点可能相同,也可能不同。
进而可以根据第二目标混合计算节点执行第一K8s命令,通过该第一K8s命令将K8s集群侧第二目标混合计算节点的K8s集群调度状态设置为第一调度状态,以释放被slurm作业占用的第二目标混合计算节点,使得K8s集群可以对该第二目标混合计算节点进行调度。
本公开实施例提供的集群调度系统,在slurm作业完成后,可以通过第二K8s命令实现slurm集群和K8s集群之间的通信,及时释放第二混合计算节点,以使得第二目标混合计算节点能够被K8s集群调用,可以提高资源利用率。
在一示例性实施例中,slurm主服务在slurm作业前处理过程中和/或slurm作业后处理过程中,获取第一全部混合节点列表和slurm作业对应的第一计算节点列表,第一全部混合节点列表用于记录集群调度系统中的全部混合计算节点,第一计算节点列表用于记录运行slurm作业的全部计算节点;
在slurm作业前处理过程中,将第一全部混合节点列表与第一计算节点列表交集中的计算节点,作为第一目标混合计算节点,和/或在slurm作业后处理过程中,将第一全部混合节点列表与第一计算节点列表交集中的计算节点,作为第二目标混合计算节点。
本公开实施例中,slurm主服务在slurm作业前处理过程中,可以获取当前的第一混合节点列表,该当前的第一混合节点列表用于记录集群调度系统中当前的全部混合计算节点。并获取当前运行slurm作业的第一计算节点列表,该第一计算节点列表用于记录当前运行slurm作业的全部计算节点。通过对第一混合节点列表与第一计算节点列表进行求并集,可以得到slurm作业对应的混合节点列表,该混合节点列表中记录的计算节点即为第一目标混合计算节点。
同样的,在slurm作业后处理过程中,可以获取当前的第一混合节点列表,该第一混合节点列表用于记录集群调度系统中当前全部的混合计算节点。并获取当前运行slurm作业的第一计算节点列表,该第一计算节点列表用于记录当前运行slurm作业的全部计算节点。通过对第一混合节点列表与第一计算节点列表进行求并集,可以得到slurm作业对应的混合节点列表,该混合节点列表中记录的计算节点列表即为第二目标混合计算节点。
需要说明的是,在slurm作业前处理过程中的第一混合节点列表与slurm作业后处理过程中的第一混合节点列表可能相同,也可能不同,同理在slurm作业前处理过程中的第一计算节点列表与slurm作业后处理过程中的第一计算节点列表可能相同,也可能不同,进而在slurm作业前处理过程中的混合节点列表与slurm作业后处理过程中的混合节点列表可能相同,也可能不同。
本公开实施例提供的集群调度系统,在slurm作业前处理过程和/或slurm作业后处理过程中,均可以通过获取第一混合节点列表和第一计算节点列表,并对第一混合节点列表和第一计算节点列表求并集的方式,确定第一目标混合计算节点和第二目标混合计算节点,进而根据第一目标混合计算节点和第二目标混合计算节点实现针对混合计算节点的占用和释放,可以提高混合计算节点的占用精度和释放精度,避免两种任务同时运行在同一个计算节点的问题,能够提高资源利用率。
在一示例性实施例中,K8s集群中的K8s调度器根据运行有容器组pod的第二混合计算节点执行第一slurm命令,以将slurm集群侧第二混合计算节点的slurm集群调度状态设置为第三调度状态;
K8s调度器根据未运行有容器组pod的第三混合计算节点执行第二slurm命令,以将slurm集群侧第三混合计算节点的slurm集群调度状态设置为第四调度状态;
其中,第三调度状态表征混合计算节点不能被slurm集群调度,第四调度状态表征混合计算节点能够被slurm集群调度。
本公开实施例中,slurm集群维护有第二集群计算节点列表,该第二集群计算节点列表中混合计算节点具有slurm集群调度状态,slurm集群调度状态用于表征该混合计算节点是否可以被slurm集群调度,其中,在slurm集群调度状态为第三调度状态的情况下,表征该混合计算节点不能被slurm集群调度,在slurm集群调度状态为第四调度状态的情况下,表征该混合计算节点能被slurm集群调度。
K8s集群的K8s调度器(图1中K8s调度器标识为K8s sheduler)可以从K8s集群能够调用的计算节点中确定运行有容器组pod的计算节点,将这些计算节点中的混合计算节点作为第二混合计算节点。进而可以根据第二混合计算节点执行第一slurm命令,通过该第一slurm命令将slurm集群侧第二混合计算节点的slurm集群调度状态设置为第三调度状态,以使得slurm集群不能够调用该第二混合计算节点。其中,第一slurm命令为用于将slurm集群侧指定混合计算节点的slurm集群调度状态设置为第三调度状态的命令。
由于K8s调度器不存在作业前后处理过程,因此K8s调度器无法根据作业的运行情况释放混合计算节点,故K8s调度器可以将未运行有容器组pod的混合计算节点作为第三混合计算节点,进而可以根据该第三混合计算节点执行第二slurm命令,通过该第二slurm命令将slurm集群侧第三混合计算节点的slurm集群调度状态设置为第四调度状态,以使得slurm集群可以调用该第四混合计算节点,其中,第二slurm命令为用于将slurm集群侧指定混合计算节点的slurm集群调度状态设置为第四调度状态的命令。
K8s重复前述操作,可以实时基于混合计算节点是否运行容器组pod,重置各混合计算节点的slurm集群调度状态,以能够及时释放混合计算节点,进而可以提高集群调度系统的资源利用率。
本公开实施例提供的集群调度系统,K8s集群通过slurm命令实现与slurm集群之间的通信,以使得第三目标混合计算节点不能被K8s集群调用,保证同一时刻同一混合计算节点最多只能同时服务于一套集群,以避免两种任务同时运行在同一个计算节点的问题,进而可以提高任务执行效率。
在一示例性实施例中,K8s调度器获取第二全部混合节点列表和第二计算节点列表,第二全部混合节点列表用于记录集群调度系统中的全部混合计算节点,第二计算节点列表用于记录运行容器组pod的作业的全部计算节点;
将第二全部混合节点列表和第二计算节点列表并集中的计算节点,作为第三混合计算节点;将第二全部混合节点列表和第二计算节点列表差集中的计算节点,作为第四混合计算节点。
本公开实施例中,K8s调度器可以获取第二混合节点列表,该第二混合节点列表用于记录集群调度系统中当前的全部混合计算节点。并获取当前运行容器组pod的第二计算节点列表,该第二计算节点列表用于记录当前运行容器组pod的全部计算节点。通过对第二混合节点列表与第二计算节点列表进行求并集,可以得到运行容器组pod的混合计算节点对应的混合节点列表,该混合节点列表中记录的计算节点即为第二混合计算节点。
进一步的,通过对第二混合节点列表与第二计算节点列表进行求差集,得到未包括在第二计算节点列表的混合计算节点,未包括在第二计算节点列表的混合计算节点记录于未运行容器组pod的混合节点列表中,也即该未运行容器组pod的混合节点列表中记录的计算节点即为第三混合计算节点。
在确定第二混合计算节点和/或确定第三混合计算节点之后,K8s调度器可以通过执行对应的slurm命令与slurm集群通信,以占用或者释放混合计算节点,进而能够提高混合计算节点的占用精度和释放精度,避免两种任务同时运行在同一个计算节点的问题,以及能够提高资源利用率。
在一示例性实施例中,K8s集群响应于镜像创建任务,从镜像仓库中获取Docker镜像文件,在计算节点中基于Docker镜像文件创建Docker容器镜像,并将Docker容器镜像保存至镜像仓库中。
本公开实施例中,用户可以通过集群调度系统中的K8s集群创建Docker容器镜像,并将创建得到的Docker容器镜像保存至镜像仓库中。示例性的,K8s调度器接收到镜像创建任务后,可以从镜像仓库中获取Docker镜像文件,将Docker镜像文件加载至对应的计算节点中后,用户可以在该计算节点中完成针对Docker容器镜像的配置,得到Docker容器镜像,并可以将该Docker容器镜像保存至镜像仓库中。
本公开实施例提供的集群调度系统,可以实现Docker容器镜像的制作。
在一示例性实施例中,将Docker容器镜像转换为Singularity容器镜像,将Singularity容器镜像固化至云平台共享存储系统中,云平台共享存储系统挂载于集群调度系统中的计算节点之上。
本公开实施例中,在创建得到Docker容器镜像之后,可以对其转换为Singularity容器镜像,以固化到云平台共享存储系统中。云平台共享存储系统将挂载到集群调度系统的物理集群中,也即云平台共享存储系统挂载到各个计算节点之上,其上的Singularity容器镜像可以被用户实例化后,通过slurm集群调度执行,共享存储目录可以挂载到实例化后的Docker容器中实现数据持久化存储。
本公开实施例提供的集群调度系统,由于Singularity容器镜像为Docker容器镜像转换而来,也即Singularity容器镜像与Docker容器镜像之间存在一对一的对应关系,进而通过K8s镜像仓库对Docker容器镜像进行管理,即可实现对Singularity容器镜像的管理,提高了对Singularity容器镜像的管理效率。
为使本领域技术人员更好的理解本公开实施例,以下通过具体示例对本公开实施例加以说明。
本示例中,部署slurm集群和K8s集群时设置混合计算节点,在slurm集群侧和K8s集群侧,混合计算节点的属性特征配置为Feature=mix。
在slurm集群侧,参照图2所示,slurm主服务启动时检查slurm作业所在计算节点,给K8s集群侧该计算节点设置K8s集群调度状态。示例性的,slurm主服务启动时,可以获取全局混合节点列表,并取消K8s集群侧该全局混合节点列表中记录的各混合计算节点对应的K8s不可调度标签(该过程可以通过将K8s集群侧各混合计算节点的K8s集群调度状态设置为第一调度状态实现,具体过程参照前述实施例的相关描述即可,本公开实施例在此不再赘述)。进一步的,slurm主服务可以再次遍历全局混合节点列表,将运行slurm作业的混合计算节点在K8s集群侧设置不可调度标签(该过程可以通过在K8s集群侧,将运行slurm作业的混合计算节点的K8s集群调度状态设置为第二调度状态实现,具体过程参照前述实施例的相关描述即可,本公开实施例在此不再赘述)。
slurm集群正常提交作业的过程中,slurm主服务在slurm作业前后处理时,可以在K8s集群侧为混合计算节点设置K8s集群调度状态。
slurm集群提交slurm作业,slurm主服务为slurm作业在slurm集群可调用的计算节点中选择合适的计算节点。若为slurm作业选择的计算节点为混合计算节点,则在slurm作业前处理过程中,可以在K8s集群侧为该混合计算节点设置不可调度标识(参照前述实施例的相关描述,本公开实施例在此不再赘述)。
示例性的,slurm主服务获取全局混合节点列表1并保存到文件1,并获取运行该slurm作业的计算节点列表1并保存到文件2,取文件1和文件2并集得到该slurm作业的混合计算节点列表1,遍历该混合计算节点列表1,在K8s集群侧为该混合计算节点列表1中的混合计算节点设置不可调度标签(具体过程参照前述实施例)。
slurm作业运行,在slurm作业后处理过程中,可以将K8s集群侧运行该slurm作业的混合计算节点取消不可调度标识。示例性的,slurm主服务获取全局混合节点列表2并保存到文件3,获取运行该slurm作业的计算节点列表2并保存到文件4,取文件3和文件4并集得到该slurm作业的混合计算节点列表2,遍历该混合计算节点列表2,在K8s集群侧为该混合计算节点列表2中的混合计算节点取消不可调度标签(具体过程参照前述实施例)。
在K8s集群侧,参照图3所示,K8s调度器上的轮询脚本检查混合计算节点上有容器组pod运行时,在slurm集群侧将该混合计算节点的置down(该过程可以通过在slurm集群侧,将运行容器组pod的混合计算节点的slurm集群调度状态设置为第三调度状态实现,具体过程参照前述实施例的相关描述即可,本公开实施例在此不再赘述),否则置为idle(该过程可以通过在slurm集群侧,将未运行容器组pod的混合计算节点的slurm集群调度状态设置为第四调度状态实现,具体过程参照前述实施例的相关描述即可,本公开实施例在此不再赘述)。
示例性的,K8s调度器获取全局混合节点列表3并保存到文件5,获取运行有容器组pod的计算节点列表3并保存到文件6,取文件5和文件6并集得到有pod运行的混合计算节点列表3保存到文件3。遍历混合计算节点列表3并将slurm集群侧,该混合计算节点列表3中的混合计算节点置down,reason为K8s(具体过程参照前述实施例)。
进一步的,可以取文件5和文件6的差集,得到无容器组pod运行的混合计算节点列表4,遍历该混合计算节点列表4,并将slurm集群侧,该混合计算节点列表4中的混合计算节点置idle(具体过程参照前述实施例)。
本公开实施例提供的集群调度系统,同时构建了slurm集群和K8s集群,其中slurm面向HPC用户作业,K8s面向容器镜像创建管理。并且在slurm集群和K8s集群之间建立通信机制,动态获取和释放集群调度系统中的混合计算节点,使得同一混合计算节点最多只能同时服务于一套集群。用户通过K8s集群调度镜像仓库中的镜像来创建新镜像,并保存于镜像仓库再固化到云平台共享存储系统中。云平台共享存储系统将挂载到物理集群中,其上的镜像文件可以被用户实例化后通过slurm调度执行,共享存储目录可以挂载到实例化的容器Docker中实现数据持久化存储。
本公开实施例通过同步机制,可以将slurm和Kubernetes融合在同一个集群运行,而不会造成两种任务同时运行在同一个计算节点,占满资源影响效率的情况,可以提高资源利用率和任务效率,并且基于本方案实现了Docker容器镜像制作,Docker容器镜像转化为Singularity容器镜像,slurm作业调用Singularity容器镜像执行的工作流。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种集群调度方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种集群调度系统,其特征在于,所述集群调度系统包括slurm集群和K8s集群,所述集群调度系统中包括多个混合计算节点,所述混合计算节点归属于所述slurm集群和所述K8s集群,但同一时间任一所述混合计算节点仅供所述slurm集群和所述K8s集群中的一个集群调度。
2.根据权利要求1所述的集群调度系统,其特征在于,所述slurm集群与所述K8s集群之间具有通信机制,所述slurm集群与所述K8s集群通过所述通信机制占用和释放所述混合计算节点,以使同一时间任一所述混合计算节点仅供所述slurm集群和K8s集群中的一个集群调度。
3.根据权利要求1所述的集群调度系统,其特征在于,所述slurm集群中的slurm主服务在启动时,遍历全部所述混合计算节点,并执行第一K8s命令,以将所述K8s集群侧所述全部混合计算节点的K8s集群调度状态设置为第一调度状态;
遍历全部所述混合计算节点,根据存在slurm作业的第一混合计算节点执行第二K8s命令,以将所述K8s集群侧所述第一混合计算节点的所述K8s集群调度状态设置为第二调度状态;
其中,所述第一调度状态表征所述混合计算节点能够被所述K8s集群调度,所述第二调度状态表征所述混合计算节点不能被所述K8s集群调度。
4.根据权利要求3所述的集群调度系统,其特征在于,在slurm作业前处理过程中,确定对应所述slurm作业的第一目标混合计算节点,根据所述第一目标混合计算节点执行所述第二K8s命令,以将所述K8s集群侧所述第一目标混合计算节点的所述K8s集群调度状态设置为所述第二调度状态。
5.根据权利要求3所述的集群调度系统,其特征在于,在slurm作业后处理过程后,确定对应所述slurm作业的第二目标混合计算节点,根据所述第二目标混合计算节点执行所述第一K8s命令,以将所述K8s集群侧所述第二目标混合计算节点的所述K8s集群调度状态设置为所述第一调度状态。
6.根据权利要求4或5所述的集群调度系统,其特征在于,所述slurm主服务在所述slurm作业前处理过程中和/或所述slurm作业后处理过程中,获取第一全部混合节点列表和所述slurm作业对应的第一计算节点列表,所述第一全部混合节点列表用于记录所述集群调度系统中的全部所述混合计算节点,所述第一计算节点列表用于记录运行所述slurm作业的全部计算节点;
在slurm作业前处理过程中,将所述第一全部混合节点列表与所述第一计算节点列表交集中的计算节点,作为所述第一目标混合计算节点,和/或在slurm作业后处理过程中,将所述第一全部混合节点列表与所述第一计算节点列表交集中的计算节点,作为所述第二目标混合计算节点。
7.根据权利要求1所述的集群调度系统,其特征在于,所述K8s集群中的K8s调度器根据运行有容器组pod的第二混合计算节点执行第一slurm命令,以将所述slurm集群侧所述第二混合计算节点的所述slurm集群调度状态设置为第三调度状态;
所述K8s调度器根据未运行有容器组pod的第三混合计算节点执行第二slurm命令,以将所述slurm集群侧所述第三混合计算节点的所述slurm集群调度状态设置为第四调度状态;
其中,所述第三调度状态表征所述混合计算节点不能被所述slurm集群调度,所述第四调度状态表征所述混合计算节点能够被所述slurm集群调度。
8.根据权利要求6所述的集群调度系统,其特征在于,所述K8s调度器获取第二全部混合节点列表和第二计算节点列表,所述第二全部混合节点列表用于记录所述集群调度系统中的全部所述混合计算节点,所述第二计算节点列表用于记录运行所述容器组pod的作业的全部计算节点;
将所述第二全部混合节点列表和所述第二计算节点列表并集中的计算节点,作为所述第三混合计算节点;
将所述第二全部混合节点列表和所述第二计算节点列表差集中的计算节点,作为所述第四混合计算节点。
9.根据权利要求1至3中任一项所述的集群调度系统,其特征在于,所述K8s集群响应于镜像创建任务,从镜像仓库中获取应用容器引擎Docker镜像文件,在计算节点中基于所述Docker镜像文件创建Docker容器镜像,并将所述Docker容器镜像保存至所述镜像仓库中。
10.根据权利要求9所述的集群调度系统,其特征在于,将所述Docker容器镜像转换为Singularity容器镜像,将所述Singularity容器镜像固化至云平台共享存储系统中,所述云平台共享存储系统挂载于所述集群调度系统中的计算节点之上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210606302.8A CN115118723A (zh) | 2022-05-31 | 2022-05-31 | 集群调度系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210606302.8A CN115118723A (zh) | 2022-05-31 | 2022-05-31 | 集群调度系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115118723A true CN115118723A (zh) | 2022-09-27 |
Family
ID=83326679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210606302.8A Withdrawn CN115118723A (zh) | 2022-05-31 | 2022-05-31 | 集群调度系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115118723A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116700933A (zh) * | 2023-08-02 | 2023-09-05 | 之江实验室 | 一种面向异构算力联邦的多集群作业调度系统和方法 |
CN117170812A (zh) * | 2023-09-07 | 2023-12-05 | 中国人民解放军国防科技大学 | 一种基于研发运维一体化架构的数值预报计算云系统 |
CN117972670A (zh) * | 2024-03-28 | 2024-05-03 | 北京大学 | 云端容器镜像的搭建方法及装置 |
-
2022
- 2022-05-31 CN CN202210606302.8A patent/CN115118723A/zh not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116700933A (zh) * | 2023-08-02 | 2023-09-05 | 之江实验室 | 一种面向异构算力联邦的多集群作业调度系统和方法 |
CN116700933B (zh) * | 2023-08-02 | 2023-11-21 | 之江实验室 | 一种面向异构算力联邦的多集群作业调度系统和方法 |
CN117170812A (zh) * | 2023-09-07 | 2023-12-05 | 中国人民解放军国防科技大学 | 一种基于研发运维一体化架构的数值预报计算云系统 |
CN117170812B (zh) * | 2023-09-07 | 2024-05-03 | 中国人民解放军国防科技大学 | 一种基于研发运维一体化架构的数值预报计算云系统 |
CN117972670A (zh) * | 2024-03-28 | 2024-05-03 | 北京大学 | 云端容器镜像的搭建方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115118723A (zh) | 集群调度系统 | |
CN111176697A (zh) | 服务实例部署方法、数据处理方法及集群联邦 | |
CN105700939A (zh) | 一种分布式系统中多线程同步的方法和系统 | |
CN102541661B (zh) | 实现等待地址同步接口的方法和设备 | |
CN107391279B (zh) | 一种消息队列容器创建方法、装置及消息队列容器 | |
CN106201676A (zh) | 一种任务分配方法及装置 | |
CN107515781B (zh) | 一种基于多处理器的确定性任务调度及负载均衡系统 | |
CN115686805A (zh) | Gpu资源共享的方法和装置、调度gpu资源共享的方法和装置 | |
JP2021121921A (ja) | 人工知能開発プラットフォームの管理方法及び装置、媒体 | |
CN114138434A (zh) | 一种大数据任务调度系统 | |
CN116541142A (zh) | 任务调度方法、装置、设备、存储介质及计算机程序产品 | |
CN114860344A (zh) | 容器启动方法、装置、计算机设备和存储介质 | |
CN112039985B (zh) | 一种异构云管理方法及系统 | |
CN112199200A (zh) | 资源调度方法、装置、计算机设备和存储介质 | |
CN117151669A (zh) | 基于工作流引擎执行时间的提醒方法及装置、电子设备 | |
CN112114958A (zh) | 资源隔离方法、分布式平台、计算机设备和存储介质 | |
CN116302433A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN113807539B (zh) | 机器学习与图形算力的高复用方法、系统、介质及终端 | |
CN115357433A (zh) | 容器环境下的数据库备份方法、装置、设备及存储介质 | |
CN115509704A (zh) | 一种任务调度方法、装置、设备及存储介质 | |
CN114579364A (zh) | 一种基于混合云的云原生数据库备份方法 | |
CN113296913A (zh) | 基于单集群的数据处理方法、装置、设备及存储介质 | |
CN107168685B (zh) | 更新脚本的方法及装置、计算机终端 | |
CN115168057B (zh) | 基于k8s集群的资源调度方法及装置 | |
CN117742979B (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20220927 |
|
WW01 | Invention patent application withdrawn after publication |