CN111782370A - 一种kubernetes多集群管理系统、方法、终端及存储介质 - Google Patents
一种kubernetes多集群管理系统、方法、终端及存储介质 Download PDFInfo
- Publication number
- CN111782370A CN111782370A CN202010620870.4A CN202010620870A CN111782370A CN 111782370 A CN111782370 A CN 111782370A CN 202010620870 A CN202010620870 A CN 202010620870A CN 111782370 A CN111782370 A CN 111782370A
- Authority
- CN
- China
- Prior art keywords
- task
- tasks
- state
- directed acyclic
- acyclic graph
- 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
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/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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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/5083—Techniques for rebalancing the load in a distributed system
-
- 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/133—Protocols for remote procedure calls [RPC]
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
-
- 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/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- 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/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种kubernetes多集群管理系统、方法、终端及存储介质。所述多集群管理系统为基于分布式任务调度框架和grpc协议构建的系统;所述系统包括客户端和服务端,所述客户端将kubernete集群任务分解为设定数量的任务,按照任务角色对任务及任务节点进行划分,所述服务端通过解析器生成由任务组成的有向无环图,调用控制器将所述有向无环图中的任务分发给所述客户端中与所述任务的任务角色相对应的任务节点。本发明实现了多个k8s集群并行的部署、删除、扩缩容等操作,提升了操作效率,且任务状态、进度随时可查;同时使用grpc取代ssh的连接方式,解决了ssh在诸多网络环境中无法使用的问题。
Description
技术领域
本发明涉及集群管理技术领域,特别是涉及一种kubernetes多集群管理系统、方法、终端及存储介质。
背景技术
Kubernetes(简称k8s,是用8代替8个字符“ubernete”而成的缩写)是一个开源的,用于管理云平台中多个主机上的容器化的应用。虽然利用Kubernetes可以实现简单并且高效的部署容器化,然而Kubernetes的集群管理复杂度较高,尤其部署时需要对操作系统、软件进行很多的预安装、预配置的过程,对集群管理员的技术要求较高。
目前使用较为广泛的、生产可用的Kubernetes集群管理方案为基于ansible的开源项目Kubespray。Kubespray对整个k8s集群的安装过程实现了自动化,并且部署步骤较为严谨,对系统、软件配置进行了优化,生产可用。但Kubespray的劣势也较为明显,具体表现为:
1.Kuberspray使用ssh(Secure Shell,安全外壳协议)连接目标服务器,在某些对ssh限制较多的网络环境中,无法使用或连接缓慢;
2.安装过程为任务串行,任务量较多时,安装时间过长;
3.模版渲染工作在server端进行,然后分发至目标服务器,效率较低、网络开销较大;
4.只支持单集群安装;
5.安装过程中无法查询安装进度,且无法取消。
发明内容
本发明提供了一种kubernetes多集群管理系统、方法、终端及存储介质,能够在一定程度上解决现有技术中存在的不足。
为解决上述技术问题,本发明采用的技术方案为:
一种kubernetes多集群管理系统,所述多集群管理系统为基于分布式任务调度框架和grpc协议构建的系统;所述系统包括客户端和服务端,所述客户端包括:
任务分解模块:用于将kubernete集群任务分解为设定数量的任务,按照任务角色对任务及任务节点进行划分,生成任务编排文件及清单文件,并将所述任务编排文件及清单文件发送至服务端;其中,所述任务编排文件为用于描述任务与任务角色的文件,所述清单文件为用于描述任务节点与任务角色的文件,所述任务编排文件及清单文件中的任务角色一一对应;
任务执行模块:用于通过任务节点上的Agent接收所述服务端分发的任务,根据任务函数执行所述任务,并将所述任务执行结果返回至服务端;
所述服务端包括:
数据解析模块:用于通过解析器对所述任务编排文件及清单文件进行解析,生成由所述任务组成的有向无环图;
任务分发模块:用于调用控制器将所述有向无环图中的任务分发给所述客户端中与所述任务的任务角色相对应的任务节点。
本发明实施例采取的技术方案还包括:所述任务为用于描述任务元数据的结构体,所述任务带有状态机;
所述有向无环图包含每一个任务的状态、依赖关系、参数及执行结果,所述每一个任务的状态分别包括未就绪、已就绪、运行中、成功、失败及取消。
本发明实施例采取的技术方案还包括:所述控制器用于通过状态机控制、管理所述有向无环图及任务的生命周期,并将状态为已就绪的任务分配给客户端对应的任务节点。
本发明实施例采取的技术方案还包括:所述服务端还包括:
组件启动模块:用于在服务端启动时,启动http server、grpc server以及控制器,并初始化存储器;其中,所述http server用于接收客户端发送的任务编排文件及清单文件;所述grpc server用于向所述客户端分发任务,并接收所述客户端返回的任务执行结果;所述存储器用于缓存所述有向无环图。
本发明实施例采取的技术方案还包括:所述任务分发模块调用控制器将所述有向无环图中的任务分发给所述客户端中与所述任务的任务角色相对应的任务节点具体为:
调用所述控制器的StartGraph函数对所述有向无环图进行初始化,更新状态机,同时为所述有向无环图创建一个对应的Pool,并将所述清单文件中的任务节点添加到Pool中;所述Pool为由所述任务节点组成的任务节点池;在所述有向无环图启动之后,调用所述控制器创建两个协程,一个协程不断刷新所述有向无环图的状态,并将状态为已就绪的任务分发给相应的任务节点;另一个协程不断从所述Pool的任务节点中获取所述任务的执行结果,所述有向无环图的状态机根据每个任务的执行结果更新所述有向无环图中所述任务的状态。
本发明实施例采取的另一技术方案为:一种kubernetes多集群管理方法,包括:
通过客户端将kubernete集群任务分解为设定数量的任务,按照任务角色对任务及任务节点进行划分,生成任务编排文件及清单文件,并将所述任务编排文件及清单文件发送至服务端;其中,所述任务编排文件为用于描述任务与任务角色的文件,所述清单文件为用于描述任务节点与任务角色的文件,所述任务编排文件及清单文件中的任务角色一一对应;
所述服务端通过解析器对所述任务编排文件及清单文件进行解析,生成由所述任务组成的有向无环图,并调用控制器将所述有向无环图中的任务分发给所述客户端中与所述任务的任务角色相对应的任务节点;
所述客户端通过任务节点上的Agent接收所述服务端分发的任务,根据任务函数执行所述任务,并将所述任务执行结果返回至服务端。
本发明实施例采取的技术方案还包括:所述任务为用于描述任务元数据的结构体,所述任务带有状态机;
所述有向无环图包含每一个任务的状态、依赖关系、参数及执行结果,所述每一个任务的状态分别包括未就绪、已就绪、运行中、成功、失败及取消。
本发明实施例采取的技术方案还包括:所述调用控制器将所述有向无环图中的任务分发给所述Agent端对应的任务节点包括:
调用所述控制器的StartGraph函数对所述有向无环图进行初始化,更新状态机,同时为所述有向无环图创建一个对应的Pool,并将所述清单文件中的任务节点添加到Pool中;
所述Pool为由所述任务节点组成的任务节点池;
在所述有向无环图启动之后,调用所述控制器创建两个协程,一个协程不断刷新所述有向无环图的状态,并将状态为已就绪的任务分发给相应的任务节点;另一个协程不断从所述Pool的任务节点中获取所述任务的执行结果,所述有向无环图的状态机根据每个任务的执行结果更新所述有向无环图中所述任务的状态。
本发明实施例采取的又一技术方案为:一种终端,所述终端包括处理器、与所述处理器耦接的存储器,其中,
所述存储器存储有用于实现上述的kubernetes多集群管理方法的程序指令;
所述处理器用于执行所述存储器存储的所述程序指令以执行所述kubernetes多集群管理操作。
本发明实施例采取的又一技术方案为:一种存储介质,存储有处理器可运行的程序指令,所述程序指令用于执行上述的kubernetes多集群管理方法。
本发明的有益效果是:本发明实施例利用golang语言自研的分布式任务调度框架,并采用基于grpc协议的server-agent架构构建kubernetes多集群管理系统,通过将kubernetes集群任务分解成多个Task,按角色对Task及TaskNode进行划分,使得不同角色的Task分发到与之任务角色相对应的TaskNode上执行,从而实现了多个k8s集群并行的部署、删除、扩缩容等操作,提升了操作效率,且任务状态、进度随时可查;同时使用grpc取代ssh的连接方式,解决了ssh在诸多网络环境中无法使用的问题,并支持自定义plugin,增加了操作的可扩展性。
附图说明
图1是本发明实施例的kubernetes多集群管理系统第一结构示意图;
图2是本发明实施例的kubernetes多集群管理系统第二结构示意图;
图3是本发明实施例的kubernetes多集群管理方法流程示意图;
图4是本发明实施例的本发明实施例的终端结构示意图;
图5是本发明实施例的存储介质结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。本发明实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
请参阅图1,是本发明实施例的kubernetes多集群管理系统第一结构示意图。本发明利用golang语言的分布式任务调度框架,并采用基于grpc协议的Server-Agent架构构建kubernetes多集群管理系统,该系统可同时实现多个k8s集群的部署、删除、扩缩容等操作,并使用grpc替代ssh进行任务调度,解决了ssh连接受限的问题。具体的,kubernetes多集群管理系统包括Server(服务)端和Agent(客户)端,其中,Server端包括以下组件:
Task(任务):用于描述任务元数据的结构体,任务元数据包括任务ID、名称、状态、依赖、参数、运行结果等;Task带有状态机,状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作,完成特定操作的控制中心。
TaskGraph(任务图):由Task组成的自带状态机的有向无环图,TaskGraph用于将多个Task放入多个线程执行,并且可以设定多个Task之间的依赖关系;TaskGraph包含每一个Task的状态、依赖关系、参数及执行结果等信息,TaskGraph及Task的状态包括not ready(未就绪)、ready(已就绪)、running(运行中)、succuss(成功)、failed(失败)及canceled(取消)等状态。
Parser(解析器):用于将Agent端发送的TaskFile和Inventory解析为TaskGraph;
Controller(控制器):用于通过状态机控制、管理TaskGraph及Task的生命周期,并将状态为ready的Task分配给Agent端相应的TaskNode;
Cache(存储器):用于缓存TaskGraph;
Pool:由TaskNode组成的任务节点池。
Agent端包括以下组件:
TaskNode(任务节点):用于描述Task所运行节点的结构体,包括两个channel(通道),分别用于分发Task以及接收Task的执行结果;
Agent(代理):运行在TaskNode描述的真实节点上,通过grpc接口接收Server端分发的Task后执行Task,并将Task的执行结果返回给Server端;
TaskStore(任务仓库):Agent端用于储存任务名称与任务函数的映射关系的任务仓库;
TaskRole(任务角色):用于按角色划分Task及TaskNode;
TaskFile(任务编排文件):用于描述Task与TaskRole的Json((JavaScriptObject Notation,JS对象简谱))文件;
Inventory(清单文件):用于描述TaskNode与TaskRole的Json文件。
基于上述结构,本发明实施例的kubernetes多集群管理系统的操作过程具体为:
首先在待部署k8s集群的节点上安装并启动Agent端,Agent端将k8s集群任务(包括但不限于部署、删除、扩缩容等)分解成设定数量的Task,通过TaskRole按角色对Task及TaskNode进行划分,使得不同角色的Task分发到与之任务角色相对应的TaskNode上,生成TaskFile及Inventory,并将TaskFile及inventory发送至Server端;
Server端同时启动http server、grpc server以及Controller组件,并初始化Cache;其中,http server用于接收Agent端发送的TaskFile及inventory请求;grpcserver用于向Agent端分发Task,以及接收Task的执行结果。Server端接收到TaskFile及Inventory请求后,通过Paster自动解析Task的依赖关系,并转化为TaskGraph,然后调用Controller的StartGraph函数,对TaskTgraph进行初始化,更新状态机,同时为TaskGraph创建一个对应的Pool,并将Inventory中的TaskNode添加到Pool中;Controller在TaskGraph启动之后,创建两个协程,一个不断刷新TaskGraph中每一个任务的状态,并将状态为Ready的任务分发给相应的TaskNode;另一个不断从Pool中的TaskNode中获取每一个任务的Task result(执行结果)。TaskGraph的状态机根据Task result更新TaskGraph中对应任务的状态。
TaskNode上的Agent获取到需要执行的Task时,从TaskStore中检索出相应的任务函数并执行任务,最后将任务执行结果通过grpc接口返回至Server端。
Server端的Controller在TaskGraph达到最终状态(Success/Failed/Canneled/Timeout)时,停止刷新TaskGraph,本次k8s部署任务结果。
上述中,本发明实施例的多集群管理系统还包括任务编排系统和资源池系统,当Agent端提供一个Json格式的Taskfile以及Inventory时,任务编排系统自动解析Task间依赖关系,并将Task做为节点,将依赖指向做为边,构建一个Task的有向无环图;然后通过Controller按照角色将Task和资源进行划分,使得不同角色的Task调度到不同的资源上进行安装,例如将k8s的部署任务分解为kube-master-primary、kube-master-slave及kube-node三种角色,并分别进行主master、从master及负载节点的安装任务。相较于ansible而言,本发明实施例通过有向无环图实现了任务并行,并可按角色对任务进行划分,使得开发任务时无需关心任务依赖,只需关心功能的实现,随后编排成Taskfile即可实现有序调度。
基于上述结构,本发明还可以在TaskGraph及Task的各种状态中执行自定义plugin(插件)的操作,例如发送通知、记录任务执行时间、触发另一个TaskGraph等,增加了功能的可扩展性。
基于上述,本发明实施例利用golang语言自研的分布式任务调度框架,并采用基于grpc协议的server-agent架构构建kubernetes多集群管理系统,实现了多个k8s集群并行的部署、删除、扩缩容等操作,提升了操作效率,且任务状态、进度随时可查;同时使用grpc取代ssh的连接方式,解决了ssh在诸多网络环境中无法使用的问题。
本发明实施例中,在K8s的部署过程中,利用golang的context特性,用户可通过发送信号来取消集群部署过程。
在K8s的部署过程,本发明可在Agent端通过模版渲染的方式生成各种yaml文件,解决了kubespray在Server端渲染后再传输给目标服务器带来的额外网络开销的问题。
本发明实施例的底层分布式任务调度框架本身具有通用性,可作为library被引用到其他golang项目中;同时具有可扩展性,Agent端的executor可以扩展支持kubernetes的pod,通过编排Taskfile的方式编排调度pod。基于以上两点,本发明同样适用于多种分布式批量任务调度的应用场景。
请参阅图2,是本发明实施例的kubernetes多集群管理系统第二结构示意图。该系统包括Server端和Agent端,其中Agent端按照于待部署k8s集群的节点上。
具体的,Server端包括:
组件启动模块:用于启动Server端,同时启动http server、grpc server以及Controller组件,并初始化Cache;其中,http server用于接收Agent端发送的TaskFile及inventory请求;grpc server用于向Agent端分发Task,以及接收Task的执行结果。
数据解析模块:用于在接收到Agent端的TaskFile及Inventory请求后,通过Paster自动解析Task的依赖关系,并生成TaskGraph;
任务分发模块:用于调用Controller的StartGraph函数对TaskTGraph进行初始化,更新状态机,同时为TaskGraph创建一个对应的Pool,并将Inventory中的TaskNode添加到Pool中;并在TaskGraph启动之后,调用Controller创建两个协程,一个不断刷新TaskGraph中每一个任务的状态,并将状态为Ready的任务分发给相应的TaskNode;另一个不断从Pool中的TaskNode中获取每一个任务的Task result,TaskGraph的状态机根据Taskresult更新TaskGraph中对应任务的状态;其中,当Controller监测到TaskGraph达到最终状态(Success/Failed/Canneled/Timeout)时,停止刷新TaskGraph,本次k8s部署任务结果;用户可通过server端的http接口查询TaskGraph的状态。
相应地,Agent端包括:
任务分解模块:用于将k8s集群任务(包括但不限于部署、删除、扩缩容等)分解成设定数量的Task,通过TaskRole按角色对Task及TaskNode进行划分,使得不同角色的Task分发到与之任务角色相对应的TaskNode上,生成TaskFile及Inventory,并将TaskFile及inventory发送至Server端;其中,TaskFile及Inventory生成示例如下:
TaskFile示例:
Inventory示例:
任务执行模块:用于通过TaskNode上的Agent获取到需要执行的Task,从TaskStore中检索出相应的任务函数并执行任务,最后将任务执行结果通过grpc接口返回至Server端。
请参阅图3,是本发明实施例的kubernetes多集群管理方法的流程示意图。本发明实施例的kubernetes多集群管理方法包括以下步骤:
S1:启动Server端,并同时启动http server、grpc server以及Controller组件,并初始化Cache;
其中,http server用于接收Agent端发送的TaskFile及inventory请求;grpcserver用于向Agent端分发Task,以及接收Task的执行结果。
S2:在待部署k8s集群的节点上安装并启动Agent端,Agent端将k8s集群任务(包括但不限于部署、删除、扩缩容等)分解成设定数量的Task,通过TaskRole按角色对Task及TaskNode进行划分,生成TaskFile及Inventory,并将TaskFile及inventory发送至Server端;
其中,Taskfile及Inventory中的role(角色)一一对应,使得不同角色的Task可以分发到与之任务角色相对应的TaskNode上,Agent端通过POST接口将TaskFile及inventory发送至Server端。TaskFile及Inventory生成示例如下:
TaskFile示例:
Inventory示例:
S3:Server端接收到TaskFile及Inventory请求后,通过Paster自动解析Task的依赖关系,并转化为TaskGraph,然后调用Controller的StartGraph函数对TaskTGraph进行初始化,更新状态机,同时为TaskGraph创建一个对应的Pool,并将Inventory中的TaskNode添加到Pool中;
S4:Controller在TaskGraph启动之后,创建两个协程,一个不断刷新TaskGraph中每一个任务的状态,并将状态为Ready的任务分发给相应的TaskNode;另一个不断从Pool中的TaskNode中获取每一个任务的Task result,TaskGraph的状态机根据Task result更新TaskGraph中对应任务的状态;
S5:TaskNode上的Agent获取到需要执行的Task时,从TaskStore中检索出相应的任务函数执行Task,并将执行结果通过grpc接口返回至Server端;
S6:Controller在TaskGraph达到最终状态(Success/Failed/Canneled/Timeout)时,停止刷新TaskGraph,本次k8s部署任务结果;
其中,可通过server端的http接口查询TaskGraph的状态。
请参阅图4,为本发明实施例的终端结构示意图。该终端50包括处理器51、与处理器51耦接的存储器52。
存储器52存储有用于实现上述kubernetes多集群管理方法的程序指令。
处理器51用于执行存储器52存储的程序指令以执行kubernetes多集群管理操作。
其中,处理器51还可以称为CPU(Central Processing Unit,中央处理单元)。处理器51可能是一种集成电路芯片,具有信号的处理能力。处理器51还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
请参阅图5,图5为本发明实施例的存储介质的结构示意图。本发明实施例的存储介质存储有能够实现上述所有方法的程序文件61,其中,该程序文件61可以以软件产品的形式存储在上述存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
本发明实施例利用golang语言自研的分布式任务调度框架,并采用基于grpc协议的server-agent架构构建kubernetes多集群管理系统,通过将kubernetes集群任务分解成多个Task,按角色对Task及TaskNode进行划分,使得不同角色的Task分发到与之任务角色相对应的TaskNode上执行,从而实现了多个k8s集群并行的部署、删除、扩缩容等操作,提升了操作效率;同时使用grpc取代ssh的连接方式,解决了ssh在诸多网络环境中无法使用的问题,并支持自定义plugin,增加了操作的可扩展性。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种kubernetes多集群管理系统,其特征在于,所述多集群管理系统为基于分布式任务调度框架和grpc协议构建的系统;所述系统包括客户端和服务端,所述客户端包括:
任务分解模块:用于将kubernete集群任务分解为设定数量的任务,按照任务角色对任务及任务节点进行划分,生成任务编排文件及清单文件,并将所述任务编排文件及清单文件发送至服务端;其中,所述任务编排文件为用于描述任务与任务角色的文件,所述清单文件为用于描述任务节点与任务角色的文件,所述任务编排文件及清单文件中的任务角色一一对应;
任务执行模块:用于通过所述任务节点上的Agent接收所述服务端分发的任务,根据任务函数执行所述任务,并将所述任务执行结果返回至服务端;
所述服务端包括:
数据解析模块:用于通过解析器对所述任务编排文件及清单文件进行解析,生成由所述任务组成的有向无环图;
任务分发模块:用于调用控制器将所述有向无环图中的任务分发给所述客户端中与所述任务的任务角色相对应的任务节点。
2.根据权利要求1所述的kubernetes多集群管理系统,其特征在于,
所述任务为用于描述任务元数据的结构体,所述任务带有状态机;
所述有向无环图包含每一个任务的状态、依赖关系、参数及执行结果,所述每一个任务的状态分别包括未就绪、已就绪、运行中、成功、失败及取消。
3.根据权利要求2所述的kubernetes多集群管理系统,其特征在于,所述控制器用于通过状态机控制、管理所述有向无环图及任务的生命周期,并将状态为已就绪的任务分配给客户端对应的任务节点。
4.根据权利要求1所述的kubernetes多集群管理系统,其特征在于,所述服务端还包括:
组件启动模块:用于在服务端启动时,启动http server、grpc server以及控制器,并初始化存储器;其中,所述http server用于接收客户端发送的任务编排文件及清单文件;所述grpc server用于向所述客户端分发任务,并接收所述客户端返回的任务执行结果;所述存储器用于缓存所述有向无环图。
5.根据权利要求4所述的kubernetes多集群管理系统,其特征在于,所述任务分发模块调用控制器将所述有向无环图中的任务分发给所述客户端中与所述任务的任务角色相对应的任务节点具体为:
调用所述控制器的StartGraph函数对所述有向无环图进行初始化,更新状态机,同时为所述有向无环图创建一个对应的Pool,并将所述清单文件中的任务节点添加到Pool中;所述Pool为由所述任务节点组成的任务节点池;在所述有向无环图启动之后,调用所述控制器创建两个协程,一个协程不断刷新所述有向无环图中所述任务的状态,并将状态为已就绪的任务分发给相应的任务节点;另一个协程不断从所述Pool的任务节点中获取所述任务的执行结果,所述有向无环图的状态机根据每个任务的执行结果更新所述有向无环图中所述任务的状态。
6.一种kubernetes多集群管理方法,其特征在于,包括:
通过客户端将kubernete集群任务分解为设定数量的任务,按照任务角色对任务及任务节点进行划分,生成任务编排文件及清单文件,并将所述任务编排文件及清单文件发送至服务端;其中,所述任务编排文件为用于描述任务与任务角色的文件,所述清单文件为用于描述任务节点与任务角色的文件,所述任务编排文件及清单文件中的任务角色一一对应;
所述服务端通过解析器对所述任务编排文件及清单文件进行解析,生成由所述任务组成的有向无环图,并调用控制器将所述有向无环图中的任务分发给所述客户端中与所述任务的任务角色相对应的任务节点;
所述客户端通过任务节点上的Agent接收所述服务端分发的任务,根据任务函数执行所述任务,并将所述任务执行结果返回至服务端。
7.根据权利要求6所述的kubernetes多集群管理方法,其特征在于,所述任务为用于描述任务元数据的结构体,所述任务带有状态机;
所述有向无环图包含每一个任务的状态、依赖关系、参数及执行结果,所述每一个任务的状态分别包括未就绪、已就绪、运行中、成功、失败及取消。
8.根据权利要求7所述的kubernetes多集群管理方法,其特征在于,所述调用控制器将所述有向无环图中的任务分发给所述Agent端对应的任务节点包括:
调用所述控制器的StartGraph函数对所述有向无环图进行初始化,更新状态机,同时为所述有向无环图创建一个对应的Pool,并将所述清单文件中的任务节点添加到Pool中;
所述Pool为由所述任务节点组成的任务节点池;
在所述有向无环图启动之后,调用所述控制器创建两个协程,一个协程不断刷新所述有向无环图中所述任务的状态,并将状态为已就绪的任务分发给相应的任务节点;另一个协程不断从所述Pool的任务节点中获取所述任务的执行结果,所述有向无环图的状态机根据每个任务的执行结果更新所述有向无环图中所述任务的状态。
9.一种终端,其特征在于,所述终端包括处理器、与所述处理器耦接的存储器,其中,
所述存储器存储有用于实现权利要求6-8任一项所述的kubernetes多集群管理方法的程序指令;
所述处理器用于执行所述存储器存储的所述程序指令以执行所述kubernetes多集群管理方法。
10.一种存储介质,其特征在于,存储有处理器可运行的程序指令,所述程序指令用于执行权利要求6-8任一项所述的kubernetes多集群管理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010620870.4A CN111782370B (zh) | 2020-06-30 | 2020-06-30 | 一种kubernetes多集群管理系统、方法、终端及存储介质 |
PCT/CN2020/123184 WO2021135545A1 (zh) | 2020-06-30 | 2020-10-23 | 一种 kubernetes 多集群管理系统、方法、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010620870.4A CN111782370B (zh) | 2020-06-30 | 2020-06-30 | 一种kubernetes多集群管理系统、方法、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111782370A true CN111782370A (zh) | 2020-10-16 |
CN111782370B CN111782370B (zh) | 2022-12-06 |
Family
ID=72760869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010620870.4A Active CN111782370B (zh) | 2020-06-30 | 2020-06-30 | 一种kubernetes多集群管理系统、方法、终端及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111782370B (zh) |
WO (1) | WO2021135545A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112241314A (zh) * | 2020-10-29 | 2021-01-19 | 浪潮通用软件有限公司 | 多Kubernetes集群管理方法、装置和可读介质 |
WO2021135545A1 (zh) * | 2020-06-30 | 2021-07-08 | 平安科技(深圳)有限公司 | 一种 kubernetes 多集群管理系统、方法、终端及存储介质 |
CN113094164A (zh) * | 2021-04-27 | 2021-07-09 | 上海商汤科技开发有限公司 | 一种任务处理装置、方法、计算机设备及存储介质 |
CN113485792A (zh) * | 2021-07-08 | 2021-10-08 | 厦门服云信息科技有限公司 | 一种kubernetes集群内Pod调度方法、终端设备及存储介质 |
CN114048011A (zh) * | 2021-11-04 | 2022-02-15 | 安徽博微广成信息科技有限公司 | 多任务处理方法和系统 |
CN114237858A (zh) * | 2022-02-22 | 2022-03-25 | 北京云歌科技有限责任公司 | 一种基于多集群网络的任务调度方法及系统 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377030B (zh) * | 2021-08-12 | 2021-10-29 | 腾讯科技(深圳)有限公司 | 一种路口信号控制模型的确定方法和相关装置 |
CN113742033A (zh) * | 2021-09-08 | 2021-12-03 | 广西东信数建信息科技有限公司 | 一种kubernetes集群联邦系统及其实现方法 |
CN114116066B (zh) * | 2021-11-30 | 2024-05-07 | 湖南麒麟信安科技股份有限公司 | 一种云平台集群控制方法、系统及存储介质 |
CN114640709B (zh) * | 2022-03-31 | 2023-07-25 | 苏州浪潮智能科技有限公司 | 一种边缘节点的处理方法、装置及介质 |
CN115002514B (zh) * | 2022-05-27 | 2023-07-21 | 浙江大学 | 基于云原生控制器的spark视频转码系统及视频转码方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108809722A (zh) * | 2018-06-13 | 2018-11-13 | 郑州云海信息技术有限公司 | 一种部署Kubernetes集群的方法、装置和存储介质 |
US10389704B1 (en) * | 2018-09-12 | 2019-08-20 | Cohesity, Inc. | Cluster claim |
CN110389836A (zh) * | 2019-07-17 | 2019-10-29 | 腾讯科技(深圳)有限公司 | 一种多集群管理方法、装置、服务器及存储介质 |
CN110531987A (zh) * | 2019-07-30 | 2019-12-03 | 平安科技(深圳)有限公司 | 基于Kubernetes集群的管理方法、装置及计算机可读存储介质 |
US20190394093A1 (en) * | 2018-06-21 | 2019-12-26 | International Business Machines Corporation | Cluster creation using self-aware, self-joining cluster nodes |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109842642B (zh) * | 2017-11-24 | 2022-11-01 | 中兴通讯股份有限公司 | 一种容器化集群系统的部署方法及装置、容器化集群系统 |
CN109067828B (zh) * | 2018-06-22 | 2022-01-04 | 杭州才云科技有限公司 | 基于Kubernetes和OpenStack容器云平台多集群构建方法、介质、设备 |
CN109491776B (zh) * | 2018-11-06 | 2022-05-31 | 北京百度网讯科技有限公司 | 任务编排方法和系统 |
CN110673935A (zh) * | 2019-08-23 | 2020-01-10 | 苏州浪潮智能科技有限公司 | 一种基于Kubernetes系统的作业调度方法、设备以及存储介质 |
CN110780998A (zh) * | 2019-09-29 | 2020-02-11 | 武汉大学 | 基于Kubernetes的动态负载均衡资源调度方法 |
CN111782370B (zh) * | 2020-06-30 | 2022-12-06 | 平安科技(深圳)有限公司 | 一种kubernetes多集群管理系统、方法、终端及存储介质 |
-
2020
- 2020-06-30 CN CN202010620870.4A patent/CN111782370B/zh active Active
- 2020-10-23 WO PCT/CN2020/123184 patent/WO2021135545A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108809722A (zh) * | 2018-06-13 | 2018-11-13 | 郑州云海信息技术有限公司 | 一种部署Kubernetes集群的方法、装置和存储介质 |
US20190394093A1 (en) * | 2018-06-21 | 2019-12-26 | International Business Machines Corporation | Cluster creation using self-aware, self-joining cluster nodes |
US10389704B1 (en) * | 2018-09-12 | 2019-08-20 | Cohesity, Inc. | Cluster claim |
CN110389836A (zh) * | 2019-07-17 | 2019-10-29 | 腾讯科技(深圳)有限公司 | 一种多集群管理方法、装置、服务器及存储介质 |
CN110531987A (zh) * | 2019-07-30 | 2019-12-03 | 平安科技(深圳)有限公司 | 基于Kubernetes集群的管理方法、装置及计算机可读存储介质 |
Non-Patent Citations (3)
Title |
---|
LEILA ABDOLLAHI VAYGHAN ET.AL: "Microservice Based Architecture:Towards High-Availability for Stateful Applications with Kubernetes", 《2019 IEEE 19TH INTERNATIONAL CONFERENCE ON SOFTWARE QUALITY, RELIABILITY AND SECURITY》 * |
VÍCTOR MEDEL ET.AL: "Modelling Performance & Resource Management in Kubernetes", 《2016 IEEE/ACM 9TH INTERNATIONAL CONFERENCE ON UTILITY AND CLOUD COMPUTING》 * |
陈金光: "基于阿里云的Kubernetes容器云平台的设计与实现", 《万方数据库》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021135545A1 (zh) * | 2020-06-30 | 2021-07-08 | 平安科技(深圳)有限公司 | 一种 kubernetes 多集群管理系统、方法、终端及存储介质 |
CN112241314A (zh) * | 2020-10-29 | 2021-01-19 | 浪潮通用软件有限公司 | 多Kubernetes集群管理方法、装置和可读介质 |
CN112241314B (zh) * | 2020-10-29 | 2022-08-09 | 浪潮通用软件有限公司 | 多Kubernetes集群管理方法、装置和可读介质 |
CN113094164A (zh) * | 2021-04-27 | 2021-07-09 | 上海商汤科技开发有限公司 | 一种任务处理装置、方法、计算机设备及存储介质 |
WO2022227447A1 (zh) * | 2021-04-27 | 2022-11-03 | 上海商汤科技开发有限公司 | 一种任务处理装置、方法、计算机设备及存储介质 |
CN113485792A (zh) * | 2021-07-08 | 2021-10-08 | 厦门服云信息科技有限公司 | 一种kubernetes集群内Pod调度方法、终端设备及存储介质 |
CN113485792B (zh) * | 2021-07-08 | 2023-05-26 | 厦门服云信息科技有限公司 | 一种kubernetes集群内Pod调度方法、终端设备及存储介质 |
CN114048011A (zh) * | 2021-11-04 | 2022-02-15 | 安徽博微广成信息科技有限公司 | 多任务处理方法和系统 |
CN114237858A (zh) * | 2022-02-22 | 2022-03-25 | 北京云歌科技有限责任公司 | 一种基于多集群网络的任务调度方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2021135545A1 (zh) | 2021-07-08 |
CN111782370B (zh) | 2022-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111782370B (zh) | 一种kubernetes多集群管理系统、方法、终端及存储介质 | |
CN111506412B (zh) | 基于Airflow的分布式异步任务构建、调度系统及方法 | |
CN112416524A (zh) | 基于docker和kubernetes离线的跨平台的CI/CD的实现方法及装置 | |
CN110752947A (zh) | 一种k8s集群部署方法及装置,一种部署平台 | |
CN113220431B (zh) | 跨云的分布式数据任务调度方法、设备及存储介质 | |
CN110719311B (zh) | 分布式协调服务方法、系统及计算机可读存储介质 | |
CN113382077B (zh) | 微服务调度方法、装置、计算机设备和存储介质 | |
CN113204353B (zh) | 一种大数据平台组件部署方法及装置 | |
CN113626211A (zh) | 消息队列的切换方法、切换系统、电子设备及存储介质 | |
JP6202091B2 (ja) | 情報処理装置、及び、配備方法 | |
CN115080101B (zh) | 应用管理方法、应用订阅方法及相关设备 | |
CN113448686A (zh) | 一种资源部署方法、装置、电子设备及存储介质 | |
CN113419818B (zh) | 基础组件部署方法、装置、服务器及存储介质 | |
CN114565502A (zh) | Gpu资源管理方法、调度方法、装置、电子设备及存储介质 | |
CN111240998B (zh) | 测试用例处理方法和装置 | |
CN112698930A (zh) | 一种获取服务器标识的方法、装置、设备及介质 | |
CN110782040A (zh) | 一种pytorch任务训练方法、装置、设备及介质 | |
CN115987872A (zh) | 一种基于资源路由的云系统 | |
CN114416131A (zh) | 一种应用升级方法、应用升级平台、电子设备及存储介质 | |
Warrender et al. | Job scheduling in a high performance computing environment | |
CN114115821A (zh) | 应用开发方法及平台、应用部署方法及节点、系统及设备 | |
CN114968216A (zh) | 应用程序开发工程生成方法和装置 | |
Zhang et al. | KubeROS: A Unified Platform for Automated and Scalable Deployment of ROS2-based Multi-Robot Applications | |
Parker et al. | The SCIJump Framework for Parallel and Distributed Scientific Computing | |
CN113126961B (zh) | 流水线处理方法、装置和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40030809 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |