CN113641480B - 一种基于Kubernetes集群组的任务调度***及方法 - Google Patents
一种基于Kubernetes集群组的任务调度***及方法 Download PDFInfo
- Publication number
- CN113641480B CN113641480B CN202110997268.7A CN202110997268A CN113641480B CN 113641480 B CN113641480 B CN 113641480B CN 202110997268 A CN202110997268 A CN 202110997268A CN 113641480 B CN113641480 B CN 113641480B
- Authority
- CN
- China
- Prior art keywords
- task
- construction
- scheduling
- kubernetes cluster
- pod
- 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
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000010276 construction Methods 0.000 claims abstract description 165
- 230000008569 process Effects 0.000 claims description 21
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 claims description 4
- 230000007246 mechanism Effects 0.000 abstract description 3
- 238000005516 engineering process Methods 0.000 description 5
- 230000010354 integration Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
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/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
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提出了一种基于Kubernetes集群组的任务调度***及方法,通过划分的三个逻辑部署区域(容器持续集成管理平台、用于执行构建任务的Kubernetes集群组、用于部署项目应用的Kubernetes集群组),以及设定的“四个子流程”和“构建任务排队的机制”,解决了企业容器云环境中,构建部署任务的资源争用问题,且本发明设计的用于构建任务的Kubernetes集群组,大大提高了调度池的健壮性和可用性。当某一个集群不可用时,仍然可以调度到其它监控的Kubernetes集群。
Description
技术领域
本发明属于计算机持续集成和容器技术领域,具体地说,涉及一种基于Kubernetes集群组的任务调度***及方法。
背景技术
随着微服务技术的发展,传统的复杂单体应用通过微服务技术被拆分成很多小的、独立的服务。微服务技术在给项目的性能和稳定性带来提升的同时,也大大提高了项目部署的复杂度。传统的单体应用一般只需要部署一个程序包,而大一些的微服务的可能需要部署几十个程序包。
为了提高部署效率,可以用Jenkins来实现代码编译到程序包部署的自动化过程。但是在异构环境中,这种方式仍然可能需要做较多繁杂的运行环境准备、配置文件修改等工作。
容器技术的出现解决了异构环境中应用程序的部署问题。一个容器包含了完整的运行时环境:除了应用程序本身之外,这个应用所需的全部依赖、类库、其他二进制文件、配置文件等,都统一被打入了一个称为容器镜像的包中。通过将应用程序本身,和其依赖容器化,操作***发行版本和其他基础环境造成的差异,都被抽象掉了。
Kubernetes是一个容器编排工具,它负责在大规模服务器环境中管理容器组(Pod)的扩展、复制、健康,并解决 Pod 的启动、负载均衡等问题。
有一些企业采用诸如Jenkins+Kubernetes集成、Openshift、Rancher等方式来实现持续集成。但是这些方式均存在一定的不足:
1.采用Jenkins和Kubernetes集成的方式,虽然可以实现代码编译、镜像构建、镜像部署等功能,但是无法实现多项目多Kubernetes集群的权限管理;
2.采用Openshift技术可以实现代码编译成容器镜像并部署到Kubernetes集群的功能,但是Openshift只能管理一个集群,不支持多集群环境的管理;
3.采用Rancher方式的更关注应用的部署,需要集成Jenkins才能实现在Rancher构建应用。
发明内容
本发明针对现有技术的上述缺陷,提出了一种基于Kubernetes集群组的任务调度***及方法,通过划分的三个逻辑部署区域(容器持续集成管理平台、用于执行构建任务的Kubernetes集群组、用于部署项目应用的Kubernetes集群组),以及设定的“四个子流程”和“构建任务排队的机制”,解决了企业容器云环境中,构建部署任务的资源争用问题,且本发明设计的用于构建任务的Kubernetes集群组,大大提高了调度池的健壮性和可用性。当某一个集群不可用时,仍然可以调度到其它监控的Kubernetes集群。
本发明提出了一种基于Kubernetes集群组的任务调度***,用于在异构环境下构建任务来进行项目的容器化部署,所述任务调度***包括容器持续集成管理平台、用于执行构建任务的Kubernetes集群组、用于部署项目应用的Kubernetes集群组、镜像仓库、代码仓库;
所述容器持续集成管理平台包括构建任务调度中心、任务队列、控制台;
所述用于执行构建任务的Kubernetes集群组包括多个Kubernetes集群,每个用于执行构建任务的Kubernetes集群组中的Kubernetes集群包含多个构建任务;
所述用于部署项目应用的Kubernetes集群组同样包括多个Kubernetes集群,每个用于部署项目应用的Kubernetes集群组中的Kubernetes集群中包括多个项目应用;
所述构建任务分别与镜像仓库、代码仓库、构建任务调度中心连接;
所述项目应用分别与镜像仓库、控制台连接;
所述控制台和任务队列分别与构建任务调度中心连接。
本发明还提出了一种基于Kubernetes集群组的任务调度方法,基于上述的一种基于Kubernetes集群组的任务调度***,用于在异构环境下构建任务来进行项目的容器化部署;所述任务调度方法采用基于Kubernetes集群组的任务调度***执行以下四个子流程:
子流程1、构建任务控制流程:与构建任务调度中心交互,完成任务发送、接收调度结果、查询构建日志、接收构建任务执行结果工作;
子流程2、构建任务队列流程:通过构建任务调度中心发起构建任务队列流程,接收构建任务、并将任务信息存储到构建任务队列;
子流程3、构建任务调度池流程:根据Kubernetes集群组资源情况动态创建调度池,使用调度池中的每个调度单元从任务队列中拉取数据,并根据任务信息发送构建任务Pod消息到Kubernetes集群组;
子流程4、运行构建任务Pod流程:创建构建任务Pod并在Kubernetes集群组中执行构建任务Pod。
为了更好地实现本发明,进一步地,子流程3的具体流程为:
流程3.1、创建调度池:动态根据Kubernetes集群组资源情况创建调度池;所述调度池中包括多个调度单元;
流程3.2、调度单元和Kubernetes集群关联:通过构建任务调度中心将调度单元和Kubernetes集群进行关联;
流程3.3、每个调度单元等待任务队列中的数据:使用调度池中的每个调度单元从任务队列中拉取数据;对于取到了任务数据的调度单元开始后续的任务处理工作;对于没有取到任务数据的调度单元则继续等待任务队列中的数据;任务数据采用队列的方式存储,一个任务数据只会被一个调度单元读取到;
流程3.4、发送创建构建任务Pod消息:调度单元从任务队列中接收到任务数据后,根据任务数据生成构建任务的Pod消息,并将建构任务Pod消息发送到调度单元关联的Kubernetes集群;
流程3.5、返回调度结果:调度单元返回调度结果信息给控制台,所述调度结果信息中包含:任务所在的Kubernetes集群、构建任务Pod;
流程3.6、等待构建任务执行完成:调度单元等待构建任务Pod执行完成;当构建任务Pod执行完成后,调度单元发送任务执行完成消息给控制台,然后继续等待任务队列中的数据。
为了更好地实现本发明,进一步地,所述子流程4具体包括:
流程4.1、创建构建任务Pod:使用Kubernetes集群创建构建任务Pod,每个构建任务Pod启动的容器镜像由构建任务类型决定,构建任务Pod中执行的内容由构建任务参数决定;
流程4.2、执行构建任务:Kubernetes集群运行构建任务Pod,Pod的运行日志即任务执行日志;控制台从Kubernetes集群中抓取任务执行日志数据;
流程4.3、任务Pod执行完成:构建任务调度中心监听到构建任务Pod执行完成后,继续执行等待任务队列数据的工作。
为了更好地实现本发明,进一步地,所述子流程1具体包括:
流程1.1、发起构建任务详情:控制台将构建任务的数据信息发送到构建任务调度中心,构建任务的数据信息按照JSON的格式传输,构建任务的数据信息中包含了构建任务器容器镜像、构建参数列表、构建结果容器镜像名称;
流程1.2、接收调度结果:接收构建任务调度中心发送的构建任务所在的Kubernetes集群及Pod信息;
流程1.3、查询构建任务执行日志:从构建任务所在的Kubernetes集群中查询构建任务执行日志详情;
流程1.4、接收构建任务执行结果:从构建任务调度中心接收构建任务的执行结果。
为了更好地实现本发明,进一步地,所述子流程2具体为:
流程2.1、接收构建任务:从控制台接收流程1.1发送的JSON格式的构建任务数据信息;
流程2.2:存储构建任务:将构建任务项详细信息存储到构建任务队列。
本发明与现有技术相比具有以下优点及有益效果:
(1)通过构建任务排队的机制,解决了在企业容器云环境中,构建部署任务资源争用的问题;
(2)本发明设计的用于构建任务的Kubernetes集群组,大大提高了调度池的健壮性和可用性。当某一个集群不可用时,仍然可以调度到其它监控的Kubernetes集群。
附图说明
图1为本发明***的结构示意图;
图2为本发明的整体流程示意图;
图3为创建调度池的示意图。
具体实施方式
为了更清楚地说明本发明实施例的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,应当理解,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例,因此不应被看作是对保护范围的限定。基于本发明中的实施例,本领域普通技术工作人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“设置”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;也可以是直接相连,也可以是通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
实施例1:
本实施例提出了一种基于Kubernetes集群组的任务调度***,用于在异构环境下构建任务来进行项目的容器化部署;如图1所示,所述任务调度***包括容器持续集成管理平台、用于执行构建任务的Kubernetes集群组、用于部署项目应用的Kubernetes集群组、镜像仓库、代码仓库;
所述容器持续集成管理平台包括构建任务调度中心、任务队列、控制台;
所述用于执行构建任务的Kubernetes集群组包括多个Kubernetes集群,每个用于执行构建任务的Kubernetes集群组中的Kubernetes集群包含多个构建任务;
所述用于部署项目应用的Kubernetes集群组同样包括多个Kubernetes集群,每个用于部署项目应用的Kubernetes集群组中的Kubernetes集群中包括多个项目应用;
所述构建任务分别与镜像仓库、代码仓库、构建任务调度中心连接;
所述项目应用分别与镜像仓库、控制台连接;
所述控制台和任务队列分别与构建任务调度中心连接。
工作原理:业务场景中主要划分了三个逻辑部署区域:容器持续集成管理平台、用于执行构建任务的Kubernetes集群组、用于部署项目应用的Kubernetes集群组。
容器持续集成管理平台:主要由控制台和构建任务调度中心两部分组成。
控制台:主要负责任务的包括任务创建、修改、删除、执行等功能;控制台执行任务的时候需要向构建任务调度中心发起构建任务,当构建任务执行成功之后,再部署服务到用于部署项目应用的Kubernetes集群组。
构建任务调度中心:当构建任务调度中心接收到任务后会将任务存储到任务队列。 任务调度中心会根据策略从任务队列中取出数据,并分配到合适的用于执行构建任务的Kubernetes集群组。
用于执行构建任务的Kubernetes集群组:主要负责接收构建任务,并根据任务信息创建容器组(Pod),在Pod中执行构建任务。执行任务的过程中可能需要从代码仓库下载/更新代码,将代码编译并打包成容器镜像后,再将容器镜像推送到镜像仓库。
用于部署项目应用的Kubernetes集群组:主要负责从容器持续集成管理平台接收部署应用的指令,在项目所属的Kubernetes集群部署应用。部署的过程中需要到镜像仓库拉取镜像。
实施例2:
本实施例提出了一种基于Kubernetes集群组的任务调度方法,基于上述的一种基于Kubernetes集群组的任务调度***,用于在异构环境下构建任务来进行项目的容器化部署;如图2所示,所述任务调度方法采用基于Kubernetes集群组的任务调度***执行以下四个子流程:
子流程1、构建任务控制流程:与构建任务调度中心交互,完成任务发送、接收调度结果、查询构建日志、接收构建任务执行结果工作;
子流程2、构建任务队列流程:通过构建任务调度中心发起构建任务队列流程,接收构建任务、并将任务信息存储到构建任务队列;
子流程3、构建任务调度池流程:根据Kubernetes集群组资源情况动态创建调度池,使用调度池中的每个调度单元从任务队列中拉取数据,并根据任务信息发送构建任务Pod消息到Kubernetes集群组;
子流程4、运行构建任务Pod流程:创建构建任务Pod并在Kubernetes集群组中执行构建任务Pod。
所述子流程1具体包括:
流程1.1、发起构建任务详情:控制台将构建任务的数据信息发送到构建任务调度中心,构建任务的数据信息按照JSON的格式传输,构建任务的数据信息中包含了构建任务器容器镜像、构建参数列表、构建结果容器镜像名称;
流程1.2、接收调度结果:接收构建任务调度中心发送的构建任务所在的Kubernetes集群及Pod信息;
流程1.3、查询构建任务执行日志:从构建任务所在的Kubernetes集群中查询构建任务执行日志详情;
流程1.4、接收构建任务执行结果:从构建任务调度中心接收构建任务的执行结果。
所述子流程2具体为:
流程2.1、接收构建任务:从控制台接收流程1.1发送的JSON格式的构建任务数据信息;
流程2.2:存储构建任务:将构建任务项详细信息存储到构建任务队列。
子流程3的具体流程为:
流程3.1、创建调度池:动态根据Kubernetes集群组资源情况创建调度池;所述调度池中包括多个调度单元;
流程3.2、调度单元和Kubernetes集群关联:通过构建任务调度中心将调度单元和Kubernetes集群进行关联;
流程3.3、每个调度单元等待任务队列中的数据:使用调度池中的每个调度单元从任务队列中拉取数据;对于取到了任务数据的调度单元开始后续的任务处理工作;对于没有取到任务数据的调度单元则继续等待任务队列中的数据;任务数据采用队列的方式存储,一个任务数据只会被一个调度单元读取到;
流程3.4、发送创建构建任务Pod消息:调度单元从任务队列中接收到任务数据后,根据任务数据生成构建任务的Pod消息,并将建构任务Pod消息发送到调度单元关联的Kubernetes集群;
流程3.5、返回调度结果:调度单元返回调度结果信息给控制台,所述调度结果信息中包含:任务所在的Kubernetes集群、构建任务Pod;
流程3.6、等待构建任务执行完成:调度单元等待构建任务Pod执行完成;当构建任务Pod执行完成后,调度单元发送任务执行完成消息给控制台,然后继续等待任务队列中的数据。
所述子流程4具体包括:
流程4.1、创建构建任务Pod:使用Kubernetes集群创建构建任务Pod,每个构建任务Pod启动的容器镜像由构建任务类型决定,构建任务Pod中执行的内容由构建任务参数决定;
流程4.2、执行构建任务:Kubernetes集群运行构建任务Pod,Pod的运行日志即任务执行日志;控制台从Kubernetes集群中抓取任务执行日志数据;
流程4.3、任务Pod执行完成:构建任务调度中心监听到构建任务Pod执行完成后,继续执行等待任务队列数据的工作。
工作原理:从图2可以看出,这个流程中存在四个子流程:
1.控制台发起的“构建任务控制流程流程”,主要负责与构建任务调度中心交互,完成任务发送、接收调度结果、查询构建日志、接收构建任务执行结果等工作。
2.构建任务调度中心发起的“构建任务队列流程”,主要负责接收构建任务、并将任务信息存储到构建任务队列。
3.构建任务调度中心发起的“构建任务调度池流程”,主要负责动态根据Kubernetes集群组资源情况创建调度池,调度池中的每个调度单元负责从任务队列拉取数据,并根据任务信息发送构建任务Pod消息到Kubernetes集群组。
4.Kubernetes集群组中的“运行构建任务Pod流程”,主要负责创建构建任务Pod、执行构建任务。
其中:
构建任务控制流程分步详细说明:
1.发起构建任务详情:控制台将构建任务详细信息发送到构建任务调度中心,数据按照JSON的格式传输,数据中包含了构建任务器容器镜像、构建参数列表、构建结果容器镜像名称等信息。
2.接收调度结果:负责接收调度中心发送的构建任务所在的Kubernetes集群及Pod信息。
3.查询构建任务执行日志:从任务所在的Kubernetes集群中查询构建任务执行日志详情。
4.接收构建任务执行结果:从调度中心接收构建任务的执行结果。
构建任务队列流程分步详细说明:
1.接收构建任务:从控制台接收JSON格式的构建任务详细信息。
2.存储构建任务:将构建任务项详细信息存储到构建任务队列。
构建任务调度池流程分步详细说明:
1.创建调度池:动态根据Kubernetes集群组资源情况创建调度池。
2.调度单元和Kubernetes集群关联:调度中心负责将调度池中的调度单元和Kubernetes集群关联起来;
3.每个调度单元等待任务队列中的数据:调度池中的每个调度单元从任务队列中拉取数据;取到任务数据的调度单元开始后续的任务处理工作;没有取到任务数据的调度单元则继续等待任务队列中的数据;任务数据采用队列的方式存储,一个任务数据只会有一个调度单元能读取到,不会存在一个任务数据被多次读取的问题。
4.发送创建构建任务Pod消息:调度单元从任务队列中接收到任务数据后,根据任务数据生成构建任务的Pod消息,并将建构任务Pod消息发送到调度单元关联的Kubernetes集群。
5.返回调度结果:调度单元返回调度结果信息给控制台,调度结果信息中包含:任务所在的Kubernetes集群、构建任务Pod。
6.等待构建任务执行完成:调度单元等待构建任务Pod执行完成;当构建任务Pod执行完成后,调度单元发送任务执行完成消息给控制台,然后继续等待任务队列中的数据。
运行构建任务Pod流程分步详细说明:
1.创建构建任务Pod: Kubernetes集群创建构建任务Pod,每个构建任务Pod启动的容器镜像由构建任务类型决定,任务中执行的详细内容由构建任务参数决定。
2.执行构建任务:Kubernetes集群运行构建任务Pod,Pod的运行日志即任务执行日志;控制台从Kubernetes集群中抓取任务执行日志数据。
3.任务Pod执行完成:调度中心监听到构建任务Pod执行完成后,继续执行等待任务队列数据的工作。
本实施例的其他部分与上述实施例1相同,故不再赘述。
实施例3:
本实施例在上述实施例2的基础上,关于调度池的创建:
构建任务调度池中存储的是“调度单元”对象。每个“调度单元”对象都与一个Kubernetes集群关联。构建任务调度池利用“对象池”技术把“调度单元”对象存储到内存中。对象池的实现方式有多种,Apache Commons Pool就是其中一种实现方式。
构建任务调度池的大小由Kubernetes集群组中每个Kubernetes集群配置的调度容量决定。每个Kubernetes集群在加入到容器持续集成管理平台的时候,都会根据Kubernetes集群资源的大小设置该集群的调度容量。比如,某个Kubernetes集群的调度容量为10,表示该Kubernetes集群最多同时能运行10个构建任务。调度池大小的计算公式如下:
调度中心监控每个Kubernetes集群的健康状态及容量变化,并根据变化动态调整调度池的大小。
如图3所示,调度池中的每个调度单元和一个健康的Kubernetes集群关联。当调度中心监控到Kubernetes集群不可用时,将该集群关联的调度单元从调度池中清除。当调度单元接收到任务队列中的数据后,在调度单元所关联的Kubernetes集群中根据任务数据创建Pod并执行任务。
本实施例的其他部分与上述实施例2相同,故不再赘述。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。
Claims (5)
1.一种基于Kubernetes集群组的任务调度方法,用于在异构环境下构建任务来进行项目的容器化部署;其特征在于,采用基于Kubernetes集群组的任务调度***执行以下四个子流程:
子流程1、构建任务控制流程:与构建任务调度中心交互,完成任务发送、接收调度结果、查询构建日志、接收构建任务执行结果工作;
子流程2、构建任务队列流程:通过构建任务调度中心发起构建任务队列流程,接收构建任务、并将任务信息存储到构建任务队列;
子流程3、构建任务调度池流程:根据Kubernetes集群组资源情况动态创建调度池,使用调度池中的每个调度单元从任务队列中拉取数据,并根据任务信息发送构建任务Pod消息到Kubernetes集群组;
子流程4、运行构建任务Pod流程:创建构建任务Pod并在Kubernetes集群组中执行构建任务Pod;
子流程3的具体流程为:
流程3.1、创建调度池:动态根据Kubernetes集群组资源情况创建调度池;所述调度池中包括多个调度单元;
流程3.2、调度单元和Kubernetes集群关联:通过构建任务调度中心将调度单元和Kubernetes集群进行关联;
流程3.3、每个调度单元等待任务队列中的数据:使用调度池中的每个调度单元从任务队列中拉取数据;对于取到了任务数据的调度单元开始后续的任务处理工作;对于没有取到任务数据的调度单元则继续等待任务队列中的数据;任务数据采用队列的方式存储,一个任务数据只会被一个调度单元读取到;
流程3.4、发送创建构建任务Pod消息:调度单元从任务队列中接收到任务数据后,根据任务数据生成构建任务的Pod消息,并将建构任务Pod消息发送到调度单元关联的Kubernetes集群;
流程3.5、返回调度结果:调度单元返回调度结果信息给控制台,所述调度结果信息中包含:任务所在的Kubernetes集群、构建任务Pod;
流程3.6、等待构建任务执行完成:调度单元等待构建任务Pod执行完成;当构建任务Pod执行完成后,调度单元发送任务执行完成消息给控制台,然后继续等待任务队列中的数据。
2.如权利要求1所述的一种基于Kubernetes集群组的任务调度方法,其特征在于,所述子流程4具体包括:
流程4.1、创建构建任务Pod:使用Kubernetes集群创建构建任务Pod,每个构建任务Pod启动的容器镜像由构建任务类型决定,构建任务Pod中执行的内容由构建任务参数决定;
流程4.2、执行构建任务:Kubernetes集群运行构建任务Pod,Pod的运行日志即任务执行日志;控制台从Kubernetes集群中抓取任务执行日志数据;
流程4.3、任务Pod执行完成:构建任务调度中心监听到构建任务Pod执行完成后,继续执行等待任务队列数据的工作。
3.如权利要求1所述的一种基于Kubernetes集群组的任务调度方法,其特征在于,所述子流程1具体包括:
流程1.1、发起构建任务详情:控制台将构建任务的数据信息发送到构建任务调度中心,构建任务的数据信息按照JSON的格式传输,构建任务的数据信息中包含了构建任务器容器镜像、构建参数列表、构建结果容器镜像名称;
流程1.2、接收调度结果:接收构建任务调度中心发送的构建任务所在的Kubernetes集群及Pod信息;
流程1.3、查询构建任务执行日志:从构建任务所在的Kubernetes集群中查询构建任务执行日志详情;
流程1.4、接收构建任务执行结果:从构建任务调度中心接收构建任务的执行结果。
4.如权利要求1所述的一种基于Kubernetes集群组的任务调度方法,其特征在于,所述子流程2具体为:
流程2.1、接收构建任务:从控制台接收JSON格式的构建任务数据信息;
流程2.2:存储构建任务:将构建任务项详细信息存储到构建任务队列。
5.一种基于Kubernetes集群组的任务调度***,用于在异构环境下构建任务来进行项目的容器化部署,该***实现如权利要求1-4任一项所述的基于Kubernetes集群组的任务调度方法;其特征在于,包括容器持续集成管理平台、用于执行构建任务的Kubernetes集群组、用于部署项目应用的Kubernetes集群组、镜像仓库、代码仓库;
所述容器持续集成管理平台包括构建任务调度中心、任务队列、控制台;
所述用于执行构建任务的Kubernetes集群组包括多个Kubernetes集群,每个用于执行构建任务的Kubernetes集群组中的Kubernetes集群包含多个构建任务;
所述用于部署项目应用的Kubernetes集群组同样包括多个Kubernetes集群,每个用于部署项目应用的Kubernetes集群组中的Kubernetes集群中包括多个项目应用;
所述构建任务分别与镜像仓库、代码仓库、构建任务调度中心连接;
所述项目应用分别与镜像仓库、控制台连接;
所述控制台和任务队列分别与构建任务调度中心连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110997268.7A CN113641480B (zh) | 2021-08-27 | 2021-08-27 | 一种基于Kubernetes集群组的任务调度***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110997268.7A CN113641480B (zh) | 2021-08-27 | 2021-08-27 | 一种基于Kubernetes集群组的任务调度***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113641480A CN113641480A (zh) | 2021-11-12 |
CN113641480B true CN113641480B (zh) | 2023-12-15 |
Family
ID=78424218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110997268.7A Active CN113641480B (zh) | 2021-08-27 | 2021-08-27 | 一种基于Kubernetes集群组的任务调度***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113641480B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017045424A1 (zh) * | 2015-09-18 | 2017-03-23 | 乐视控股(北京)有限公司 | 一种应用程序部署***及部署方法 |
CN106997297A (zh) * | 2017-03-31 | 2017-08-01 | 广东亿迅科技有限公司 | 一种基于DevOps的软件开发管理平台及方法 |
CN107766136A (zh) * | 2017-09-30 | 2018-03-06 | 南威软件股份有限公司 | 一种任务集群调度管理的方法 |
CN108388472A (zh) * | 2018-03-01 | 2018-08-10 | 吉林大学 | 一种基于Docker集群的弹性任务调度***及方法 |
WO2019095936A1 (zh) * | 2017-11-15 | 2019-05-23 | 腾讯科技(深圳)有限公司 | 容器镜像的构建方法、***、服务器、装置及存储介质 |
CN110764786A (zh) * | 2019-12-27 | 2020-02-07 | 凯泰铭科技(北京)有限公司 | 一种云计算环境下优化部署资源与软件交付平台 |
CN112199164A (zh) * | 2020-10-19 | 2021-01-08 | 国网新疆电力有限公司信息通信公司 | 一种保证容器镜像一致性的方法 |
CN112416524A (zh) * | 2020-11-25 | 2021-02-26 | 电信科学技术第十研究所有限公司 | 基于docker和kubernetes离线的跨平台的CI/CD的实现方法及装置 |
CN112527349A (zh) * | 2020-12-02 | 2021-03-19 | 航天科工网络信息发展有限公司 | 动态部署策略优化及持续部署业务保障*** |
CN113176929A (zh) * | 2021-04-29 | 2021-07-27 | 成都商高智能科技有限公司 | 一种国产操作***的容器化部署方法及平台 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108920259B (zh) * | 2018-03-30 | 2022-06-24 | 华为云计算技术有限公司 | 深度学习作业调度方法、***和相关设备 |
-
2021
- 2021-08-27 CN CN202110997268.7A patent/CN113641480B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017045424A1 (zh) * | 2015-09-18 | 2017-03-23 | 乐视控股(北京)有限公司 | 一种应用程序部署***及部署方法 |
CN106997297A (zh) * | 2017-03-31 | 2017-08-01 | 广东亿迅科技有限公司 | 一种基于DevOps的软件开发管理平台及方法 |
CN107766136A (zh) * | 2017-09-30 | 2018-03-06 | 南威软件股份有限公司 | 一种任务集群调度管理的方法 |
WO2019095936A1 (zh) * | 2017-11-15 | 2019-05-23 | 腾讯科技(深圳)有限公司 | 容器镜像的构建方法、***、服务器、装置及存储介质 |
CN108388472A (zh) * | 2018-03-01 | 2018-08-10 | 吉林大学 | 一种基于Docker集群的弹性任务调度***及方法 |
CN110764786A (zh) * | 2019-12-27 | 2020-02-07 | 凯泰铭科技(北京)有限公司 | 一种云计算环境下优化部署资源与软件交付平台 |
CN112199164A (zh) * | 2020-10-19 | 2021-01-08 | 国网新疆电力有限公司信息通信公司 | 一种保证容器镜像一致性的方法 |
CN112416524A (zh) * | 2020-11-25 | 2021-02-26 | 电信科学技术第十研究所有限公司 | 基于docker和kubernetes离线的跨平台的CI/CD的实现方法及装置 |
CN112527349A (zh) * | 2020-12-02 | 2021-03-19 | 航天科工网络信息发展有限公司 | 动态部署策略优化及持续部署业务保障*** |
CN113176929A (zh) * | 2021-04-29 | 2021-07-27 | 成都商高智能科技有限公司 | 一种国产操作***的容器化部署方法及平台 |
Non-Patent Citations (4)
Title |
---|
A New Docker Swarm Scheduling Strategy;Christophe Cérin 等;《2017 IEEE 7th International Symposium on Cloud and Service Computing (SC2)》;112-117 * |
Design of Scheduler Plugins for Reliable Function Allocation in Kubernetes;Rui Kang 等;《2021 17th International Conference on the Design of Reliable Communication Networks (DRCN)》;1-3 * |
基于Kubernetes容器云的资源调度算法研究;李想;《中国优秀硕士学位论文全文数据库 信息科技辑》(第5期);I139-209 * |
微服务框架中的服务注册中心的设计与开发;吴雄劲;《工业控制计算机》;第34卷(第8期);130-132 * |
Also Published As
Publication number | Publication date |
---|---|
CN113641480A (zh) | 2021-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102521044B (zh) | 一种基于消息中间件的分布式任务调度方法及*** | |
US8789058B2 (en) | System and method for supporting batch job management in a distributed transaction system | |
CN111682973B (zh) | 一种边缘云的编排方法及*** | |
US7769715B2 (en) | Synchronization of access permissions in a database network | |
CN110333939B (zh) | 任务混合调度方法、装置、调度服务器及资源服务器 | |
CN101719852B (zh) | 一种中间件性能的监控方法和设备 | |
CN110838939B (zh) | 一种基于轻量级容器的调度方法及边缘物联管理平台 | |
CN101424941B (zh) | 一种控制实现方法和*** | |
CN112910937B (zh) | 容器集群中的对象调度方法、装置、服务器和容器集群 | |
CN103516735A (zh) | 一种网络节点升级的方法及装置 | |
US7237005B2 (en) | Job network setup method, job network execution method, job management system, management terminal and program | |
CN117435324B (zh) | 基于容器化的任务调度方法 | |
JP4500090B2 (ja) | 情報管理システムと情報管理方法 | |
CN110134533B (zh) | 一种可批量调度数据的***及方法 | |
CN111240819A (zh) | 一种调度任务的发布***及方法 | |
CN113641480B (zh) | 一种基于Kubernetes集群组的任务调度***及方法 | |
CN116974689A (zh) | 集群容器调度方法、装置、设备及计算机可读存储介质 | |
CN114745377B (zh) | 边缘云集群服务***及实现方法 | |
CN102214094A (zh) | 经由异步编程模型执行操作 | |
CN112564979B (zh) | 构建任务的执行方法、装置、计算机设备和存储介质 | |
CN114816662A (zh) | 应用于Kubernetes的容器编排方法和*** | |
CN114416276A (zh) | 设备管理服务的调度方法、装置、电子设备及存储介质 | |
CN102681881A (zh) | 跨机调度方法及其*** | |
CN115185700B (zh) | 一种高集成单进程的容器管理方法 | |
US12008488B2 (en) | Systems and methods to manage sub-chart dependencies with directed acyclic graphs |
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 |