CN113110923A - 基于k8s的工作流引擎的使用方法及装置 - Google Patents

基于k8s的工作流引擎的使用方法及装置 Download PDF

Info

Publication number
CN113110923A
CN113110923A CN202110317914.0A CN202110317914A CN113110923A CN 113110923 A CN113110923 A CN 113110923A CN 202110317914 A CN202110317914 A CN 202110317914A CN 113110923 A CN113110923 A CN 113110923A
Authority
CN
China
Prior art keywords
workflow
creation request
pod
task
engine
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.)
Granted
Application number
CN202110317914.0A
Other languages
English (en)
Other versions
CN113110923B (zh
Inventor
蔡飞
顾海林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Feiling Intelligent Technology Co ltd
Original Assignee
Nanjing Feiling Intelligent Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing Feiling Intelligent Technology Co ltd filed Critical Nanjing Feiling Intelligent Technology Co ltd
Priority to CN202110317914.0A priority Critical patent/CN113110923B/zh
Publication of CN113110923A publication Critical patent/CN113110923A/zh
Application granted granted Critical
Publication of CN113110923B publication Critical patent/CN113110923B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

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

本发明提供了一种基于k8s的工作流引擎的使用方法及装置,其中,基于k8s的工作流引擎的使用方法提供统一模式的工作流创建、调度、运行、升级、终止等功能;具有良好的项目架构,便于需求扩展和协同开发以及维护;可以扩展支持定时调度、优先级调度、事件触发机制。

Description

基于k8s的工作流引擎的使用方法及装置
技术领域
本发明属于工作流引擎使用领域,具体涉及一种基于k8s的工作流引擎的使用方法及装置。
背景技术
现有技术中的工作流引擎采用的kubernetes+docker的架构,k8s自带的工作流仅能应付简单的Job(工作)和Deployment(部署)任务。
然而,面向的人工智能和大数据,就不可避免的要支持各种框架的编排,如Spark、Tensorflow等批处理,又如kafka等流处理,另外还需要支持定时任务的调度。
现有的工作流引擎并不能满足上述情况的使用需求。
发明内容
本发明所要解决的技术问题是提供一种基于k8s的工作流引擎的使用方法及装置。
本发明解决其技术问题所采用的技术方案是:提供了一种基于k8s的工作流引擎的使用方法,包括:
调用执行管理提供的api接口提交任务创建申请;
通过执行管理将各微服务提交的任务创建请求数据转换后发送给工作流引擎;
工作流引擎根据接收的转换后的任务创建请求数据创建工作流对象;
依据工作流对象获取pod创建请求并发送给k8s;
k8s依据接收的pod创建请求通过kubelet创建对应的Pod;
通过任务调度引擎将pod创建成功反馈给对应的微服务。
进一步的,所述工作流引擎根据接收的转换后的任务创建请求数据创建工作流对象的方法包括:
获取任务创建请求数据;
工作流控制器基于client-go提供的informer机制,对工作流接收的任务创建请求数据触发的事件实用一个队列进行缓冲和处理并创建工作流对象。
进一步的,所述工作流控制器基于client-go提供的informer机制,对工作流接收的任务创建请求数据触发的事件实用一个队列进行缓冲和处理并创建工作流对象的方法,即:
工作流接收的任务创建请求数据所有触发的事件生成一个key并投递到队列中,然后多个goroutine并发的去从队列中获取key,并获取对应的Workflow进行处理,完成工作流对象的创建。
进一步的,所述工作流对象包括包括TypeMeta,ObjectMeta,Spec,Status。
进一步的,在工作流控制器基于client-go提供的informer机制,对工作流接收的任务创建请求数据触发的事件实用一个队列进行缓冲和处理并创建工作流对象的同时,所述工作流引擎根据接收的转换后的任务创建请求数据创建工作流对象的方法还包括:
基于Informer机制对工作流进行监听;
对所有类型的node创建相应的Informer进行监听,并将node的时间投递到与任务创建请求数据对应的事件队列。
进一步的,提交任务创建申请的微服务包括project-manager、iflow-manager以及data-manager中的一种或多种。
进一步的,所述k8s依据接收的pod创建请求通过kubelet创建对应的Pod的方法包括:
获取pod创建请求对应的资源和限制要求;
以及资源和限制要求获取满足需求的node;
通过kubelet创建对应的Pod。
本发明还提供了一种基于k8s的工作流引擎调度装置,包括:
请求提交模块,适于调用执行管理提供的api接口提交任务创建申请;
发送模块,适于通过执行管理将各微服务提交的任务创建请求数据转换后发送给工作流引擎;
工作流创建模块,适于通过工作流引擎根据接收的转换后的任务创建请求数据创建工作流对象;
Pod创建请求发送模块,适于依据工作流对象获取pod创建请求并发送给k8s;
创建模块,适于通过k8s依据接收的pod创建请求通过kubelet创建对应的Pod;
反馈模块,适于通过任务调度引擎将pod创建成功反馈给对应的微服务。
本发明还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被计算机运行时执行如上述方法中的步骤。
本发明还提供了一种电子设备,包括存储器和处理器;所述存储器中存储有至少一条程序指令;所述处理器,通过加载并执行所述至少一条程序指令以实现如上述方法中的步骤。
本发明的有益效果是:本发明提供了一种基于k8s的工作流引擎的使用方法及装置,其中,基于k8s的工作流引擎的使用方法通过调用执行管理提供的api接口提交任务创建申请;通过执行管理将各微服务提交的任务创建请求数据转换后发送给工作流引擎;工作流引擎根据接收的转换后的任务创建请求数据创建工作流对象;依据工作流对象获取pod创建请求并发送给k8s;k8s依据接收的pod创建请求通过kubelet创建对应的Pod;通过任务调度引擎将pod创建成功反馈给对应的微服务。提供统一模式的工作流创建、调度、运行、升级、终止等功能;具有良好的项目架构,便于需求扩展和协同开发以及维护;可以扩展支持定时调度、优先级调度、事件触发机制。
附图说明
下面结合附图和实施例对本发明作进一步说明。
图1是本发明实施例提供的基于k8s的工作流引擎的使用方法的流程图。
图2是本发明实施例提供的基于k8s的工作流引擎的使用装置的原理框图。
图3是本发明实施例所提供的电子设备的部分原理框图。
具体实施方式
现在结合附图对本发明作详细的说明。此图为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。
实施例1
请参阅图1,本发明实施例提供了一种基于k8s的工作流引擎的使用方法,实现了统一模式的工作流创建、调度、运行、升级、终止等功能,具有良好的项目架构,便于需求扩展和协同开发以及维护;可以扩展支持定时调度、优先级调度、事件触发机制等。
具体来说,基于k8s的工作流引擎的使用方法包括以下步骤:
S110:调用执行管理提供的api接口提交任务创建申请;
其中,提交任务创建申请的微服务包括pproject-manager(项目管理)、iflow-manager(工作流管理)、data-manager(数据管理)中的一种或多种。
S120:通过执行管理将各微服务提交的任务创建请求数据转换后发送给工作流引擎;
S130:工作流引擎根据接收的转换后的任务创建请求数据创建工作流对象;
具体来说,步骤S130包括以下步骤:
S131:获取任务创建请求数据;
S132:工作流控制器基于client-go提供的informer机制,对工作流接收的任务创建请求数据触发的事件实用一个队列进行缓冲和处理并创建工作流对象。
具体来说,步骤S132,即,工作流接收的任务创建请求数据所有触发的事件生成一个key并投递到队列中,然后多个go routine(事物)并发的去从队列中获取key,并获取对应的工作流进行处理,完成工作流对象的创建。
其中,工作流对象包括TypeMeta(类型元),ObjectMeta(对象元),Spec(格式),Status(状态)四部分。
TypeMeta(类型元)表明资源的类型,API版本信息等,ObjectMeta(对象元)表明资源的名称,命名空间等.Spec(格式)则是对资源的specification(格式),Status(状态)展示资源当前的状态。
工作流对象的代码结构如下:
Figure BDA0002991961490000051
Figure BDA0002991961490000061
其中:
metav1.TypeMeta`json:",inline"`中inline说明TypeMeta(类型元)结构内嵌的字段直接作为Workflow(工作流)的字段;
metav1.ObjectMeta`json:"metadata,omitempty"
protobuf:"bytes,1,opt,name=metadata"`则表明ObjectMeta(对象元)对象在Workflow(工作流)中的字段名称为metadata(元数据);
Spec(格式),Status(状态)均为自定义的结构体,分别作为workflow(工作流)对象的spec(格式)和status(状态)字段;
Spec(格式)中存储启动pod(容器集)所需要的所有参数,包括但不限于:NodeType(节点类型)、DockerImage(docker镜像)、Resource(资源)、Command(命令)、Args(参数)、Env(环境变量)、Annotations(备注)、Ports(端口)等等。
Status(状态)在提交工作流时无需填写任何内容,展示当前工作流及各组件的状态,包括当前工作流状态(Running/运行中,pending/等待中,Failed/失败的,Succeeded/成功的)、startTime(工作流启动时间)、stopTime(工作流停止时间)、conditions(当前工作流的一些条件状态)、nodeStatus(工作流中各组件运行状态的列表)等。
在其他实施例中,工作流还包括定时工作流CronWorkflow
如下代码结构:
Figure BDA0002991961490000062
Figure BDA0002991961490000071
cronworkflow(定时工作流)和workflow(工作流)很相似,也是由metav1.TypeMeta,metav1.ObjectMeta,Spce和Status四部分组成.其中metav1.TypeMeta和metav1.ObjectMeta在工作流Workflow设计中已经描述过,下面介绍Spec和Status。
Sepc(规则)中定义的字段有concurrencyPolicy(并发处理机制)、schedule(调度器)、workflowTemplate(工作流模板)、waitingSeconds(等待时长)和startTime(开始运行时间):
concurrencyPolicy(并发处理机制),定时工作流创建的工作流的并发处理机制,有三个值,AllowConcurrent(允许并发),WaitTillTimeout(等待直到超时)和ReplaceCurrent(替换当前)。
-AllowConcurrent(允许并发)表明当需要调度新的工作流时,不处理之前的工作流。
-ReplaceCurrent(替换当前)则在需要调度新的工作流时,停止之前的工作流,再调度新的工作流。
-WaitTillTimeoutt(等待直到超时)则是配合waitingSeconds(等待时长)一起使用,当需要调度新的工作流时,检查之前的工作流是否已停止,如果没停止,则最多等待waitingSeconds(等待时长)秒,如果之前的工作流在超时waitingSeconds(等待时长)秒之前已完成,则调度新的工作流,如果在等待waitingSeconds(等待时长)秒后,之前的工作流还未停止,则先停止之前的工作流,再调度新的工作流。
schedule(调度器),使用的是cron表达式,具体跟linux系统中的crontab规则一致。
workflowTemplate(工作流模板),定时工作流的工作流模版。
waitingSeconds(等待时长),与concurrencyPolicy策略配合,配置超时时长,以秒为单位。
startTime(开始运行时间),定时工作流开始运行的时间,计算定义的cron表达式,获取下一次调度工作流的时间,如果此时间在startTime之前,则不调度工作流。
Status(状态)中定义的字段包括active(活动的)、lastScheduleTime(上个创建时间)、conditions(条件):
active(活动的),保存当前定时工作流相关的正在运行的工作流的对象。
lastScheduleTime(上个创建时间),定时工作流最近一次创建工作流的时间。
conditions(条件),当前工作流的一些条件状态。
在本实施例中,工作流的类型包括:
Job类型,正确运行一次,不局限于语言;
Deployment类型,一直运行,出现故障后会重新拉起;
SparkApplication类型,在Workflow Engine(工作流引擎)中Spark运行一次,不会重新拉起;
Tensorflow类型,在Workflow Engine(工作流引擎)中Tensorflow运行一次,不会重新拉起,可以是单机或者分布式运行;
Python类型,在Workflow Engine(工作流引擎)中Python运行一次,不会重新拉起。
在本实施例中,在工作流控制器基于client-go提供的informer机制,对工作流接收的任务创建请求数据触发的事件实用一个队列进行缓冲和处理并创建工作流对象的同时,步骤S130还包括:
S133:基于Informer机制对工作流进行监听;
S134:对所有类型的node创建相应的Informer进行监听,并将node的时间投递到与任务创建请求数据对应的事件队列。
S140:依据工作流对象获取pod创建请求并发送给k8s;
S150:k8s依据接收的pod创建请求通过kubelet创建对应的Pod;
具体来说,步骤S150包括以下步骤:
S151:获取pod创建请求对应的资源和限制要求;
S152:以及资源和限制要求获取满足需求的node;
S153:通过kubelet创建对应的Pod。
S160:通过任务调度引擎将pod创建成功反馈给对应的微服务。
实施例2
请参阅图2,本发明实施例还提供了一种基于k8s的工作流引擎调度装置,包括:请求提交模块、发送模块、工作流创建模块、Pod创建请求发送模块、创建模块以及反馈模块。
请求提交模块,适于调用执行管理提供的api接口提交任务创建申请。其中,提交任务创建申请的微服务包括p project-manager(项目管理)、iflow-manager(工作流管理)、data-manager(数据管理)中的一种或多种。
发送模块,适于通过执行管理将各微服务提交的任务创建请求数据转换后发送给工作流引擎;
工作流创建模块,适于通过工作流引擎根据接收的转换后的任务创建请求数据创建工作流对象,具体来说工作流创建模块适于运行以下步骤:
S131:获取任务创建请求数据;
S132:工作流控制器基于client-go提供的informer机制,对工作流接收的任务创建请求数据触发的事件实用一个队列进行缓冲和处理并创建工作流对象。
具体来说,步骤S132,即,工作流接收的任务创建请求数据所有触发的事件生成一个key并投递到队列中,然后多个go routine(事物)并发的去从队列中获取key,并获取对应的工作流进行处理,完成工作流对象的创建。
其中,工作流对象包括TypeMeta(类型元),ObjectMeta(对象元),Spec(格式),Status(状态)四部分。
TypeMeta(类型元)表明资源的类型,API版本信息等,ObjectMeta(对象元)表明资源的名称,命名空间等.Spec(格式)则是对资源的specification(格式),Status(状态)展示资源当前的状态。
工作流对象的代码结构如下:
Figure BDA0002991961490000101
其中:
metav1.TypeMeta`json:",inline"`中inline说明TypeMeta(类型元)结构内嵌的字段直接作为Workflow(工作流)的字段;
metav1.ObjectMeta`json:"metadata,omitempty"
protobuf:"bytes,1,opt,name=metadata"`则表明ObjectMeta(对象元)对象在Workflow(工作流)中的字段名称为metadata(元数据);
Spec(格式),Status(状态)均为自定义的结构体,分别作为workflow(工作流)对象的spec(格式)和status(状态)字段;
Spec(格式)中存储启动pod(容器集)所需要的所有参数,包括但不限于:NodeType(节点类型)、DockerImage(docker镜像)、Resource(资源)、Command(命令)、Args(参数)、Env(环境变量)、Annotations(备注)、Ports(端口)等等。
Status(状态)在提交工作流时无需填写任何内容,展示当前工作流及各组件的状态,包括当前工作流状态(Running/运行中,pending/等待中,Failed/失败的,Succeeded/成功的)、startTime(工作流启动时间)、stopTime(工作流停止时间)、conditions(当前工作流的一些条件状态)、nodeStatus(工作流中各组件运行状态的列表)等。
在其他实施例中,工作流还包括定时工作流CronWorkflow
如下代码结构:
Figure BDA0002991961490000111
Figure BDA0002991961490000121
cronworkflow(定时工作流)和workflow(工作流)很相似,也是由metav1.TypeMeta,metav1.ObjectMeta,Spce和Status四部分组成.其中metav1.TypeMeta和metav1.ObjectMeta在工作流Workflow设计中已经描述过,下面介绍Spec和Status。
Sepc(规则)中定义的字段有concurrencyPolicy(并发处理机制)、schedule(调度器)、workflowTemplate(工作流模板)、waitingSeconds(等待时长)和startTime(开始运行时间):
concurrencyPolicy(并发处理机制),定时工作流创建的工作流的并发处理机制,有三个值,AllowConcurrent(允许并发),WaitTillTimeout(等待直到超时)和ReplaceCurrent(替换当前)。
-AllowConcurrent(允许并发)表明当需要调度新的工作流时,不处理之前的工作流。
-ReplaceCurrent(替换当前)则在需要调度新的工作流时,停止之前的工作流,再调度新的工作流。
-WaitTillTimeoutt(等待直到超时)则是配合waitingSeconds(等待时长)一起使用,当需要调度新的工作流时,检查之前的工作流是否已停止,如果没停止,则最多等待waitingSeconds(等待时长)秒,如果之前的工作流在超时waitingSeconds(等待时长)秒之前已完成,则调度新的工作流,如果在等待waitingSeconds(等待时长)秒后,之前的工作流还未停止,则先停止之前的工作流,再调度新的工作流。
schedule(调度器),使用的是cron表达式,具体跟linux系统中的crontab规则一致。
workflowTemplate(工作流模板),定时工作流的工作流模版。
waitingSeconds(等待时长),与concurrencyPolicy策略配合,配置超时时长,以秒为单位。
startTime(开始运行时间),定时工作流开始运行的时间,计算定义的cron表达式,获取下一次调度工作流的时间,如果此时间在startTime之前,则不调度工作流。
Status(状态)中定义的字段包括active(活动的)、lastScheduleTime(上个创建时间)、conditions(条件):
active(活动的),保存当前定时工作流相关的正在运行的工作流的对象。
lastScheduleTime(上个创建时间),定时工作流最近一次创建工作流的时间。
conditions(条件),当前工作流的一些条件状态。
在本实施例中,工作流的类型包括:
Job类型,正确运行一次,不局限于语言;
Deployment类型,一直运行,出现故障后会重新拉起;
SparkApplication类型,在Workflow Engine(工作流引擎)中Spark运行一次,不会重新拉起;
Tensorflow类型,在Workflow Engine(工作流引擎)中Tensorflow运行一次,不会重新拉起,可以是单机或者分布式运行;
Python类型,在Workflow Engine(工作流引擎)中Python运行一次,不会重新拉起。
在本实施例中,在工作流控制器基于client-go提供的informer机制,对工作流接收的任务创建请求数据触发的事件实用一个队列进行缓冲和处理并创建工作流对象的同时,工作流创建模块还用于运行以下步骤:
S133:基于Informer机制对工作流进行监听;
S134:对所有类型的node创建相应的Informer进行监听,并将node的时间投递到与任务创建请求数据对应的事件队列。
Pod创建请求发送模块,适于依据工作流对象获取pod创建请求并发送给k8s;
创建模块,适于通过k8s依据接收的pod创建请求通过kubelet创建对应的Pod,具体来说,创建模块用于执行以下步骤:
S151:获取pod创建请求对应的资源和限制要求;
S152:以及资源和限制要求获取满足需求的node;
S153:通过kubelet创建对应的Pod。
反馈模块,适于通过任务调度引擎将pod创建成功反馈给对应的微服务。
实施例3
本实施例提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被计算机运行时执行实施例1所提供的基于k8s的工作流引擎的使用方法。
基于k8s的工作流引擎的使用方法通过调用执行管理提供的api接口提交任务创建申请;通过执行管理将各微服务提交的任务创建请求数据转换后发送给工作流引擎;工作流引擎根据接收的转换后的任务创建请求数据创建工作流对象;依据工作流对象获取pod创建请求并发送给k8s;k8s依据接收的pod创建请求通过kubelet创建对应的Pod;通过任务调度引擎将pod创建成功反馈给对应的微服务。提供统一模式的工作流创建、调度、运行、升级、终止等功能;具有良好的项目架构,便于需求扩展和协同开发以及维护;可以扩展支持定时调度、优先级调度、事件触发机制。
实施例4
请参阅图3,本发明实施例还提供了一种电子设备,包括:存储器502和处理器501;所述存储器502中存储有至少一条程序指令;所述处理器501,通过加载并执行所述至少一条程序指令以实现如实施例1所提供的基于VUE的前端应用组件化开发方法。
存储器502和处理器501采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器501和存储器502的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器501处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器501。
处理器501负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器502可以被用于存储处理器501在执行操作时所使用的数据。
综上所述,本发明提供了一种基于k8s的工作流引擎的使用方法及装置,其中,基于k8s的工作流引擎的使用方法通过调用执行管理提供的api接口提交任务创建申请;通过执行管理将各微服务提交的任务创建请求数据转换后发送给工作流引擎;工作流引擎根据接收的转换后的任务创建请求数据创建工作流对象;依据工作流对象获取pod创建请求并发送给k8s;k8s依据接收的pod创建请求通过kubelet创建对应的Pod;通过任务调度引擎将pod创建成功反馈给对应的微服务。提供统一模式的工作流创建、调度、运行、升级、终止等功能;具有良好的项目架构,便于需求扩展和协同开发以及维护;可以扩展支持定时调度、优先级调度、事件触发机制。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关的工作人员完全可以在不偏离本发明的范围内,进行多样的变更以及修改。本项发明的技术范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。

Claims (10)

1.一种基于k8s的工作流引擎的使用方法,其特征在于,包括:
调用执行管理提供的api接口提交任务创建申请;
通过执行管理将各微服务提交的任务创建请求数据转换后发送给工作流引擎;
工作流引擎根据接收的转换后的任务创建请求数据创建工作流对象;
依据工作流对象获取pod创建请求并发送给k8s;
k8s依据接收的pod创建请求通过kubelet创建对应的Pod;
通过任务调度引擎将pod创建成功反馈给对应的微服务。
2.如权利要求1所述的一种基于k8s的工作流引擎的使用方法,其特征在于,
所述工作流引擎根据接收的转换后的任务创建请求数据创建工作流对象的方法包括:
获取任务创建请求数据;
工作流控制器基于client-go提供的informer机制,对工作流接收的任务创建请求数据触发的事件实用一个队列进行缓冲和处理并创建工作流对象。
3.如权利要求2所述的一种基于k8s的工作流引擎的使用方法,其特征在于,所述工作流控制器基于client-go提供的informer机制,对工作流接收的任务创建请求数据触发的事件实用一个队列进行缓冲和处理并创建工作流对象的方法,即:
工作流接收的任务创建请求数据所有触发的事件生成一个key并投递到队列中,然后多个go routine并发的去从队列中获取key,并获取对应的工作流进行处理,完成工作流对象的创建。
4.如权利要求1-3任一项所述的基于k8s的工作流引擎的使用方法,其特征在于,所述工作流对象包括包括TypeMeta,ObjectMeta,Spec,Status。
5.如权利要求2所述的基于k8s的工作流引擎的使用方法,其特征在于,在工作流控制器基于client-go提供的informer机制,对工作流接收的任务创建请求数据触发的事件实用一个队列进行缓冲和处理并创建工作流对象的同时,所述工作流引擎根据接收的转换后的任务创建请求数据创建工作流对象的方法还包括:
基于Informer机制对工作流进行监听;
对所有类型的node创建相应的Informer进行监听,并将node的时间投递到与任务创建请求数据对应的事件队列。
6.如权利要求1所述的基于k8s的工作流引擎的使用方法,其特征在于,提交任务创建申请的微服务包括project-manager、iflow-manager以及data-manager中的一种或多种。
7.如权利要求1所述的基于k8s的工作流引擎的使用方法,其特征在于,所述k8s依据接收的pod创建请求通过kubelet创建对应的Pod的方法包括:
获取pod创建请求对应的资源和限制要求;
以及资源和限制要求获取满足需求的node;
通过kubelet创建对应的Pod。
8.一种基于k8s的工作流引擎调度装置,其特征在于,包括:
请求提交模块,适于调用执行管理提供的api接口提交任务创建申请;
发送模块,适于通过执行管理将各微服务提交的任务创建请求数据转换后发送给工作流引擎;
工作流创建模块,适于通过工作流引擎根据接收的转换后的任务创建请求数据创建工作流对象;
Pod创建请求发送模块,适于依据工作流对象获取pod创建请求并发送给k8s;
创建模块,适于通过k8s依据接收的pod创建请求通过kubelet创建对应的Pod;
反馈模块,适于通过任务调度引擎将pod创建成功反馈给对应的微服务。
9.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被计算机运行时执行如权利要求1-7任一所述方法中的步骤。
10.一种电子设备,其特征在于,包括存储器和处理器;所述存储器中存储有至少一条程序指令;所述处理器,通过加载并执行所述至少一条程序指令以实现如权利要求1-7任一所述方法中的步骤。
CN202110317914.0A 2021-03-25 2021-03-25 基于k8s的工作流引擎的使用方法及装置 Active CN113110923B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110317914.0A CN113110923B (zh) 2021-03-25 2021-03-25 基于k8s的工作流引擎的使用方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110317914.0A CN113110923B (zh) 2021-03-25 2021-03-25 基于k8s的工作流引擎的使用方法及装置

Publications (2)

Publication Number Publication Date
CN113110923A true CN113110923A (zh) 2021-07-13
CN113110923B CN113110923B (zh) 2023-10-20

Family

ID=76710522

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110317914.0A Active CN113110923B (zh) 2021-03-25 2021-03-25 基于k8s的工作流引擎的使用方法及装置

Country Status (1)

Country Link
CN (1) CN113110923B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107105009A (zh) * 2017-03-22 2017-08-29 北京荣之联科技股份有限公司 基于Kubernetes系统对接工作流引擎的作业调度方法和装置
CN110768833A (zh) * 2019-10-25 2020-02-07 北京宝兰德软件股份有限公司 基于kubernetes的应用编排部署方法及装置
CN111522639A (zh) * 2020-04-16 2020-08-11 南京邮电大学 Kubernetes集群架构系统下多维资源调度方法
CN111597143A (zh) * 2020-03-24 2020-08-28 中电海康集团有限公司 一种将dag图数据转换为工作流引擎调度文件的方法
CN111897622A (zh) * 2020-06-10 2020-11-06 中国科学院计算机网络信息中心 基于容器技术的高通量计算方法及系统
CN112181586A (zh) * 2020-09-11 2021-01-05 济南浪潮数据技术有限公司 基于Kubernetes架构的工作流处理方法、装置
US20210034443A1 (en) * 2019-08-01 2021-02-04 Prefect Technologies, Inc. System and method for the remote execution of one or more arbitrarily defined workflows

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107105009A (zh) * 2017-03-22 2017-08-29 北京荣之联科技股份有限公司 基于Kubernetes系统对接工作流引擎的作业调度方法和装置
US20210034443A1 (en) * 2019-08-01 2021-02-04 Prefect Technologies, Inc. System and method for the remote execution of one or more arbitrarily defined workflows
CN110768833A (zh) * 2019-10-25 2020-02-07 北京宝兰德软件股份有限公司 基于kubernetes的应用编排部署方法及装置
CN111597143A (zh) * 2020-03-24 2020-08-28 中电海康集团有限公司 一种将dag图数据转换为工作流引擎调度文件的方法
CN111522639A (zh) * 2020-04-16 2020-08-11 南京邮电大学 Kubernetes集群架构系统下多维资源调度方法
CN111897622A (zh) * 2020-06-10 2020-11-06 中国科学院计算机网络信息中心 基于容器技术的高通量计算方法及系统
CN112181586A (zh) * 2020-09-11 2021-01-05 济南浪潮数据技术有限公司 基于Kubernetes架构的工作流处理方法、装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
INT32BIT: "Kubernetes扩展神器Argo实践", Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/181692322?utm_id=0> *

Also Published As

Publication number Publication date
CN113110923B (zh) 2023-10-20

Similar Documents

Publication Publication Date Title
US8185903B2 (en) Managing system resources
CN113569987A (zh) 模型训练方法和装置
US20030226138A1 (en) Installation of application software through a network from a source computer system on to a target computer system
CN107943555A (zh) 一种云计算环境下的大数据存储和处理平台及处理方法
CN112181621B (zh) 一种任务调度系统、方法、设备及存储介质
Menard et al. Achieving determinism in adaptive AUTOSAR
CN112286671B (zh) 一种容器化批处理作业调度方法、装置和计算机设备
JP2009265963A (ja) 情報処理システム及びタスクの実行制御方法
CN110716793B (zh) 一种分布式事务的执行方法、装置、设备及存储介质
WO2018129271A1 (en) Systems and methods for executing software robot computer programs on virtual machines
US7085831B2 (en) Intelligent system control agent for managing jobs on a network by managing a plurality of queues on a client
CN115840631B (zh) 基于raft的高可用分布式任务调度方法和设备
CN112579267A (zh) 一种去中心化大数据作业流调度方法及装置
CN112860396B (zh) 一种基于分布式深度学习的gpu调度方法及系统
CN110611707A (zh) 一种任务调度的方法及装置
CN112231073A (zh) 一种分布式任务调度方法及其装置
CN112506624A (zh) 定时任务调度系统、方法及相应计算机设备和存储介质
CN115421898A (zh) 一种基于quartz框架的大数据任务调度管理系统及方法
CN113821322B (zh) 一种松耦合的分布式工作流协调系统和方法
CN113268352B (zh) 面向通用服务机器人的多指令响应式任务协同管理方法
Paunicka et al. A CORBA-based middleware solution for UAVs
CN103631594A (zh) 通用流程异步调度方法及系统
CN112948096A (zh) 一种批量调度方法、装置和设备
CN113110923B (zh) 基于k8s的工作流引擎的使用方法及装置
CN112559153A (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