CN115344361A - 计算节点的管理方法及管理系统 - Google Patents
计算节点的管理方法及管理系统 Download PDFInfo
- Publication number
- CN115344361A CN115344361A CN202110528216.5A CN202110528216A CN115344361A CN 115344361 A CN115344361 A CN 115344361A CN 202110528216 A CN202110528216 A CN 202110528216A CN 115344361 A CN115344361 A CN 115344361A
- Authority
- CN
- China
- Prior art keywords
- task unit
- node
- module
- descriptor
- resource
- 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.)
- Pending
Links
- 238000007726 management method Methods 0.000 title claims abstract description 142
- 238000000034 method Methods 0.000 claims description 115
- 230000004044 response Effects 0.000 claims description 65
- 238000013507 mapping Methods 0.000 claims description 57
- 230000015654 memory Effects 0.000 claims description 51
- 238000012545 processing Methods 0.000 claims description 30
- 238000003860 storage Methods 0.000 claims description 21
- 238000013508 migration Methods 0.000 claims description 18
- 230000005012 migration Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 9
- 238000004891 communication Methods 0.000 description 65
- 230000008569 process Effects 0.000 description 31
- 238000010586 diagram Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 19
- 238000012217 deletion Methods 0.000 description 12
- 230000037430 deletion Effects 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 7
- 210000001503 joint Anatomy 0.000 description 7
- 238000012790 confirmation Methods 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- GVVPGTZRZFNKDS-JXMROGBWSA-N geranyl diphosphate Chemical compound CC(C)=CCC\C(C)=C\CO[P@](O)(=O)OP(O)(O)=O GVVPGTZRZFNKDS-JXMROGBWSA-N 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- 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
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- 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
-
- 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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- 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/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- 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/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Mobile Radio Communication Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种计算节点的管理方法及管理系统。本申请提出的技术方案中,通过将第一设备映射为边缘节点上的工作节点,然后根据调度单元描述符和第一设备映射的工作节点对应的虚拟节点上下文确定任务单元描述符,向第一设备发送包括任务单元描述符的第一信息,最后第一设备根据第一信息中的任务单元描述符创建任务单元实例的方法,使得在不支持调度单元描述符类型的终端设备或者网络节点上可以运行计算任务,以实现将计算任务部署到终端设备或者网络节点上。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种计算节点的管理方法及管理系统。
背景技术
随着移动应用和物联网技术的不断丰富和发展,计算卸载技术的出现为资源受限的终端设备提供了一种有效的解决方案。计算卸载技术是指将在资源受约束的终端设备上运行的计算任务完全或部分地卸载到资源相对丰富的边缘节点中。
目前,KubeEdge作为一个支持边缘计算的开放平台,基于Kubernetes构建,用于将容器化的应用程序编排功能扩展到边缘节点,因此能够将计算任务调度到边缘节点中,但KubeEdge并不支持将计算任务调度到终端设备中。因此,随着终端设备计算能力的增强,如何将终端设备也作为计算资源,以实现将计算任务调度到终端设备中,成为亟待解决的技术问题。
发明内容
本申请提供一种计算节点的管理方法及管理系统,可以实现将计算任务调度到终端设备或网络节点上,进一步地,可以在终端设备从一个边缘节点切换到另一个边缘节点时,避免不必要的重新调度问题。
第一方面,本申请提供一种计算节点的管理方法,应用于第一设备,该方法包括:获取第一信息,第一信息用于指示第一设备创建任务单元实例,该第一信息包括任务单元描述符,任务单元描述符是指第一设备的任务单元的描述信息,该描述信息包括任务单元类型、任务单元名称和任务单元规格;根据任务单元描述符创建任务单元实例。
本申请提供的计算节点的管理方法,第一设备可以是终端设备又或者可以是网络节点。该技术方案中,由于用于指示第一设备创建任务单元实例的第一信息中包括了任务单元描述符,而该任务单元描述符是可以被第一设备识别的,可以认为是第一设备为了运行计算任务,以任务单元的方式运行的计算任务的描述信息,任务单元是指在第一设备上运行计算任务的最小功能单位。该任务单元描述符类似于在边缘计算环境中的工作节点的调度单元描述符,该调度单元描述符是在工作节点上以调度单元的方式运行计算任务的描述信息,其中,工作节点是指运行计算任务的计算节点,在第一设备在获得了任务单元描述符之后,就可以根据任务单元描述符创建任务单元实例。因此,实现了在终端设备或者网络节点上为计算任务分配资源并运行计算任务的功能。
结合第一方面,在一种可能的实现方式中,在获取第一信息之前,该方法还包括:发送资源注册请求消息,该资源注册请求消息用于请求将第一设备映射为工作节点,资源注册请求消息包括:第一设备的资源标识和任务单元类型信息,任务单元类型信息用于指示第一设备可使用的任务单元类型。
结合第一方面,在一种可能的实现方式中,该方法还包括:获取来自第二设备的资源注册响应消息,该资源注册响应消息包括指示第一设备映射为工作节点的结果信息,其中,结果信息包括资源注册是否成功的标志,如成功或失败,以及可选的失败原因。
第二方面,本申请提供一种计算节点的管理方法,应用于第二设备,该方法包括:根据调度单元描述符和虚拟节点上下文确定任务单元描述符,该虚拟节点上下文用于指示第一设备映射的工作节点的资源信息,资源信息包括第一设备的资源标识和任务单元类型信息,任务单元类型信息包括第一设备可使用的任务单元类型,任务单元描述符是指第一设备的任务单元的描述信息,描述信息包括任务单元类型、任务单元名称和任务单元规格;向第一设备发送第一信息,该第一信息用于指示第一设备创建任务单元实例,第一信息中包括任务单元描述符。
本申请提供的计算节点的管理方法,虚拟节点上下文指示的是通过第一设备映射得到的工作节点的资源信息,并且该资源信息包括的是第一设备的资源标识和任务单元类型信息,也就是说,虚拟节点上下文指示的资源信息是关于第一设备的。其中,任务单元类型是指第一设备上的计算任务的运行方式,该任务单元是指运行计算任务的一个或一组执行实体,其中,执行实体包括进程、线程、容器、轻量级虚拟机、函数、类、方法或其它可加载或执行的文件、代码块等,同时也可以包括运行该计算任务所需的数据。例如,如果该任务单元直接在主机命名空间运行,则可以称为本地类型(也称为Native类型),如果以容器方式运行,则可以称为容器类型(也称为Container类型)。也可以根据场景自定义任务单元类型,例如,如果该第一设备支持Java线程粒度的计算迁移,则可以是Java线程类型(也称为JavaThread类型)。任务单元规格包括任务单元在第一设备上运行时的一个或一组执行实体的执行实体名称、执行实体软件包名称和可选的执行实体的执行入口、参数列表等。该技术方案中,第二设备能够根据调度单元描述符和虚拟节点上下文确定任务单元描述符,该任务单元描述符是可以被第一设备识别的,当第二设备向第一设备发送指示第一设备创建任务单元实例的第一信息时,该第一信息中需要包括任务单元描述符,以让第一设备创建任务单元实例。因此,实现了将计算任务调度到第一设备上。
结合第二方面,在一种可能的实现方式中,根据调度单元描述符和虚拟节点上下文确定任务单元描述符,包括:根据虚拟节点上下文为调度单元选择工作节点上的任务单元类型;根据调度单元描述符和任务单元类型,确定任务单元描述符。
结合第二方面,在一种可能的实现方式中,在根据调度单元描述符和虚拟节点上下文确定任务单元描述符之前,该方法还包括:获取来自第一设备的资源注册请求消息,其中,资源注册请求消息包括资源信息;根据资源注册请求消息生成第一设备映射为工作节点时的虚拟节点上下文。
结合第二方面,在一种可能的实现方式中,该方法还包括:向第一设备发送资源注册响应消息,该资源注册响应消息包括指示第一设备映射为工作节点的结果信息,其中,结果信息包括资源注册是否成功的标志,如成功或失败,以及可选的失败原因。
结合第二方面,在一种可能的实现方式中,该方法还包括:根据虚拟节点上下文生成工作节点的工作节点描述符;向控制设备发送工作节点描述符;获取控制设备根据工作节点描述符发送的调度单元描述符。
本申请提供的计算节点的管理方法,第二设备能够根据虚拟节点上下文生成工作节点描述符,由于该工作节点描述符是能够被控制设备识别的,因此控制设备可以将调度单元描述符发送到第一设备映射的工作节点上。
结合第二方面,在一种可能的实现方式中,该方法还包括:获取迁出请求消息,该迁出请求消息用于请求迁出任务单元上下文,其中,任务单元上下文包括任务单元描述符与工作节点之间的映射关系;发送任务单元上下文。
本申请提供的计算节点的管理方法,第二设备可以获取迁出请求消息,迁出任务单元上下文并发送。该技术方案中,当终端设备从一个边缘节点切换到另一个边缘节点时,可以将终端设备在原来的边缘节点中关于运行计算任务的相关信息迁移到当前的边缘节点中,即避免了当终端设备切换时,控制设备重新为终端设备上的计算任务进行调度的过程。
第三方面,本申请提供一种计算节点的管理装置,该装置应用于第一设备,包括:收发模块,用于获取第一信息,该第一信息用于指示第一设备创建任务单元实例,该第一信息包括任务单元描述符,任务单元描述符是指第一设备的任务单元的描述信息,该描述信息包括任务单元类型、任务单元名称和任务单元规格;处理模块,用于根据任务单元描述符创建任务单元实例。
结合第三方面,在一种可能的实现方式中,在获取第一信息之前,收发模块还用于:发送资源注册请求消息,资源注册请求消息用于请求将第一设备映射为工作节点,资源注册请求消息包括:第一设备的资源标识和任务单元类型信息,任务单元类型信息包括第一设备可使用的任务单元类型。
结合第三方面,在一种可能的实现方式中,收发模块还用于:获取来自第二设备的资源注册响应消息,该资源注册响应消息包括指示第一设备映射为工作节点的结果信息,该结果信息包括资源注册是否成功的标志,如成功或失败,以及可选的失败原因。
第四方面,本申请提供一种计算节点的管理装置,该装置应用于第二设备,该装置包括:虚拟节点代理模块,用于根据调度单元描述符和虚拟节点上下文确定任务单元描述符,该虚拟节点上下文用于指示第一设备映射的工作节点的资源信息,资源信息包括第一设备的资源标识和任务单元类型信息,任务单元类型信息包括第一设备可使用的任务单元类型,任务单元描述符是指第一设备的任务单元的描述信息,描述信息包括任务单元类型、任务单元名称和任务单元规格;资源映射管理器模块,用于向第一设备发送第一信息,该第一信息用于指示第一设备创建任务单元实例,该第一信息中包括任务单元描述符。
结合第四方面,在一种可能的实现方式中,虚拟节点代理模块具体用于:根据虚拟节点上下文为调度单元选择工作节点上的任务单元类型;根据调度单元描述符和任务单元类型,确定任务单元描述符。
结合第四方面,在一种可能的实现方式中,资源映射管理器模块还用于:获取来自第一设备的资源注册请求消息,该资源注册请求消息包括资源信息;根据资源注册请求消息生成第一设备映射为工作节点时的虚拟节点上下文。
结合第四方面,在一种可能的实现方式中,资源映射管理器模块还用于:向第一设备发送资源注册响应消息,其中,资源注册响应消息包括指示第一设备映射为工作节点的结果信息,该结果信息包括资源注册是否成功的标志,如成功或失败,以及可选的失败原因。
结合第四方面,在一种可能的实现方式中,虚拟节点代理模块还用于:根据虚拟节点上下文生成工作节点的工作节点描述符;向控制设备发送工作节点描述符;获取控制设备根据工作节点描述符发送的调度单元描述符。
结合第四方面,在一种可能的实现方式中,虚拟节点代理模块还用于:获取迁出请求消息,该迁出请求消息用于请求迁出任务单元上下文,任务单元上下文包括任务单元描述符与工作节点之间的映射关系;发送任务单元上下文。
第五方面,本申请提供一种计算节点的管理系统,该管理系统包括第一设备、第二设备和控制设备,第一设备中部署任务单元代理模块,控制设备中包含第一设备映射为工作节点时的工作节点描述符;控制设备,用于根据第一设备映射为工作节点时的工作节点描述符,将调度单元分配给该工作节点和向第二设备发送调度单元的调度单元描述符;第二设备,用于根据调度单元描述符和虚拟节点上下文确定任务单元描述符,虚拟节点上下文用于指示第一设备映射的工作节点的资源信息,资源信息包括第一设备的资源标识和任务单元类型信息,任务单元类型信息包括第一设备可使用的任务单元类型,任务单元描述符是指第一设备的任务单元的描述信息,描述信息包括任务单元类型、任务单元名称和任务单元规格;第二设备,还用于向第一设备发送第一信息,该第一信息用于指示第一设备创建任务单元实例,第一信息中包括任务单元描述符;任务单元代理模块,用于根据任务单元描述符创建任务单元实例。
结合第五方面,在一种可能的实现方式中,第二设备具体用于:根据虚拟节点上下文为调度单元选择工作节点上的任务单元类型;根据调度单元描述符和任务单元类型,确定任务单元描述符。
结合第五方面,在一种可能的实现方式中,任务单元代理模块还用于:向第二设备发送资源注册请求消息,资源注册请求消息用于请求将第一设备映射为工作节点,资源注册请求消息包括资源信息;第二设备还用于:获取资源注册请求消息,根据资源注册请求消息生成第一设备映射为工作节点时的虚拟节点上下文。
结合第五方面,在一种可能的实现方式中,第二设备还用于:根据虚拟节点上下文生成工作节点的工作节点描述符;向控制设备发送工作节点描述符;获取控制设备根据工作节点描述符发送的调度单元描述符。
结合第五方面,在一种可能的实现方式中,第二设备还用于:获取迁出请求消息,迁出请求消息用于请求迁出任务单元上下文,任务单元上下文包括任务单元描述符与工作节点之间的映射关系;发送任务单元上下文。
结合第五方面,在一种可能的实现方式中,控制设备部署在边缘节点。
结合第五方面,在一种可能的实现方式中,控制设备部署在云端节点。
第六方面,本申请提供一种计算节点的管理装置,包括至少一个处理器和存储器,处理器和存储器耦合,存储器存储有程序指令,当存储器存储的程序指令被处理器执行时,使得计算节点的管理装置以执行如第一方面或第二方面或其中任意一种可能的实现方式所述的计算节点的管理方法。
第七方面,本申请提供一种计算节点的管理装置,包括逻辑电路和输入输出接口,输入输出接口用于输入或输出指令或信息,逻辑电路用于执行指令或者根据信息,以执行如第一方面或其中任意一种可能的实现方式所述的方法。
第八方面,本申请提供一种计算节点的管理装置,包括逻辑电路和输入输出接口,输入输出接口用于输入或输出指令或信息,逻辑电路用于执行指令或者根据信息,以执行如第二方面或其中任意一种可能的实现方式所述的方法。
第九方面,本申请提供一种计算机可读存储介质,该计算机可读介质存储用于计算机执行的程序指令,该程序指令包括用于执行如第一方面或第二方面或其中任意一种可能的实现方式所述的计算节点的管理方法。
第十方面,本申请提供一种计算机程序产品,该计算机程序产品中包括计算机程序指令,当计算机程序指令在计算机上运行时,使得计算机执行如第一方面或第二方面或其中任意一种可能的实现方式所述的计算节点的管理方法。
其中,第三方面至第十方面中任一种实现方式所带来的技术效果可参见上述第一方面的任一种可能的实现方法所带来的技术效果,或者参见上述第二方面的任一种可能的实现方法所带来的技术效果,不予赘述。
附图说明
图1为本申请一个实施例提供的Kubernetes的架构示意图;
图2为本申请一个实施例提供的KubeEdge的架构示意图;
图3为本申请一个实施例提供的计算节点的管理系统的架构示意图;
图4为本申请一个实施例提供的计算节点的管理系统的结构性示意图;
图5为本申请一个实施例提供的控制设备部署在云端节点的结构性示意图;
图6为本申请一个实施例提供的一种计算节点的管理方法的示意性流程图;
图7为本申请一个实施例提供的一种计算节点的调度方法的示意性流程图;
图8为本申请另一个实施例提供的一种计算节点的管理方法的示意性流程图;
图9为本申请另一个实施例提供的一种计算节点的注册方法的示意性流程图;
图10为本申请又一个实施例提供的一种计算节点的切换方法的示意性流程图;
图11为本申请一个实施例提供的计算节点的管理系统的结构性示意图;
图12为本申请另一个实施例提供的计算节点的管理系统的结构性示意图;
图13为本申请又一个实施例提供的计算节点的管理系统的结构性示意图;
图14为本申请一个实施例提供的计算节点的管理装置的结构性示意图;
图15为本申请另一个实施例提供的计算节点的管理装置的结构性示意图;
图16为本申请又一个实施例提供的计算节点的管理装置的结构性示意图;
图17为本申请一个实施例提供的计算节点的管理装置的结构性示意图。
具体实施方式
为了易于理解,首先对本申请所涉及到的相关术语进行说明。
1、Kubernetes
Kubernetes,是一个开源的,用于管理集群中多个节点上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效。在Kubernetes中,可以创建多个容器,由容器运行应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
图1示出了Kubernetes的相关组成部件。如图1所示,Kubernetes包括控制面节点和工作节点,控制面节点主要用于管理工作节点,工作节点主要用于运行容器化的应用实例。开发人员可以通过应用编程接口客户端(例如kubectl)或应用编程接口(ApplicationProgramming Interface,API)服务器管理Kubernetes。对于控制面节点,包括KubernetesAPI服务器(称为kube-apiserver),调度器(称为kube-scheduler)、控制器管理器(称为kube-controller manager)和数据库(称为etcd);工作节点中包括节点代理(称为kubelet)。
其中,kube-apiserver是集群控制面的统一的对外接口,kube-scheduler主要用于对Pod(由一个或多个容器组成)的调度工作,负责将Pod分配到工作节点上,其中Pod是Kubernetes的最小调度单位,kube-controller manager包括Kubernetes自带的多种控制器,用于Kubernetes资源的管理,etcd可以理解为存储,用于保存集群中一些相关的数据,kubelet是部署在工作节点的代理,用于向kube-apiserver注册工作节点、管理Pod和上报工作节点的资源信息等。
图2为本申请一个实施例提供的现有技术中的KubeEdge系统,该系统可以分为云端、边缘端和设备端三个部分。
云端包括边缘节点控制器(也称为EdgeController)模块,设备控制器(也称为DeviceController)模块和云端通信接口(也称为CloudHub)模块,其中,EdgeController模块,用于实现边缘节点的管理和应用状态元数据云边协同;DeviceController模块,用于实现接入和管理终端设备和元数据的云边协同;CloudHub模块,用于实现云端与边缘端的通信消息的封装,以及websocket(一种基于传输控制协议的全双工通信协议)连接或QUIC(一种基于用于数据报协议的多路复用通信协议)连接的维护。可以理解的是,EdgeController模块和DeviceController模块分别是控制设备中的一种控制器,通过Kubernetes API与Kubernetes API服务器交互。
边缘端包括边缘端通信接口(也称为EdgeHub)模块、信息管理(也称为MetaManager)模块、设备孪生(也称为DeviceTwin)模块、服务总线(也称为ServiceBus)模块、边缘节点代理(也称为Edged)模块、事件总线(也称为EventBus)模块、边缘节点资源、消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)协议中介(也称为MQTTBroker)模块和转换器(也称为Mapper)模块。其中,EdgeHub模块,用于实现边缘端与云端的通信;MetaManager模块,用于实现节点级的元数据的本地持久化;DeviceTwin模块,用于实现终端设备状态的同步和持久化;ServiceBus模块,用于与超文本传输协议的交互;EventBus模块,用于将MQTT消息转换成为该系统支持的消息;Edged模块,主要用于轻量化实现Pod生命周期管理;边缘节点资源是指该系统中可以运行边缘计算任务的资源,如中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)、内存、硬盘(包括机械硬盘或固态硬盘等)和网络接口等;MQTT Broker模块以MQTT协议提供消息接口;Mapper模块,用于将设备端的不同的传输技术或通信协议转换成MQTT协议。例如,终端设备1和终端设备2使用的是两种不同的传输技术或通信协议,但是可以通过Mapper模块转换为MQTT协议,并和MQTT Broker模块交互。
对于图2所示的KubeEdge系统,当收到计算任务的部署请求时,云端的控制设备可以为该计算任务生成调度单元描述符,并将该调度单元描述符和工作节点的名称发送给边缘节点中的边缘节点代理模块,边缘节点代理模块就可以基于该调度单元描述符,为计算任务分配资源。此外,还可以通过MQTT Broker模块和Mapper模块实现对终端设备的状态管理。
其中,通过MQTT Broker模块和Mapper模块实现对终端设备的状态管理可以参考相关技术描述,此处不再赘述。
但是,对于图2所示的KubeEdge系统,目前不支持将终端设备作为工作节点,即无法将计算任务部署到终端设备上。
鉴于此,本申请提供一种计算节点的管理方法,通过将终端设备映射为边缘节点上的工作节点,同时将控制设备发送的调度单元描述符转换成任务单元描述符,以使得在不支持调度单元描述符类型的终端设备上运行控制设备调度的计算任务,从而实现将计算任务部署到终端设备上。
此外,本申请还通过控制设备在收到终端设备的资源注册请求消息时,对终端设备是否从一个边缘节点切换到另一个边缘节点进行检测,当确定终端设备发生切换时,通过将终端设备在原来的边缘节点中的与运行计算任务相关的信息迁移到终端设备切换后所在的边缘节点中,以避免控制设备重新调度的问题。
图3为本申请一个实施例提供的计算节点的管理系统的架构示意图。如图3所示,本实施例的管理系统300包括控制设备、第二设备和第一设备。其中,第二设备也称为虚拟节点管理设备。
本申请实施例提供的计算节点的管理方法可以用于任一通信系统,该通信系统可以为第三代合作伙伴计划(third generation partnership project,3GPP)通信系统,例如,LTE系统,又可以为5G中的NR系统、NR V2X系统,还可以应用于LTE和5G混合组网的系统中,或者设备到设备(device-to-device,D2D)通信系统、机器到机器(machine tomachine,M2M)通信系统、物联网(Internet of Things,IoT)、频分双工(frequencydivision duplex,FDD)系统、时分双工(time division duplex,TDD)系统、卫星通信系统,以及其他下一代通信系统(例如,6G系统),也可以为非3GPP通信系统,不予限制。
本申请实施例提供的计算节点的管理方法可以应用于各种通信场景,例如可以应用于以下通信场景中的一种或多种:增强移动宽带(enhanced mobile broadband,eMBB)、超可靠低时延通信(ultra reliable low latency communication,URLLC)、机器类型通信(machine type communication,MTC)、物联网(internet of things,IoT)、窄带物联网(narrow band internet of thing,NB-IoT)、客户前置设备(customer premiseequipment,CPE)、增强现实(augmented reality,AR)、虚拟现实(virtual reality,VR)、大规模机器类型通信(massive machine type communications,mMTC)、设备到设备(deviceto device,D2D)、车联网(vehicle to everything,V2X)、车辆到车辆(vehicle tovehicle,V2V)等。
在此说明的是,本实施例中,第一设备可以是终端设备,例如手机(mobilephone)、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(Virtual Reality,VR)终端、增强现实(Augmented Reality,AR)终端、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程医疗(remote medical)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等等,也可以是通过有线网络连接的终端,也可以是网络节点,例如数据中心里的物理服务器、云计算环境中的虚拟机或具有计算功能的通信网元等,在此不做限定。
该管理系统300中,第一设备中部署有任务单元代理模块,第二设备中包括由第一设备通过映射得到的工作节点,本申请中,将该通过第一设备映射得到的工作节点也称为虚拟节点。第一设备与控制设备通过虚拟节点管理设备进行连接。
该管理系统300中,控制设备可以包括两种部署方式:第一种是控制设备与虚拟节点管理设备一块部署在边缘节点;第二种是控制设备部署在云端节点。
下面,结合图4,详细地给出一种计算节点的管理系统的结构性示意图。
如图4所示,在该方式下,计算节点的管理系统还包括边缘节点管理设备和任务单元仓库,边缘节点管理设备中包括边缘节点代理模块和边缘节点资源,任务单元仓库中包括原生任务单元仓库和容器注册表。可选地,任务单元仓库可以部署在边缘节点,但也可以部署在其它位置,本申请对此不做限定。
该方式下,控制设备包括系统控制器模块,用于将计算任务调度并部署到边缘节点管理设备中的边缘节点资源中,或者将计算任务调度并部署到终端设备或者网络节点映射到虚拟节点管理设备中的工作节点对应的资源中。
边缘节点管理设备,包括:边缘节点代理模块和边缘节点资源。其中,边缘节点代理模块用于管理边缘节点资源、将边缘节点注册到系统控制器模块和接收系统控制器模块的调度信息;边缘节点资源,用于为计算任务提供资源。
虚拟节点管理设备,包括:任务单元适配器模块、工作节点适配器模块、虚拟节点代理模块、虚拟节点资源库模块和资源映射管理器模块。
任务单元适配器模块,用于接收调度单元描述符和任务单元类型,将调度单元描述符转换成适合在终端设备或网络节点运行的任务单元的任务单元描述符。
其中,调度单元描述符,是指系统控制器模块定义的调度单元的描述信息,包括调度单元名称、调度单元命名空间、规格和状态等,如Kubernetes中的Pod(可以认为是由一个或者一个以上的容器组成的)的描述信息;调度单元,是指系统控制器模块定义的最小调度单位,如Kubernetes中的Pod。任务单元类型,是指分配到终端设备或网络节点上的任务单元的运行方式,如:若该任务单元直接在主机命名空间运行,则称该任务单元类型为本地(也称为Native)类型,若以容器方式运行,则称该任务单元类型为容器(也称为Container)类型,或更具体的,若以Java线程的方式运行,则称该任务单元类型为Java线程(也称为JavaThread)类型。
任务单元,是指在终端设备或网络节点上运行计算任务的最小功能单位,包括运行计算任务的一个或一组执行实体和可选的运行该计算任务所需的数据,该执行实体包括进程、线程、容器、轻量级虚拟机、函数、类、方法或其它可加载或执行的文件、代码块等。任务单元描述符,是指任务单元的描述信息,包括任务单元类型、任务单元名称和任务单元规格等。
工作节点适配器模块,用于接收虚拟节点表中的虚拟节点上下文,并转换成适合系统控制器模块的工作节点描述符。其中,工作节点描述符,是指系统控制器模块定义的工作节点的描述信息,包括节点名称、规格和状态等。
虚拟节点代理模块,用于管理一个或多个虚拟节点的资源,包括:检测虚拟节点资源库中的虚拟节点表的变化,将虚拟节点注册为系统控制器模块的工作节点;接收系统控制器模块的调度信息,获取调度单元描述符,调用任务单元类型选择器,获取该虚拟节点的任务单元类型,调用任务单元适配器,将调度单元描述符转换成该任务单元类型对应的任务单元描述符,生成任务单元上下文,并写入虚拟节点资源库的任务单元表中。
其中,任务单元类型选择器,用于选择某个调度单元在某个虚拟节点上的任务单元类型。
虚拟节点资源库模块,包括:虚拟节点表和任务单元表。虚拟节点表,包括虚拟节点上下文,虚拟节点上下文包括虚拟节点标识、虚拟节点群组、任务单元类型列表、虚拟节点地址、资源总量信息、可分配资源信息和虚拟节点状态等。其中,虚拟节点标识,用于唯一标识该虚拟节点;虚拟节点群组,是指可进行资源共享的虚拟节点所构成的群组,系统控制器模块对于允许分配到该群组的调度单元,从该群组的选择一个合适的虚拟节点,将调度单元分配到该虚拟节点;任务单元类型列表,用于描述该虚拟节点所支持的一个或多个任务单元类型;资源总量信息包括CPU总量、内存总量和存储总量;可分配资源信息包括可分配CPU数量、可分配内存数量和可分配存储数量;节点系统信息由系统控制器模块定义,包括机器标识、系统全局唯一标识、内核版本、节点架构等。任务单元表,包括任务单元上下文,任务单元上下文包括任务单元名称、任务单元描述符、虚拟节点标识、任务单元阶段、任务单元状态、调度单元名称和调度单元命名空间等。其中,任务单元名称,用于唯一标识该任务单元;任务单元阶段,由系统控制器模块定义的调度单元的运行阶段,在此用于指示任务单元的运行阶段。
资源映射管理器模块,用于接收资源注册请求消息,将该资源映射为边缘节点上的一个虚拟节点,为该虚拟节点分配网际协议(Internet Protocol,IP)地址,生成虚拟节点上下文,并写入虚拟节点资源库的虚拟节点表中;或接收状态更新消息,若消息类型为更新资源状态消息,则更新到虚拟节点资源库的虚拟节点表中对应虚拟节点上下文的对应字段;若消息类型为更新任务单元状态消息,则更新到虚拟节点资源库的任务单元表中对应任务单元上下文的对应字段;或检测虚拟节点资源库的任务单元表的状态,发送任务单元管理请求消息;若有新增任务单元上下文,且任务单元状态被设置为预设的表示正在创建任务单元的标志,如“正在创建”,则发送创建任务单元请求消息到所分配的虚拟节点对应的任务单元代理模块;若有任务单元状态被设置为预设的表示任务单元正在删除的标志,如“正在删除”,则发送删除任务单元请求消息到所分配的虚拟节点对应的任务单元代理模块;或设置第一定时器,若达到预设的阈值而没有收到更新资源状态消息,则认为该资源已经失效,将该虚拟节点上下文的虚拟节点状态和该虚拟节点标识对应的所有任务单元上下文的任务单元状态设置为预设的表示失效的虚拟节点的标志,如“节点失效”;或设置第二定时器,若达到预设的阈值则从虚拟节点表中删除失效的虚拟节点对应的虚拟节点上下文和从任务单元表中删除失效的虚拟节点对应的所有任务单元上下文。
任务单元代理模块,用于发送资源注册请求消息,完成可调度资源到系统控制器模块的注册。其中,可调度资源,是指可用于运行由系统控制器模块分配来的任务单元的资源,例如可以是终端设备或网络节点的全部物理资源,也可以是从物理资源中通过虚拟化等技术隔离出来的隔离资源,本申请对此不做限定,该资源包括CPU、GPU、内存、硬盘(包括机械硬盘或固态硬盘等)和网络接口等。发送状态更新消息,包括更新资源状态消息和更新任务单元状态消息;或接收任务单元管理请求消息,若消息类型为创建任务单元请求消息,则创建任务单元实例;若消息类型为删除任务单元请求消息,则删除对应任务单元实例。
其中,资源映射管理器模块与任务单元代理模块之间的消息可以分为三类:资源注册消息、状态更新消息和任务单元管理消息。
示例性地,表1为资源映射管理器模块和任务单元代理模块的消息列表。
表1
可选地,原生任务单元仓库,提供接口用于上传、下载原生任务单元的执行实体软件包;其中,原生任务单元是指在终端设备或网络节点的本地主机命名空间中直接运行的一个或一组执行实体和可选的运行该执行实体所需的数据,例如一组可执行文件、动态链接库、Java Jar包、Java类文件、Java字节码文件、JavaScript代码文件、Python代码文件、配置文件、人工智能(Artificial Intelligence,AI)模型等;容器注册表,用于提供容器镜像;另外,任务单元仓也可以包括自定义任务单元类型的软件仓库或镜像仓库,例如:JavaJar包仓库、轻量级虚拟机镜像仓库等,本申请对此不做限定。
下面,结合图5,详细地给出一种控制设备部署在云端节点的结构性示意图。
如图5所示,该方式中,控制设备部署在云端节点,边缘节点管理设备和虚拟节点管理设备部署在边缘节点,控制设备可以对接一个或多个边缘节点上的边缘节点管理设备和虚拟节点管理设备。
可选地,任务单元仓库可以部署在边缘节点,但也可以部署在其它位置。
可选地,该方式中的控制设备还可以包括切换控制器模块,用作第一设备从一个边缘节点切换到另一个边缘节点时,将第一设备映射到虚拟节点管理设备中的工作节点的虚拟节点对应的任务单元上下文迁移到另一个边缘节点中的虚拟节点管理设备中。
其中,云端节点包括一个或多个物理服务器、虚拟机等,可以由现有的公有云提供,也可以由自行搭建的私有云提供,或由混合云提供,并且私有云可以位于远端也可以位于本地,本申请实施例对此不做限定。边缘节点包括部署在边缘端的一个或多个物理服务器、虚拟机等,其中,本申请实施例对如何获取该一个或多个物理服务器、虚拟机的方式不做限定。该方式中,由于云端节点和边缘节点可能存在不可靠的网络连接,所以该方式中,云端节点上还部署有云端网络代理模块,边缘节点上部署有边缘网络代理模块。
在此说明的是,图5所示的结构中,除云端网络代理模块和边缘网络代理模块之外的各个组成部分的详细描述可以参考图4所示实施例,此处不再赘述。
可以理解的是,对于边缘节点和云端节点之间的网络连接比较稳定的情况下,也可以不包括云端网络代理模块和边缘网络代理模块,本申请实施例对此不做限定。
图6为本申请一个实施例提供的一种计算节点的管理方法的示意性流程图。该计算节点的管理方法可以应用于图4或图5中的计算节点的管理系统中。如图6所示,本实施例的方法可以包括S601、S602和S603。
S601,根据调度单元描述符和虚拟节点上下文确定任务单元描述符,该虚拟节点上下文用于指示第一设备映射的工作节点的资源信息,资源信息包括第一设备的资源标识和任务单元类型信息,任务单元类型信息包括第一设备可使用的任务单元类型,任务单元描述符包括第一设备的任务单元的描述信息,该描述信息包括以下至少一种:任务单元的任务单元类型、任务单元的任务单元规格。
其中,调度单元描述符,是指调度单元的描述信息,包括调度单元名称、调度单元命名空间、规格和状态等。示例性地,如Kubernetes系统的调度单元为Pod,对应的调度单元描述符可以是Pod的描述信息。其具体实现过程可以参考相关技术描述,此处不再赘述。
可以理解的是,当有一个需要进行部署的计算任务时,计算节点的管理系统首先会为该计算任务对应的调度单元分配一个工作节点,以完成对该计算任务的部署。因此,对于计算节点的管理系统而言,需要获知其包括的每一个工作节点包括的资源信息。在此说明的是,工作节点的详细描述可以参考相关技术中的描述,此处不再赘述。
本实施例中,对于第一设备映射得到的工作节点,通过虚拟节点上下文来指示工作节点包括的资源信息,并且,本实施例中,资源信息包括的是第一设备的资源标识和任务单元类型信息,即该资源信息实际上对应的是第一设备的资源信息。其中,任务单元类型信息包括第一设备可使用的任务单元类型。因此,当一个调度任务分配到第一设备映射的工作节点时,可以通过该工作节点对应的虚拟节点上下文获知能够为计算任务调度的第一设备的资源信息。
本实施例中,虽然第一设备本身不能够作为工作节点,但是,由于第二设备中包括了第一设备映射的工作节点,而该工作节点是可以被计算节点的管理系统的控制设备识别的,因此,当计算节点的管理系统在为调度单元分配资源时,是可以分配到该第一设备映射的工作节点的。
还可以理解是,要将计算任务调度到第一设备上,调度单元描述符可能并不能被第一设备识别,从而使得第一设备不能为计算任务分配相应的资源。因此,本实施例中,通过将调度单元描述符转换为能够被第一设备识别的任务单元描述符,可以使在不支持调度单元类型的第一设备上运行计算任务。其中,任务单元描述符是指分配到第一设备上运行计算任务的最小功能单位的描述信息,包括任务单元类型、任务单元名称和任务单元规格等,任务单元规格包括任务单元在第一设备上运行时的一个或一组执行实体的执行实体名称、执行实体软件包名称和可选的执行实体的执行入口、参数列表等。
在一种可实现方式中,从调度单元描述符到任务单元描述符可以是根据预设的转换规则,本申请实施例对此不做限定。
S602,第二设备向第一设备发送第一信息,所述第一信息用于指示第一设备创建任务单元实例,第一信息中包括任务单元描述符,相应地,第一设备接收该第一信息。
应理解,本实施例中的工作节点是由第一设备映射得到的,该工作节点其实是不包括任何资源的,真正为调度单元分配资源的应该是第一设备。因此,当第二设备获得任务单元描述符之后,就向第一设备发送第一信息,指示第一设备创建任务单元实例,并且,向第一设备发送的第一信息包括任务单元描述符。
S603,第一设备根据任务单元描述符创建任务单元实例。
在第一设备接收到第一信息后就可以对包括的资源进行管理,为计算任务分配相应的资源,即创建任务单元实例。
本申请实施例提供的计算节点的管理方法,由于第一设备映射为了工作节点,因此可以将调度单元分配到该第一设备映射的工作节点上,同时由于第二设备可以将调度单元描述符转换成适配于第一设备的任务单元描述符,即使得调度单元和第一设备的任务单元在类型和运行方式上解耦,从而可以使在不支持调度单元类型的第一设备上运行计算任务。
在一种可实现方式中,S601可以包括:根据虚拟节点上下文为调度单元选择工作节点上的任务单元类型;根据调度单元描述符和任务单元类型,确定任务单元描述符。
其中,任务单元类型的描述可以参考上述描述,此处不再赘述。
下面以第一设备是终端设备,图4或图5所示的系统为例,结合图7,说明一种计算节点的调度方法。该方法可以包括S701、S702、S703、S704、S705、S706、S707、S708、S709和S710。
S701,系统控制器模块为调度单元分配工作节点。
S702,若该调度单元分配到了边缘节点,则系统控制器模块发送调度单元描述符到边缘节点代理模块,边缘节点代理模块在边缘节点创建调度单元实例。
该步骤的实现过程可以参考相关技术描述,此处不再赘述。
S703,若该调度单元分配到了由第一设备映射的虚拟节点,系统控制器模块发送调度单元描述符到虚拟节点代理模块。
S704,虚拟节点代理模块调用任务单元类型选择器,为该调度单元选择该虚拟节点上的任务单元类型。
其中,任务单元类型选择器用于选择出任务单元类型。
可以理解的是,任务单元类型是指分配到第一设备上的任务单元的运行方式。例如,如果该任务单元直接在主机命名空间运行,则称该任务单元类型为Native类型,若以容器方式运行,则称该任务单元类型为Container类型,或更具体的,若以Java线程的方式运行,则称该任务单元类型为JavaThread类型。
还可以理解的是,对于第一设备,其运行任务单元的方式可以包括多个,因此,为了使得第一设备运行任务单元,就需要为该任务单元在该多个运行方式中选择出一个在第一设备上运行的任务单元类型,或者也可以根据预设的规则选择出合适于该任务单元在第一设备上运行的任务单元类型。
本实施例中,为了能够获得调度单元最后在第一设备上运行时的任务单元类型,通过任务单元类型选择器来实现。其中,任务单元类型选择器的实现方式可以有多种,本申请实施例对此不做限定。
S705,虚拟节点代理模块调用任务单元适配器模块,参数包括:调度单元描述符、任务单元类型等。
S706,虚拟节点代理模块从任务单元适配器模块获取适配后的任务单元描述符。
S707,虚拟节点代理模块在虚拟节点资源库模块中新增任务单元上下文,内容包括任务单元名称、任务单元描述符、虚拟节点标识、任务单元阶段、任务单元状态、调度单元名称和调度单元命名空间等,其中任务单元阶段的值为空,任务单元状态设置为预设的表示任务单元正在创建的标志,如“正在创建”。
S708,资源映射管理器模块检测到虚拟节点资源库模块中新增了任务单元上下文,则读取该上下文。
S709,若该任务单元上下文的任务单元状态为预设的表示正在创建任务单元的标志,如“正在创建”,则资源映射管理器模块发送创建任务单元请求消息到该虚拟节点对应的任务单元代理模块,消息包括任务单元描述符。
S710,任务单元代理模块接收创建任务单元请求消息,根据消息里包括的任务单元描述符,可选地,若终端设备上不存在运行任务单元所需的执行实体软件包、容器镜像或自定义任务单元类型的代码和数据文件,则从任务单元仓库下载该执行实体软件包、容器镜像和自定义的代码和数据文件,然后创建任务单元实例。
在此说明的是,任务单元实例创建完毕后,任务单元代理模块和虚拟节点代理模块分别以独立的时间周期或事件触发进行任务单元的状态维护,即:任务单元代理模块维护终端设备或网络节点上任务单元实例到任务单元上下文的状态同步;虚拟节点代理模块维护任务单元上下文到系统控制器模块的调度单元的状态同步。
该实现方式中提供的计算节点的管理方法,可以通过任务单元适配器模块将调度单元描述符转换为任务单元描述符,使在不支持调度单元类型的终端设备上运行系统控制器模块调度的计算任务,通过资源映射管理器模块检测虚拟节点资源库模块中的任务单元表中的变化并向任务单元代理模块发送创建单元请求消息的方式,将计算任务部署到第一设备上。
应理解,如果要在终端设备或网络节点上为计算任务分配资源,前提是终端设备或网络节点成为工作节点。因此,下面结合图8,介绍本申请另一个实施例提供的一种计算节点的管理方法的示意性流程图。该计算节点的管理方法可以应用于图4或图5中的计算节点的管理系统中,能够将第一设备通过虚拟节点管理设备映射为可被系统识别的工作节点。在此说明的是,本申请中,对第一设备通过虚拟节点管理设备映射的能够被识别的工作节点也称为虚拟节点。
如图8所示,本实施例的方法可以包括S801、S802和S803。
S801,第一设备向虚拟节点管理设备发送资源注册请求消息,该资源注册请求消息用于请求将第一设备映射为工作节点,资源注册请求消息包括:第一设备的资源标识和任务单元类型信息,任务单元类型信息用于指示第一设备可使用的任务单元类型。
其中,资源标识,是指第一设备上可调度资源的标识,用于唯一标识该可调度资源。该资源标识可以是终端设备或网络节点的标识,也可以是从物理资源中申请资源的应用或用户的标识,也可以是系统分配隔离资源时分配的标识,本申请实施例对此不做限定。
任务单元类型信息可以认为是第一设备能够支持的任务单元的类型的描述,例如终端设备支持在本地主机命名空间中直接运行任务单元,则任务单元类型列表中就可以包括原生类型,在一种可实现方式中,该任务单元类型信息可以用列表表示。
S802,虚拟节点管理设备根据资源注册请求消息生成第一设备映射为工作节点时的述虚拟节点上下文。
以第一设备是终端设备为例,可以理解的是,如果要在终端设备上运行计算任务,前提是终端设备成为工作节点,并且该工作节点包括的资源信息应该被计算节点的管理系统获知,这样当有计算任务需要分配时,才有可能会分配到该工作节点上。因此,本申请实施例中,根据资源注册请求消息,将终端设备的资源信息映射为虚拟节点上下文,该虚拟节点上下文可以认为是该虚拟节点包括的信息。
可以理解的是,在虚拟节点管理设备根据资源注册请求消息生成虚拟节点上下文之后,还可以包括S803~S804。
S803,根据虚拟节点上下文生成工作节点的工作节点描述符。
对于控制设备来说,其可以通过工作节点描述符来确定一个节点是否是可以被分配计算任务的工作节点。因此,本申请实施例中,根据资源注册请求消息,根据第一设备映射的工作节点的虚拟节点上下文生成能够被控制设备识别的工作节点描述符,这样就可以被控制设备用于进行计算任务的调度。
其中,根据虚拟节点上下文生成工作节点的工作节点描述符,可以是根据预设的映射表进行映射或者根据映射规则进行映射,又或者可以是其他方式,本申请实施例对此不做限定。
S804,向控制设备发送工作节点描述符。
可以理解的是,虚拟节点管理设备向控制设备发送工作节点描述符后,就可以通过将该工作节点描述符对应的节点注册为工作节点。例如通过调用控制设备的“创建节点”接口,将该工作节点描述符对应的节点注册为工作节点。具体可参考相关技术描述,此处不再赘述。
本申请实施例提供的方法,通过虚拟节点管理设备将资源注册请求消息转换成了虚拟节点上下文,然后再将该虚拟节点上下文转换为可以被控制设备识别的工作节点描述符,因此对于控制设备来说,当接收到第一设备映射的工作节点的工作节点描述符时,会认为该工作节点描述符对应的节点是一个工作节点,从而能够将计算任务分配到该第一设备映射的工作节点上,进一步实现将计算任务调度到第一设备上。
下面以图4或者图5为例,结合图9,示例性地说明一种计算节点的注册方法的实现方式。该实现方式可以包括以下步骤:
步骤1,任务单元代理模块发送资源注册请求消息到资源映射管理器模块,消息包括资源标识、资源群组、任务单元类型列表、资源总量信息、可分配资源信息和可选的节点系统信息。
步骤2,资源映射管理器模块根据资源标识、资源群组、任务单元类型列表、资源总量信息、可分配资源信息和可选的节点系统信息在虚拟节点资源库模块中新增虚拟节点上下文,并为该虚拟节点上下文表示的节点分配网际协议(Internet Protocol,IP)地址,虚拟节点状态设置为预设的表示虚拟节点正在创建的标志,如“正在创建”。
其中,资源群组,是指可进行资源共享的资源所构成的群组的标识,系统控制器模块可对计算任务在该群组内进行管理调度。
其中,IP地址可以是网际协议版本4(Internet Protocol version 4,IPv4),也可以是网际协议版本6(Internet Protocol version 6,IPv6)。本申请实施例对此不做限定。
步骤3,虚拟节点代理模块检测到虚拟节点资源库模块中新增了虚拟节点上下文,则读取该上下文。
步骤4,若该虚拟节点上下文的虚拟节点状态为预设的表示正在创建虚拟节点的标志,如“正在创建”,则虚拟节点代理模块调用工作节点适配器模块,参数包括:虚拟节点上下文。
步骤5,虚拟节点代理模块从工作节点适配器模块获取适配后的系统控制器模块的工作节点描述符。
步骤6,虚拟节点代理模块调用系统控制器模块的“创建节点”接口,参数包括工作节点描述符,将该虚拟节点上下文表示的节点注册为系统控制器模块的一个工作节点。
可选地,在将虚拟节点上下文表示的节点注册为系统控制器模块的一个工作节点后,还可以包括:
步骤7,虚拟节点代理模块获取创建节点响应结果。
步骤8,虚拟节点代理模块根据该响应结果更新对应虚拟节点上下文的状态。
步骤9,资源映射管理器模块检测到虚拟节点上下文发生更新。
步骤10,资源映射管理器模块发送资源注册响应消息到任务单元代理模块,消息包括响应结果。
在此说明的是,虚拟节点创建和注册完毕后,任务单元代理模块和虚拟节点代理模块分别以独立的时间周期或事件触发进行资源的状态维护,即:任务单元代理模块维护终端设备或网络节点上的资源到虚拟节点上下文的状态同步;虚拟节点代理模块维护虚拟节点上下文到系统控制器模块的工作节点的状态同步。
该实现方式中,通过资源映射管理器模块和工作节点适配器模块完成了从资源注册请求消息到工作节点描述符的转换,从而将第一设备通过虚拟节点管理设备转换为一个工作节点。
在此说明的是,也可以通过在一个网络节点上部署任务单元代理模块,将该网络节点的全部物理资源,或从物理资源中通过虚拟化等技术隔离出来的隔离资源,注册为虚拟节点管理设备里的工作节点,该网络节点的资源注册流程和调度单元的部署流程与终端设备的资源注册流程和调度单元的部署流程相同,此处不再赘述。
作为一个可选的实施例,如果第一设备从一个边缘节点切换到了另一个边缘节点,则所述方法还可以包括:第二设备获取迁出请求消息,该迁出请求消息用于请求迁出第一设备在原来的边缘节点中的任务单元上下文,任务单元上下文包括所述任务单元描述符与工作节点之间的映射关系;发送任务单元上下文。
下面以第一设备是终端设备,图4或图5的系统结构为例,结合图10,说明又一种计算节点的管理方法。该方法中,控制设备中新增虚拟节点控制器模块,作为虚拟节点代理模块到系统控制器模块的中介,转发或修改虚拟节点代理模块到系统控制器模块的接口调用消息。
如图10所示,该方法中,将终端设备在切换之前所在的边缘节点称为源边缘节点,所在的源边缘节点中的虚拟节点代理模块称为源虚拟节点代理模块,源边缘节点中的虚拟节点资源库模块称为源虚拟节点资源库模块,将终端设备切换后所在的边缘节点称为目标边缘节点,所在的目标边缘节点中的虚拟节点代理模块称为目标虚拟节点代理模块,目标边缘节点中的虚拟节点资源库模块称为目标虚拟节点资源库模块。该切换方法包括:
步骤1,若虚拟节点控制器模块检测到终端设备发生了切换,虚拟节点控制器模块向切换控制器模块发送切换通知消息,消息包括虚拟节点标识、源边缘节点标识和目标边缘节点标识。
其中,终端设备的切换是指终端设备从一个边缘节点切换到了另一个边缘节点。
应理解,控制设备能够识别的工作节点描述符中包含了工作节点的名称和该工作节点所在的边缘节点的边缘节点标识,那么,对于由第一设备映射得到的虚拟节点的工作节点描述符中工作节点的名称即虚拟节点标识,同时也包括该虚拟作节点所在的边缘节点的边缘节点标识。而对于同一个虚拟节点,其对应的虚拟节点标识是不变的,因此虚拟节点控制器模块可以根据接收到的工作节点描述符中获取的虚拟节点标识和边缘节点标识,来确定终端设备是否发生了切换。
在一种可实现方式中,可以预设“虚拟节点标识和边缘节点标识对应关系”表格,然后根据表格确定终端设备是否发生切换。例如,如果虚拟节点标识相同,但是边缘节点标识不同,则认为虚拟节点对应的终端设备从一个边缘节点移动到了另一个边缘节点,即发生了切换。
步骤2,切换控制器模块向源边缘节点中的虚拟节点代理模块发送迁出请求消息,消息包括虚拟节点标识。
其中,该实施例中,源边缘节点可以认为是终端设备在切换之前所在的边缘节点。
步骤3,源虚拟节点代理模块收到迁出请求消息,查找虚拟节点资源库模块中的虚拟节点表中该虚拟节点标识对应的虚拟节点上下文,并将该上下文的虚拟节点状态设置为预设的表示该上下文已经迁移的标志,如“已经迁移”,并读取任务单元表中该虚拟节点标识对应的所有任务单元上下文。
步骤4,源虚拟节点代理模块向切换控制器模块发送迁出响应消息,消息包括该虚拟节点对应的所有任务单元上下文。
步骤5,切换控制器模块收到虚拟节点迁出响应消息,向目标边缘节点上的虚拟节点代理模块发送虚拟节点迁入请求消息,消息包括该虚拟节点对应的所有任务单元上下文。
步骤6,目标虚拟节点代理模块收到虚拟节点迁入请求消息,将消息里包括的任务单元上下文更新到目标虚拟节点资源库模块中的任务单元表中。
步骤7,目标虚拟节点代理模块向切换控制器模块发送虚拟节点迁入响应消息,消息包括响应结果。
步骤8,切换控制器模块收到虚拟节点迁入响应消息,且响应结果指示已成功迁移,向虚拟节点控制器模块发送切换确认消息。
步骤9,虚拟节点控制器模块接收到切换确认消息,调用系统控制器的“更新节点状态”接口,参数包括系统控制器模块的工作节点的名称和工作节点描述符,向系统控制器模块请求更新工作节点状态。
该实现方式中,虚拟节点控制器模块在收到节点注册请求消息时,若检测到该虚拟节点对应的终端设备发生切换,则触发切换控制器模块执行任务单元上下文迁移,同时将调用系统控制器模块的“创建节点”接口改为调用“更新节点状态”接口,从而可以避免系统控制器模块在终端设备发生切换进行删除或创建工作节点,进而避免不必要的重新调度。
下面,基于Kubernetes和KubeEdge生态,结合图11,详细介绍本申请实施例中的计算节点的管理方法的一种可实现方式。
如图11所示,该实施例中,系统控制器模块由Kubernetes的控制面实现,则在该实施例中调度单元为Kubernetes中的Pod,调度单元描述符即Kubernetes Pod描述符,其中,Kubernetes Pod描述符即Kubernetes中用于描述一个Pod资源的描述信息,例如,可以包括:应用编程接口的版本(在Kubernetes中用apiVersion表示)、资源种类(在Kubernetes中用kind表示)、元数据(在Kubernetes中用metadata表示),和可选的规格(在Kubernetes中用spec表示)、状态(在Kubernetes中用status表示);工作节点描述符即Kubernetes Node描述符,其中Node为Kubernetes的工作节点,Kubernetes Node描述符即Kubernetes中用于描述一个Node资源的描述信息,例如,可以包括:应用编程接口的版本(在Kubernetes中用apiVersion表示)、资源种类(在Kubernetes中用kind表示)、元数据(在Kubernetes中用metadata表示),和可选的规格(在Kubernetes中用spec表示)、状态(在Kubernetes中用status表示);具体见Kubernetes的文档和源代码,此处不再赘述。该实施例中,Kubernetes的控制面部署在云端节点。
该实施例中,边缘节点管理设备中的边缘节点代理模块还需要通过边缘网络代理模块和云端网络代理模块对接Kubernetes的控制面中的Kubernetes的应用编程接口服务器(也称为Kubernetes API Server),其中边缘网络代理模块包括KubeEdge里的边缘通信接口模块(也称为EdgeHub模块)和信息管理模块(也称为MetaManager模块),云端网络代理模块包括KubeEdge的云端通信接口模块(也称为CloudHub模块)和边缘节点控制器模块;其中边缘节点管理设备为现有技术,具体见KubeEdge项目的文档和源代码,此处不再详述。
该实施例中,需要在云端节点上KubeEdge的控制设备里新增虚拟节点控制器模块,本实施例在实现时命名为VirtualNodeController模块。VirtualNodeController模块通过KubeEdge通信框架与CloudHub模块对接,因此需要CloudHub模块新增接口对接VirtualNodeController模块。在该接口上:
VirtualNodeController模块向CloudHub模块发送的消息包括:创建KubernetesPod请求消息、删除Kubernetes Pod请求消息、创建Kubernetes Node响应消息。
VirtualNodeController模块从CloudHub模块接收的消息包括:创建KubernetesNode请求消息、更新Kubernetes Node状态消息、更新Kubernetes Pod状态消息。
同时,VirtualNodeController模块还通过Kubernetes的应用编程接口(也称为Kubernetes API)与Kubernetes API Server对接,在本实施例中,需要实现的KubernetesAPI包括:Node资源的接口和Pod资源的接口。这两类接口是Kubernetes API定义的现有接口,可基于现有技术实现,如参考KubeEdge项目的EdgeController模块的实现,不再详述。实现这两类接口后,VirtualNodeController模块支持的功能包括:向Kubernetes APIServer创建或更新Node、从Kubernetes API Server获取需要创建或删除的Pod的Pod描述符、向Kubernetes API Server更新Node状态或Pod状态。
该实施例中,在边缘节点上新增虚拟节点管理设备,其中,各模块实现如下:
任务单元适配器模块,本实施例在实现时命名为TaskUnitAdapter模块,该模块根据任务单元类型参数,将Kubernetes Pod描述符转换成该任务单元类型对应的任务单元描述符。一种可能的实现方式是以程序模块的方式实现,提供编程接口,可被直接或通过KubeEdge通信框架调用;另一种可能的实现方式是以微服务的方式,以远程方式调用。本申请实施例对此不做限定。
工作节点适配器模块,本实施例在实现时命名为WorkerNodeAdapter模块,该模块将虚拟节点表中的虚拟节点上下文转换成Kubernetes Node描述符。一种可能的实现方式是以程序模块的方式实现,提供编程接口,可被直接或通过KubeEdge通信框架调用;另一种可能的实现方式是以微服务的方式,以远程方式调用。本申请实施例对此不做限定。
虚拟节点代理模块,本实施例在实现时命名为VirtualDeviced模块,通过KubeEdge通信框架与EdgeHub模块对接,因此需要EdgeHub模块新增接口对接VirtualDeviced模块。在该接口上:
VirtualDeviced模块向EdgeHub模块发送的消息包括:创建Kubernetes Node请求消息、更新Kubernetes Node状态消息、更新Kubernetes Pod状态消息。
VirtualDeviced模块从EdgeHub模块接收的消息包括:创建Kubernetes Pod请求消息、删除Kubernetes Pod请求消息、创建Kubernetes Node响应消息。
任务单元类型选择器模块,本实施例在实现时命名为TaskUnitTypeSelector模块,该模块可以根据预设的规则选择虚拟节点上的任务单元类型。
虚拟节点资源库模块,本实施例在实现时命名为VirtualNodeResources模块,可以以数据库的方式实现,也可以以共享内存的方式实现。本申请实施例对此不做限定。
资源映射管理器模块,本实施例在实现时命名为ResourceMappingManager模块,该模块通过KubeEdge的事件总线模块(也称为EventBus模块)连接到消息队列遥测传输协议中介模块(也称为MQTT Broker模块),因此需要EventBus模块新增接口对接ResourceMappingManager模块。在该接口上:
ResourceMappingManager模块向EventBus模块发送的消息包括:创建任务单元请求消息、删除任务单元请求消息和资源注册响应消息。
ResourceMappingManager模块从EventBus模块接收的消息包括:资源注册请求消息、更新资源状态消息和更新任务单元状态消息。
为此,需要在EventBus模块新增主题(也称为Topic,具体参考KubeEdge中的描述),例如,表2为边缘计算系统需要新增的MQTT Topic及其用途的一种示例。
表2
其中,资源注册类、状态更新类和任务单元管理类消息所包括的消息名称和消息参数见表1,{resourceId}需要用该终端设备上资源标识的值替换。同时,考虑到实现方便,表2中的topic名称可以拥有相同的且与其它Topic可区分的公共前缀,例如"schedulableResource/events"。
任务单元代理模块,在该实施例中,终端设备需要新增模块,本实施例在实现时命名为TaskUnitAgent模块,该模块从MQTT Broker模块订阅并获取消息,该消息包括创建任务单元请求消息、删除任务单元请求消息和资源注册响应消息;或将资源注册请求消息、更新资源状态消息和更新任务单元状态消息发布到MQTT Broker模块。
TaskUnitAgent模块与MQTT Broker模块交互,一种可能的方式,包括:TaskUnitAgent模块通过该终端设备现有的传输接口,如蓝牙(Bluetooth),连接到转换器(该实施例中称为Mapper)模块,通过Mapper模块与MQTT Broker模块交互;另一种可能的方式,包括:该终端设备具备MQTT客户端功能,则TaskUnitAgent模块直接通过MQTT客户端与MQTT Broker模块交互。
可选地,该实施例也可以包括任务单元仓库,详细描述可参考上述实施例,此处不再赘述。
下面,以TaskUnitAgent模块部署在终端设备为例,该终端设备通过Mapper模块或直接通过MQTT客户端连接到MQTT Broker模块;并且EventBus模块已订阅了MQTT Broker模块的topic1,TaskUnitAgent模块已经订阅了MQTT Broker模块的topic2,对本实施例中“终端设备的资源注册流程”进行详细介绍。
步骤1,TaskUnitAgent模块发送资源注册请求消息到ResourceMappingManager模块。
一种可能的实现方式如下:TaskUnitAgent模块发布资源注册请求消息到MQTTBroker模块的topic1,资源注册请求消息包括资源标识(本实施例中也称为resourceId)、资源群组(本实施中也称为resourceGroup)、任务单元类型列表(本实施例中也称为tuTypeList)、资源总量信息、可分配资源信息和可选的节点系统信息(本实施例中也称为nodeSystemInfo),其中资源总量信息包括CPU总量(本实施例中也称为cpuTotal)、内存总量(本实施例中也称为memTotal)和存储总量(本实施例中也称为diskTotal),可分配资源信息包括可分配CPU数量(本实施例中也称为cpuAllocatable)、可分配内存数量(本实施例中也称为memAllocatable)和可分配存储数量(本实施例中也称为diskAllocatable),节点系统信息由Kubernetes定义,包括机器标识、系统全局唯一标识、内核版本、节点架构等,具体见Kubernetes的文档或源代码,节点系统信息参数为Kubernetes定义NodeSystemInfo类型的对象进行JavaScript对象表示法(JavaScript Object Notation,JSON)序列化后得到的字符串;EventBus模块从MQTT Broker模块获取MQTT消息,若MQTT Topic匹配表2中Topic名称的公共前缀,则经KubeEdge通信框架发送消息到ResourceMappingManager模块,该消息包括MQTT Topic和MQTT消息。
步骤2,ResourceMappingManager模块收到消息,若MQTT Topic匹配topic1的格式,则MQTT消息为资源注册请求消息,对资源注册请求消息的处理过程为:从该消息中提取资源标识resourceId、资源群组resourceGroup、任务单元类型列表tuTypeList、资源总量信息(包括cpuTotal、memTotal和diskTotal)、可分配资源信息(包括cpuAllocatable、memAllocatable和diskAllocatable)和可选的节点系统信息nodeSystemInfo,在VirtualNodeResources模块中的虚拟节点表(本实施例中也称为VirtualNodeTable)中新增虚拟节点上下文,为该虚拟节点上下文对应的虚拟节点分配IP地址(本实施例中也称为nodeAddress);将resourceId、resourceGroup、tuTypeList、nodeAddress、cpuTotal、memTotal、diskTotal、cpuAllocatable、memAllocatable和diskAllocatable字段分别赋值到该上下文的以下字段:虚拟节点标识(本实施例中称为vnId)、虚拟节点群组(本实施例中称为vnGroup)、任务单元类型列表(本实施例中也称为tuTypeList)、虚拟节点的IP地址(本实施例中也称为vnAddress)、cpuTotal、memTotal、diskTotal、cpuAllocatable、memAllocatable和diskAllocatable,若消息中存在nodeSystemInfo参数,且该参数值不为空,则将nodeSystemInfo赋值到该上下文的nodeSystemInfo字段,否则该上下文的nodeSystemInfo字段的值为空,同时将该上下文的vnStatus字段的值设为预设的表示正在创建虚拟节点的标志,如"creating",将transitionTime字段的值设为当前时间戳。
步骤3,VirtualDeviced模块检测到VirtualNodeResources模块的VirtualNodeTable中新增了虚拟节点上下文,则读取该上下文。
步骤4,若该虚拟节点上下文的vnStatus字段的值为预设的表示正在创建虚拟节点的标志,如"creating",则VirtualDeviced模块调用WorkerNodeAdapter模块,将该虚拟节点上下文转换成Kubernetes Node描述符。该实施例中,还可以执行以下可选的步骤:在该Kubernetes Node描述符的metadata字段中的labels字段中新增以下键值对:1)键为"node-type",其值为字符串"VirtualNode";2)键为"resource-group",其值为VirtualNodeTable中vnGroup的值;3)键为"edge-node-id",其值为虚拟节点管理设备所在的边缘节点的唯一标识,一种可能的实现方式是从VirtualDeviced模块的配置文件中读取该边缘节点标识。
其中,键为"node-type"的标签用于标识该节点是虚拟节点,键为"resource-group"的标签可被Kubernetes用户选择可以进行资源共享的虚拟节点集合,键为"edge-node-id"的标签可被Kubernetes用户选择映射在同一个边缘节点上的虚拟节点集合。
步骤5,VirtualDeviced模块向系统控制器模块发送Kubernetes Node描述符,并将该Kubernetes Node描述符对应的节点注册为工作节点。
一种可能的实现方式如下:VirtualDeviced生成创建Kubernetes Node请求消息,消息包括Kubernetes Node描述符,通过KubeEdge通信框架发送消息到EdgeHub模块,消息内容包括创建Kubernetes Node请求消息,其中消息的路由操作类型为"insert";EdgeHub模块将消息发送到CloudHub模块;CloudHub模块通过KubeEdge通信框架将该消息发送到VirtualNodeController模块;VirtualNodeController模块收到该消息后,若消息的路由操作类型为"insert",且消息内容包括创建Kubernetes Node请求消息,则从创建Kubernetes Node请求消息中获取Kubernetes Node描述符,再调用Kubernetes API的创建节点接口,即Node资源的Create操作接口,参数包括Kubernetes Node描述符,向Kubernetes API Server注册一个工作节点。
可选地,当将终端设备通过虚拟节点管理设备映射为工作节点之后,还可以进行“终端设备的资源注册响应流程”,如下:
步骤1,VirtualNodeController模块获取调用Kubernetes API的Node资源的Create操作接口的响应结果,生成创建Kubernetes Node响应消息,消息包括虚拟节点标识和结果信息,其中虚拟节点标识可从Kubernetes Node描述符的metadata字段中的name字段获取,结果信息包括创建Kubernetes Node是否成功的标志,如成功或失败,以及可选的失败原因。VirtualNodeController模块经过CloudHub模块和EdgeHub模块发送消息到VirtualDeviced模块,消息内容包括创建Kubernetes Node响应消息,其中消息的路由操作类型为"response"。
步骤2,VirtualDeviced模块收到该消息,若消息的路由操作类型为"response",且消息内容包括创建Kubernetes Node响应消息,则从创建Kubernetes Node响应消息中获取虚拟节点标识和结果信息,再更新VirtualNodeResources模块中的VirtualNodeTable中对应虚拟节点上下文的vnStatus字段,如创建成功,则将vnStatus字段的值设为预设的表示虚拟节点创建成功的标志,如"created"。
步骤3,ResourceMappingManager模块检测到VirtualNodeResources模块的VirtualNodeTable中有虚拟节点上下文发生更新,则读取该上下文,若该上下文的vnStatus字段的值更新为预设的表示虚拟节点创建成功的标志,如"created",则生成资源注册响应消息,该消息包括结果信息,其中结果信息包括资源注册是否成功的标志,如成功或失败,以及可选的失败原因;ResourceMappingManager模块再生成KubeEdge通信框架消息,该消息包括MQTT Topic和资源注册响应消息,其中MQTT Topic为topic2,topic2中包括资源标识(如用虚拟节点上下文中的虚拟节点标识vnId替换表2所示的资源标识变量{resourceId})。
步骤4,ResourceMappingManager模块通过KubeEdge通信框架发送该消息到EventBus模块;EventBus模块将该消息中的资源注册响应消息发布到MQTT Broker模块的topic2;TaskUnitAgent模块已经订阅了MQTT Broker模块的topic2,则收到资源注册响应消息,根据该消息获取资源注册结果信息。
下面,以TaskUnitAgent模块部署在终端设备为例,该终端设备通过Mapper模块或直接通过MQTT客户端连接到MQTT Broker模块,并且TaskUnitAgent模块已经订阅了MQTTBroker模块的topic4,对本实施例中“调度单元的部署流程”进行介绍。其中“分配调度单元到边缘节点”部分为现有技术,本实施例不再详述。
VirtualNodeController模块从Kubernetes API Server监测(如调用KubernetesAPI的Pod资源的Watch操作接口)绑定到每个虚拟节点的Pod资源,当监测到某个虚拟节点绑定了Pod资源,则处理过程如下:
步骤1,VirtualNodeController模块发送创建Kubernetes Pod请求消息到VirtualDeviced模块。
一种可能的实现方式如下:VirtualNodeController模块接收到某个虚拟节点上绑定的Pod资源的Kubernetes Pod描述符,生成创建Kubernetes Pod请求消息,消息包括Kubernetes Pod描述符,通过KubeEdge通信框架发送消息到CloudHub模块,消息内容包括创建Kubernetes Pod请求消息,其中消息的路由操作类型为"insert";CloudHub模块将该消息发送到EdgeHub模块;EdgeHub模块通过KubeEdge通信框架将该消息发送到VirtualDeviced模块。
步骤2,VirtualDeviced模块收到该消息后,若消息的路由操作类型为"insert",且消息内容包括创建Kubernetes Pod请求消息,则从创建Kubernetes Pod请求消息中获取Kubernetes Pod描述符;VirtualDeviced模块调用TaskUnitTypeSelector模块,参数包括Kubernetes Pod描述符,得到该虚拟节点的任务单元类型,再调用TaskUnitAdapter模块,参数包括:Kubernetes Pod描述符、任务单元类型,得到适配该虚拟节点的任务单元描述符。
步骤3,VirtualDeviced模块从该任务单元描述符中提取任务单元名称,并从该Pod描述符的spec字段的nodeName字段获取该Pod所分配的工作节点的名称,该工作节点的名称即该工作节点对应的虚拟节点标识,从该Pod描述符的metadata字段中提取name和namespace字段的值,分别作为调度单元名称和调度单元命名空间;在VirtualNodeResources中的任务单元表(本实施例中也称为TaskUnitTable)中新增任务单元上下文,将任务单元名称、任务单元描述符、虚拟节点标识、调度单元名称和调度单元命名空间分别赋值到该上下文的以下字段:任务单元名称(本实施例中也称为tuName)、任务单元描述符(本实施例中也称为tuDescriptor)、虚拟节点标识(本实施例中也称为vnId)、调度单元名称(本实施例中也称为suName)和调度单元命名空间(本实施例中称为suNamespace),同时将该上下文的任务单元阶段(本实施例中也称为tuStatus)字段的值设为空,将任务单元状态(本实施例中称为tuStatus)字段的值设为预设的表示正在创建任务单元的标志,如"creating",将transitionTime字段的值设为当前时间戳。
步骤4,ResourceMappingManager模块检测到VirtualNodeResources模块的TaskUnitTable中新增了上下文,则读取该上下文,若该上下文的tuStatus字段的值为预设的表示正在创建任务单元的标志,如"creating",则生成创建任务单元请求消息,该消息包括任务单元描述符;ResourceMappingManager模块再生成KubeEdge通信框架消息,该消息包括MQTT Topic和创建任务单元请求消息,其中MQTT Topic为topic4,topic4中包括资源标识(如用任务单元上下文中虚拟节点标识vnId替换表2所示的资源标识变量{resourceId})。
步骤5,ResourceMappingManager模块发送创建任务单元请求消息到TaskUnitAgent模块,TaskUnitAgent模块创建任务单元实例。
一种可能的实现方式如下:ResourceMappingManager模块通过KubeEdge通信框架发送该消息到EventBus模块;EventBus模块将该消息中的创建任务单元请求消息发布到MQTT Broker模块的topic4;TaskUnitAgent模块已经订阅了MQTT Broker模块的topic4,则收到创建任务单元请求消息,根据该消息创建任务单元实例。
可选地,本实施例还可以包括“调度单元的删除流程”,其总体流程与本实施例中的“调度单元的部署流程”类似,区别如下:
VirtualNodeController模块从Kubernetes API Server监测(如调用KubernetesAPI的Pod资源的Watch操作接口)到某个虚拟节点删除了Pod资源,获取该Pod资源的Kubernetes Pod描述符,生成删除Kubernetes Pod请求消息,消息包括Kubernetes Pod描述符,通过KubeEdge通信框架发送消息到CloudHub模块,消息内容包括删除KubernetesPod请求消息,其中消息的路由操作类型为"delete";CloudHub模块将该消息发送到EdgeHub模块;EdgeHub模块通过KubeEdge通信框架将该消息发送到VirtualDeviced模块。
VirtualDeviced模块收到该消息后,若消息的路由操作类型为"delete",且消息内容包括删除Kubernetes Pod请求消息,则从删除Kubernetes Pod请求消息中获取Kubernetes Pod描述符,再从该Pod描述符的metadata字段的name和namespace字段获取Pod名称和Pod命名空间,以该Pod名称作为调度单元名称、该Pod命名空间作为调度单元命名空间,查找VirtualNodeResources模块中TaskUnitTable的对应上下文,并将该上下文的tuStatus字段的值设置为预设的表示正在删除任务单元的标志,如"deleting";可选地,VirtualDeviced模块设置定时器,若达到预设的阈值则从TaskUnitTable中删除该任务单元上下文;ResourceMappingManage模块检测到VirtualNodeResources模块的TaskUnitTable中有上下文发生更新,则读取该上下文,若该上下文的tuStatus字段的值更新为预设的表示正在删除任务单元的标志,如"deleting",则生成删除任务单元请求消息,消息包括任务单元名称;ResourceMappingManager模块再生成KubeEdge通信框架消息,该消息包括MQTT Topic和删除任务单元请求消息,其中MQTT Topic为topic4,topic4中包括资源标识(如用任务单元上下文中虚拟节点标识vnId替换表2所示的资源标识变量{resourceId})。
ResourceMappingManager模块通过KubeEdge通信框架发送消息到EventBus模块;EventBus模块将该消息中的删除任务单元请求消息发布到MQTT Broker模块的topic4;TaskUnitAgent模块已经订阅了MQTT Broker模块的topic4,则收到删除任务单元请求消息,根据该消息终止并删除本地运行的任务单元实例。
该实施例中,还包括调度单元适配器模块,本实施例在实现时命名为SchedulingUnitAdapter模块,用于将任务单元上下文转换为Kubernetes Pod描述符。
该实施例中,还可以包括“更新资源状态流程”和“更新任务单元状态流程”,每个流程均包括两个阶段,以独立的时间周期或事件触发。作为一种示例,一种可实现方式描述如下(其中EventBus模块已订阅了MQTT Broker模块的topic3):
阶段一:
TaskUnitAgent模块处理完资源注册响应消息后,还可以由预设的事件触发TaskUnitAgent模块发送更新资源状态消息。触发事件举例如下:预设的时间周期到达、资源状态发生变化(如资源就绪、资源不可用等)、硬件故障等。
TaskUnitAgent模块处理完创建任务单元请求消息或删除任务单元请求消息后,还可以由预设的事件触发TaskUnitAgent模块发送更新任务单元状态消息。触发事件举例如下:任务单元开始运行、任务单元结束运行或任务单元运行失败等。
步骤1,TaskUnitAgent模块发布状态更新消息到MQTT Broker模块的topic3;若为更新资源状态消息,则消息包括资源标识(本实施例中也称为resourceId)、资源总量信息、可分配资源信息和资源状态(本实施例中也称为resourceStatus),其中资源总量信息包括CPU总量(本实施例中也称为cpuTotal)、内存总量(本实施例中也称为memTotal)和存储总量(本实施例中也称为diskTotal),可分配资源信息包括可分配CPU数量(本实施例中也称为cpuAllocatable)、可分配内存数量(本实施例中也称为memAllocatable)和可分配存储数量(本实施例中也称为diskAllocatable),其中若该资源就绪,则resourceStatus字段的值设为预设的表示资源就绪的标志,如"ready";若为更新任务单元状态消息,则消息包括任务单元名称(本实施例中也称为tuName)、任务单元阶段(本实施例中也称为tuPhase)和任务单元状态(本实施例中也称为tuStatus),其中tuPhase字段的值参考Kubernetes技术规范对PodPhase的定义,示例如下:若该任务单元已被TaskUnitAgent接受,则tuPhase设为"Pending",若该任务单元包含的执行实体已经全部开始运行,则tuPhase设为"Running"等;若该任务单元就绪,则tuStatus字段的值设为预设的表示任务就绪的标志,如"ready";EventBus模块从MQTT Broker模块获取MQTT消息,若MQTT Topic匹配表2中Topic名称的公共前缀,则经KubeEdge通信框架发送消息到ResourceMappingManager模块,该消息包括MQTT Topic和MQTT消息;
步骤2,ResourceMappingManager模块收到消息,若MQTT Topic匹配topic3的格式,则MQTT消息为状态更新消息;若为更新资源状态消息,则从该消息中提取资源标识resourceId、资源总量信息(包括cpuTotal、memTotal和diskTotal)、可分配资源信息(包括cpuAllocatable、memAllocatable和diskAllocatable)和资源状态resourceStatus,在VirtualNodeResources模块中的VirtualNodeTable中以resourceId作为vnId查找该资源对应的虚拟节点上下文,将cpuTotal、memTotal、diskTotal、cpuAllocatable、memAllocatable、diskAllocatable和resourceStatus字段分别与该上下文的cpuTotal、memTotal、diskTotal、cpuAllocatable、memAllocatable、diskAllocatable和resourceStatus字段的值比较并获取每个字段的比较结果,然后将cpuTotal、memTotal、diskTotal、cpuAllocatable、memAllocatable、diskAllocatable和resourceStatus字段分别更新到该上下文的cpuTotal、memTotal、diskTotal、cpuAllocatable、memAllocatable、diskAllocatable和resourceStatus字段,同时将该上下文的heartbeatTime字段的值设为当前时间戳,若字段的比较结果中至少一个字段的值发生变化,则将该上下文的transitionTime字段的值设为当前时间戳;若为更新任务单元状态消息,则从消息中提取任务单元名称tuName、任务单元阶段tuPhase和任务单元状态tuStatus,在VirtualNodeResources模块中的TaskUnitTable中查找tuName对应的任务单元上下文,将tuPhase和tuStatus字段分别与该上下文的tuPhase和tuStatus字段的值比较并获取每个字段的比较结果,然后将tuPhase和tuStatus字段分别更新到该上下文的tuPhase和tuStatus字段,同时将该上下文的heartbeatTime字段的值设为当前时间戳,若字段的比较结果中至少一个字段的值发生变化,则将该上下文的transitionTime字段的值设为当前时间戳。
阶段二:
VirtualDeviced模块还可以由预设的事件触发VirtualDeviced模块发送更新Kubernetes Node状态消息。触发事件举例如下:预设的时间周期到达、VirtualNodeTable中的虚拟节点上下文发生更新。
VirtualDeviced模块还可以由预设的事件触发VirtualDeviced模块发送更新Kubernetes Pod状态消息。触发事件举例如下:TaskUnitTable中的任务单元上下文发生更新。
步骤1,若VirtualNodeTable中有虚拟节点上下文预设的时间周期到达或有虚拟节点上下文发生更新,VirtualDeviced模块则读取该上下文,调用WorkerNodeAdapter模块将该虚拟节点上下文转换成Kubernetes Node描述符,再生成更新Kubernetes Node状态消息,消息包括Node名称和Kubernetes Node描述符,其中Node名称即虚拟节点上下文中的虚拟节点标识vnId,通过KubeEdge通信框架发送消息到EdgeHub模块,消息内容包括更新Kubernetes Node状态消息,其中消息的路由操作类型为"update";若TaskUnitTable中有任务单元上下文发生更新,VirtualDeviced模块则读取该上下文,调用SchedulingUnitAdapter模块将该任务单元上下文转换成Kubernetes Pod描述符,再生成更新Kubernetes Pod状态消息,消息包括Pod命名空间、Pod名称和Kubernetes Pod描述符,其中Pod命名空间和Pod名称分别为任务单元上下文中的调度单元命名空间suNamespace和调度单元名称suName,通过KubeEdge通信框架发送消息到EdgeHub模块,消息内容包括更新Kubernetes Pod状态消息,其中消息的路由操作类型为"update";
步骤2,EdgeHub模块经CloudHub模块发送消息到VirtualNodeController模块;
步骤3,VirtualNodeController模块收到消息后,若消息的路由操作类型为"update",且消息内容包括更新Kubernetes Node状态消息,则从更新Kubernetes Node状态消息中获取Node名称和Kubernetes Node描述符,再调用Kubernetes API的更新节点状态接口,如Node资源的Replace Status操作接口,参数包括Node名称和Kubernetes Node描述符,向Kubernetes API Server更新Node状态;若消息的路由操作类型为"update",且消息内容包括更新Kubernetes Pod状态消息,则从更新Kubernetes Pod状态消息中获取Pod命名空间、Pod名称和Kubernetes Pod描述符,再调用Kubernetes API的更新Pod状态接口,如Pod资源的Replace Status操作接口,参数包括Pod命名空间、Pod名称和Kubernetes Pod描述符,向Kubernetes API Server更新Pod状态。
该实施例中,KubeEdge通信框架,是指KubeEdge项目中各模块之间通信的软件框架,例如目前的KubeEdge项目中的“beehive”框架,具体可参考相关技术描述,此处不再赘述。
本实施例中,通过在KubeEdge里新增虚拟节点控制器、虚拟节点管理设备和在终端设备新增任务单元代理模块,同时在KubeEdge的EdgeHub模块和EventBus模块新增接口与虚拟节点管理设备对接,在KubeEdge的CloudHub模块新增接口与虚拟节点控制器对接。使得异构终端设备可以统一注册为Kubernetes的工作节点,从而使Kubernetes的调度器可以将计算任务部署到异构的终端设备,实现了边缘计算环境下边缘节点和终端设备的联合调度。
此外,由于虚拟节点作为中介,可以使控制设备和虚拟节点管理设备分别独立维护工作节点和虚拟节点的状态,例如当终端设备临时网络中断时,但虚拟节点管理设备中的虚拟节点与控制设备之间的连接正常,因此避免了因终端设备发生临时网络中断导致控制设备进行不必要的重新调度。
下面,基于Kubernetes生态,结合图12,详细介绍本申请另一个实施例中的计算节点的管理方法的可实现方式。
该实施例中,与图11基于Kubernetes和KubeEdge的实施例相比,相同是的系统控制器模块均由Kubernetes的控制面实现,因此该实施例中的调度单元同样是Kubernetes中的Pod,调度单元描述符即Kubernetes Pod描述符,工作节点描述符即Kubernetes Node描述符,不同的是该实施例中Kubernetes的控制面部署在边缘节点。
如图12所示,该实施例中,边缘节点管理设备为现有技术,具体见Kubernetes的文档和源代码,此处不再详述。
该实施例中,在边缘节点上需要部署虚拟节点管理设备,该虚拟节点管理设备同样包括:任务单元适配器模块、工作节点适配器模块、虚拟节点代理模块、虚拟节点资源库模块和资源映射管理器模块。其中任务单元适配器模块、工作节点适配器模块和虚拟节点资源库模块与图11所示实施例完全相同,其详细描述可以参考图11所示实施例的描述,此处不再赘述。与实施例一不同之处包括:
虚拟节点代理模块,本实施例中也称为VirtualDeviced模块,通过KubernetesAPI与Kubernetes API Server对接,在本实施例中,需要实现的Kubernetes API包括:Node资源的接口和Pod资源的接口。这两类接口是Kubernetes API定义的现有接口,可基于现有技术实现,如参考KubeEdge项目的EdgeController模块的实现,不再详述。实现这两类接口后,VirtualNodeController模块支持的功能包括:向Kubernetes API Server创建或更新Node、从Kubernetes API Server获取需要创建或删除的Pod的Pod描述符、向KubernetesAPI Server更新Node状态或Pod状态。
资源映射管理器模块,本实施例中也称为ResourceMappingManager模块,在本实施例中,有以下方式对接任务单元代理模块:
方式a,ResourceMappingManager模块连接到MQTT Broker模块,以MQTT的方式对接任务单元代理模块。
方式b,ResourceMappingManager模块直接提供接口,由任务单元代理模块与ResourceMappingManager模块直接对接,一种接口实现方式是采用基于超文本传输协议(HyperText Transfer Protocol,HTTP)的表现层状态转换(Representational StateTransfer,REST)风格的接口。
方式c,ResourceMappingManager模块向终端设备的消息推送服务器发送通知消息,通过终端设备的消息推送服务与任务单元代理模块对接。
任务单元代理模块,在该实施例中,终端设备需要新增模块,在实现时也可以称为TaskUnitAgent模块,通过该终端设备现有的传输接口和传输协议,有以下方式对接资源映射管理器模块:
方式a,TaskUnitAgent模块连接到MQTT Broker模块,以MQTT的方式对接ResourceMappingManager模块,这种方式的任务单元代理的实现与图11所示实施例完全相同,不再赘述。
方式b,TaskUnitAgent模块直接对接ResourceMappingManager模块提供的接口。
方式c,TaskUnitAgent模块通过终端设备的消息推送服务从ResourceMappingManager模块接收消息。
下面,以TaskUnitAgent模块部署在终端设备为例,对图12所示实施例中的“终端设备的资源注册流程”进行详细介绍。
步骤1,TaskUnitAgent模块发送资源注册请求消息到ResourceMappingManager模块。
在该实施例中,一种可能的实现方式如下:ResourceMappingManager模块已经订阅了MQTT Broker模块的topic1,TaskUnitAgent模块发布资源注册请求消息到MQTTBroker模块的topic1;ResourceMappingManager模块从MQTT Broker模块的topic1获取该消息;
另一种可能的实现方式如下:TaskUnitAgent模块通过HTTP客户端发布资源注册请求消息到ResourceMappingManager模块。
以上实现方式中,资源注册请求消息包括资源标识、资源群组、任务单元类型列表、资源总量信息、可分配资源信息和可选的节点系统信息,详细描述可以参考图11所示实施例中的描述。
步骤2,ResourceMappingManager模块收到资源注册请求消息,对该消息的处理过程与图11所示实施例中的“终端设备的资源注册流程”中的步骤2中对资源注册请求消息的处理过程相同。
步骤3、VirtualDeviced模块检测到VirtualNodeResources模块中的VirtualNodeTable中新增了上下文,则读取该上下文。
步骤4,VirtualDeviced模块模块读取该上下文后,处理过程与图11所示实施例中的“终端设备的资源注册流程”中的步骤4相同,执行该步骤后,将该虚拟节点上下文转换成了Kubernetes Node描述符。
步骤5,VirtualDeviced模块向系统控制器模块发送Kubernetes Node描述符,并将该Kubernetes Node描述符对应的节点注册为工作节点。
一种可能的实现方式是:VirtualDeviced模块调用Kubernetes API的创建节点接口,即Node资源的Create操作接口,参数包括Kubernetes Node描述符,向Kubernetes APIServer注册一个工作节点。
可选地,当将终端设备通过虚拟节点管理设备映射为工作节点之后,还可以进行“终端设备的资源注册响应流程”,如下:
步骤1,VirtualDeviced模块获取调用Kubernetes API的Node资源的Create操作接口的结果信息,同时从Kubernetes Node描述符的metadata字段中的name字段获取虚拟节点标识,VirtualDeviced模块根据虚拟节点标识和结果信息,更新VirtualNodeResources模块中的VirtualNodeTable中对应虚拟节点上下文的vnStatus字段,如创建成功,则将vnStatus字段的值设为预设的表示虚拟节点创建成功的标志,如"created"。
步骤2,ResourceMappingManager模块检测到VirtualNodeResources模块的VirtualNodeTable中有虚拟节点上下文发生更新,则读取该上下文,若该上下文的vnStatus字段的值更新为预设的表示虚拟节点创建成功的标志,如"created",则生成资源注册响应消息,该消息包括结果信息,其中结果信息包括资源注册是否成功的标志,如成功或失败,以及可选的失败原因。
步骤3,ResourceMappingManager模块发送资源注册响应消息到TaskUnitAgent模块,TaskUnitAgent模块根据该消息获取资源注册结果信息。
该实施例中,一种可能的实现方式如下:ResourceMappingManager模块发布资源注册响应消息到MQTT Broker模块的topic2,其中topic2中包括资源标识(如用虚拟节点上下文中的虚拟节点标识vnId替换表2所示的资源标识变量{resourceId});TaskUnitAgent模块已经订阅了MQTT Broker模块的topic2,则获取该消息,然后根据该消息获取资源注册结果信息。
另一种可能的实现方式:通过HTTP长连接,ResourceMappingManager根据虚拟节点标识查找到对应的TaskUnitAgent的HTTP连接,通过该HTTP连接向TaskUnitAgent模块发送资源注册响应消息,TaskUnitAgent模块获取该消息,然后根据该消息获取资源注册结果信息。
还有一种可能的实现方式:通过终端设备的消息推送服务,ResourceMappingManager发送资源注册响应消息到消息推送服务器,具体实现可查看终端设备消息推送服务的技术文档,不再详述,TaskUnitAgent模块获取该消息,然后根据该消息获取资源注册结果信息。下面,说明对本实施例中“调度单元的部署流程”进行详细描述。其中“分配调度单元到边缘节点”部分为现有技术,本实施例不再详述。
VirtualDeviced模块从Kubernetes API Server监测(如调用Kubernetes API的Pod资源的Watch操作接口)绑定到每个虚拟节点的Pod资源,当监测到某个虚拟节点绑定了Pod资源,则处理过程如下:
步骤1,VirtualDeviced模块接收到某个虚拟节点绑定的Pod资源的KubernetesPod描述符;VirtualDeviced模块调用TaskUnitTypeSelector模块,参数包括KubernetesPod描述符,得到该虚拟节点的任务单元类型,再调用TaskUnitAdapter模块,参数包括Kubernetes Pod描述符、任务单元类型,得到适配该虚拟节点的任务单元描述符。
步骤2,VirtualDeviced模块得到该任务单元描述符后,处理过程与图11所示实施例中“调度单元的部署流程”中的步骤3相同,此处不再赘述。
步骤3,ResourceMappingManager模块检测到VirtualNodeResources模块的TaskUnitTable中新增了上下文,则读取该上下文,若该上下文的tuStatus字段的值为预设的表示正在创建任务单元的标志,如"creating",则生成创建任务单元请求消息,消息包括任务单元描述符。
步骤4,ResourceMappingManager模块发送创建任务单元请求消息到TaskUnitAgent模块,TaskUnitAgent模块创建任务单元实例。
该实施例中,一种可能的实现方式如下:ResourceMappingManager模块发布创建任务单元请求消息到MQTT Broker模块的topic4,其中topic4中包括资源标识(如用任务单元上下文中虚拟节点标识vnId替换表2所示的资源标识变量{resourceId});TaskUnitAgent模块已经订阅了MQTT Broker模块的topic4,则收到创建任务单元请求消息,根据该消息创建任务单元实例。
另一种可能的实现方式:通过HTTP长连接,ResourceMappingManager根据虚拟节点标识查找到对应的TaskUnitAgent的HTTP连接,通过该HTTP连接向TaskUnitAgent模块发送创建任务单元请求消息,TaskUnitAgent模块获取创建任务单元请求消息,根据该消息创建任务单元实例。
还有一种可能的实现方式:通过终端设备的消息推送服务,ResourceMappingManager发送创建任务单元请求消息到消息推送服务器,具体实现可查看终端设备消息推送服务的技术文档,不再详述,TaskUnitAgent模块获取创建任务单元请求消息,根据该消息创建任务单元实例。
可选地,还可以包括“调度单元的删除流程”,在本实施例中,其总体流程与本实施例中的“调度单元的部署流程”类似,区别如下:
VirtualDeviced模块从Kubernetes API Server监测(如调用Kubernetes API的Pod资源的Watch操作接口)到某个虚拟节点删除了Pod资源,获取该Pod资源的KubernetesPod描述符,从该Pod描述符的metadata字段的name和namespace字段获取Pod名称和Pod命名空间,以该Pod名称作为调度单元名称、该Pod命名空间作为调度单元命名空间,查找VirtualNodeResources模块中TaskUnitTable的对应上下文,并将该上下文的tuStatus字段的值设置为预设的表示正在删除任务单元的标志,如"deleting";ResourceMappingManager模块检测到VirtualNodeResources模块的TaskUnitTable中有上下文发生更新,则读取该上下文,若该上下文的tuStatus字段的值更新为预设的表示正在删除任务单元的标志,如"deleting",则生成删除任务单元请求消息,消息包括任务单元名称;
ResourceMappingManager模块发布该消息到MQTT Broker模块,TaskUnitAgent模块已经订阅了MQTT Broker模块的topic4,则收到删除任务单元请求消息,终止并删除本地运行的任务单元实例;或,TaskUnitAgent模块通过HTTP长连接从ResourceMappingManager模块获取删除任务单元请求消息,终止并删除本地运行的任务单元实例;或,通过终端设备的消息推送服务,TaskUnitAgent模块获取删除任务单元请求消息,终止并删除本地运行的任务单元实例,本申请实施例对此不做限定。
该实施例中,还包括调度单元适配器模块,本实施例中也称为SchedulingUnitAdapter模块,用于将任务单元上下文转换为Kubernetes Pod描述符。
该实施例中,还可以包括“更新资源状态流程”和“更新任务单元状态流程”,每个流程均包括两个阶段,以独立的时间周期或事件触发。作为一种示例,一种可实现方式描述如下:
阶段一:
TaskUnitAgent模块处理完资源注册响应消息后,还可以由预设的事件触发TaskUnitAgent模块发送更新资源状态消息。触发事件举例如下:预设的时间周期到达、资源状态发生变化(如资源就绪、资源不可用等)、硬件故障等。
TaskUnitAgent模块处理完创建任务单元请求消息或删除任务单元请求消息后,还可以由预设的事件触发TaskUnitAgent模块发送更新任务单元状态消息。触发事件举例如下:任务单元开始运行、任务单元结束运行或任务单元运行失败等。
步骤1,TaskUnitAgent模块发布状态更新消息到MQTT Broker模块的topic3;ResourceMappingManager模块从MQTT Broker模块获取该消息(该方式中,ResourceMappingManager模块已订阅了MQTT Broker模块的topic3);或TaskUnitAgent模块通过HTTP客户端发布状态更新消息到ResourceMappingManager模块;若为更新资源状态消息,则消息包括资源标识(本实施例中也称为resourceId)、资源总量信息、可分配资源信息和资源状态(本实施例中也称为resourceStatus),其中资源总量信息包括CPU总量(本实施例中也称为cpuTotal)、内存总量(本实施例中也称为memTotal)和存储总量(本实施例中也称为diskTotal),可分配资源信息包括可分配CPU数量(本实施例中也称为cpuAllocatable)、可分配内存数量(本实施例中也称为memAllocatable)和可分配存储数量(本实施例中也称为diskAllocatable),其中若该资源就绪,则resourceStatus字段的值设为预设的表示资源就绪的标志,如"ready";若为更新任务单元状态消息,则消息包括任务单元名称(本实施例中也称为tuName)、任务单元阶段(本实施例中也称为tuPhase)和任务单元状态(本实施例中也称为tuStatus),其中tuPhase字段的值参考Kubernetes技术规范对PodPhase的定义,示例如下:若该任务单元已被TaskUnitAgent接受,则tuPhase设为"Pending",若该任务单元包含的执行实体已经全部开始运行,则tuPhase设为"Running"等;若该任务单元就绪,则tuStatus字段的值设为预设的表示任务就绪的标志,如"ready";
步骤2,ResourceMappingManager模块收到状态更新消息,处理过程与图11所示实施例中的“更新资源状态流程”和“更新任务单元状态流程”中的步骤2相同。
阶段二:
VirtualDeviced模块还可以由预设的事件触发VirtualDeviced模块调用Kubernetes API的更新节点状态接口。触发事件举例如下:预设的时间周期到达、VirtualNodeTable中的虚拟节点上下文发生更新。
VirtualDeviced模块还可以由预设的事件触发VirtualDeviced模块调用Kubernetes API的更新Pod状态接口。触发事件举例如下:TaskUnitTable中的任务单元上下文发生更新。
步骤1,若VirtualNodeTable中有虚拟节点上下文预设的时间周期到达或有虚拟节点上下文发生更新,VirtualDeviced模块则读取该上下文,调用WorkerNodeAdapter模块将该虚拟节点上下文转换成Kubernetes Node描述符,调用Kubernetes API的更新节点状态接口,如Node资源的Replace Status操作接口,参数包括Node名称和Kubernetes Node描述符,其中Node名称即虚拟节点上下文中的虚拟节点标识vnId,向Kubernetes API Server更新Node状态;若TaskUnitTable中有任务单元上下文发生更新,VirtualDeviced模块则读取该上下文,调用SchedulingUnitAdapter模块将该任务单元上下文转换成KubernetesPod描述符,调用Kubernetes API的更新Pod状态接口,如Pod资源的Replace Status操作接口,参数包括Pod命名空间、Pod名称和Kubernetes Pod描述符,其中Pod命名空间和Pod名称分别为任务单元上下文中的调度单元命名空间suNamespace和调度单元名称suName,向Kubernetes API Server更新Pod状态。
本实施例与图11所示实施例的区别在于本实施例中的虚拟节点管理设备对接的开源软件平台不同,从而使得虚拟节点管理设备里的虚拟节点代理模块和资源映射管理器模块需要支持并实现的接口和消息处理流程不同。
本实施例提供的计算节点的管理系统和计算节点的管理方法,通过新增虚拟节点管理设备、任务单元代理模块,使得终端设备可以映射为边缘节点上的虚拟节点,从而使Kubernetes的调度器可以将计算任务部署到异构的终端设备,实现了边缘计算环境下边缘节点和终端设备的联合调度。
下面,基于Kubernetes和KubeEdge生态,结合图13,详细介绍本申请实施例中的又一种计算节点的管理方法的可实现方式。
该实施例中,系统控制器模块仍由Kubernetes的控制面实现,因此该实施例中的调度单元同样是Kubernetes中的Pod,调度单元描述符即Kubernetes Pod描述符,工作节点描述符即Kubernetes Node描述符。
如图13所示,该实施例中,边缘节点管理设备为现有技术,具体见Kubernetes的文档和源代码,此处不再详述。与图11中所示实施例相比,相同是的系统控制器模块均由Kubernetes的控制面实现,该虚拟节点管理设备同样包括:任务单元适配器模块、工作节点适配器模块、虚拟节点代理模块、虚拟节点资源库模块和资源映射管理器模块。其中任务单元适配器模块和虚拟节点资源库模块与图11所示实施例完全相同,其详细描述可以参考图11所示实施例的描述,此处不再赘述。与图11所示实施例的不同之处包括:
虚拟节点代理模块(本实施例中同样称为VirtualDeviced模块),在调用工作节点适配器模块,将该虚拟节点上下文转换成Kubernetes Node描述符时,需要在该KubernetesNode描述符的metadata字段中的labels里字段里设置键为"edge-node-id"的标签,标签值为虚拟节点管理设备所在的边缘节点的唯一标识,一种可能的实现方法是从VirtualDeviced模块的配置文件中读取该边缘节点标识。
虚拟节点控制器模块(本实施例中称为VirtualNodeController模块),在图11所示实施例的功能基础上,还需要维护一个“虚拟节点标识和边缘节点标识对应关系”表格,该表格用于判断一个可调度资源所在终端设备是否发生了切换而引起重复的Kubernetes工作节点注册;按照WorkerNodeAdapter模块的实现,Kubernetes Node名称即虚拟节点标识,而该Kubernetes Node标签里键为"edge-node-id"的标签值即虚拟节点所在的边缘节点的边缘节点标识。
其中,“虚拟节点标识和边缘节点标识对应关系”表格可以通过数据库实现,也可以通过共享内存实现,使得该表格可被切换控制器模块访问,具体实现本申请实施例不做限定。
本实施例中,新增切换控制器模块,本实施例在实现时命名为HandoverController模块,用于终端设备发生切换时,将源边缘节点上虚拟节点资源库模块里该虚拟节点对应的所有任务单元上下文,迁移到目标边缘节点;因此需要CloudHub模块新增接口对接HandoverController模块。在该接口上:
HandoverController模块向CloudHub模块发送的消息包括:虚拟节点迁出请求消息和虚拟节点迁入请求消息。
HandoverController模块从CloudHub模块接收的消息包括:虚拟节点迁出响应消息和虚拟节点迁入响应消息。
下面,以第一设备是终端设备为例,说明本实施例中,当终端设备从一个边缘节点切换到另一个边缘节点时一种计算节点的管理方法,一种可能的实现方式如下:
步骤1,VirtualNodeController模块收到创建Kubernetes Node请求消息,消息包括Kubernetes Node描述符,将该Kubernetes Node描述符中的metadata字段中的name字段的值作为虚拟节点标识vnId的值,将metadata字段中的labels字段里键为"edge-node-id"的标签值作为边缘节点标识(本实施例中也称为edgeNodeId);根据vnId和edgeNodeId查找“虚拟节点标识和边缘节点标识对应关系”表格,若在表格中找vnId相同,但是edgeNodeId不同的条目,则认为虚拟节点对应资源所在的终端设备发生了切换,此时“虚拟节点标识和边缘节点标识对应关系”表格中的edgeNodeId作为源边缘节点标识(本实施例中也称为sourceEdgeNodeId),创建Kubernetes Node请求消息里edgeNodeId作为目标边缘节点标识(本实施例中也称为targetEdgeNodeId)。
步骤2,若终端设备发生了切换,VirtualNodeController模块通过KubeEdge通信框架向HandoverController模块发送切换通知消息,消息包括vnId、sourceEdgeNodeId和targetEdgeNodeId。
步骤3,HandoverController模块经过CloudHub模块和EdgeHub模块,向源边缘节点的VirtualDeviced模块(本实施例中也称为Source VirtualDeviced模块)发送虚拟节点迁出请求消息,消息包括vnId。
步骤4,Source VirtualDeviced模块收到虚拟节点迁出请求消息,查找VirtualNodeResources模块中的VirtualNodeTable中该vnId对应的虚拟节点上下文,并将VirtualNodeTable中vnId对应的上下文的vnStatus字段设置为预设的表示虚拟节点已经迁移的标志,如"migrated",并读取TaskUnitTable中该vnId对应的所有任务单元上下文;可选地,Source VirtualDeviced模块设置定时器,若达到预设的阈值则从VirtualNodeTable中删除该vnId对应的虚拟节点上下文,并从TaskUnitTable中删除该vnId对应的所有任务单元上下文。
步骤5,Source VirtualDeviced模块经过EdgeHub模块和CloudHub模块向HandoverController模块发送虚拟节点迁出响应消息,消息包括该虚拟节点对应的所有任务单元上下文。
步骤6,HandoverController模块收到虚拟节点迁出响应消息,经过CloudHub模块和EdgeHub模块,向目标边缘节点上的VirtualDeviced模块(称为Target VirtualDeviced模块)发送虚拟节点迁入请求消息,消息包括该虚拟节点对应的所有任务单元上下文。
步骤7,Target VirtualDeviced模块收到虚拟节点迁入请求消息,将消息里包括的该虚拟节点对应的所有任务单元上下文更新到目标边缘节点的VirtualNodeResources模块中的TaskUnitTable中。
步骤8,Target VirtualDeviced模块经过EdgeHub模块和CloudHub模块向HandoverController模块发送虚拟节点迁入响应消息,消息包括响应结果。
步骤9,HandoverController模块收到虚拟节点迁入响应消息,且响应结果指示已成功迁移,通过KubeEdge通信框架向VirtualNodeController模块发送切换确认消息,消息包括确认结果。
步骤10,VirtualNodeController模块收到切换确认消息,调用Kubernetes API的更新节点状态接口,如Node资源的Replace Status操作接口,参数包括Node名称和Kubernetes Node描述符,其中Node名称即Kubernetes Node描述符中的metadata字段中的name字段的值,向Kubernetes API Server请求更新工作节点状态。
步骤11,VirtualNodeController将“虚拟节点标识和边缘节点标识对应关系”表格中该虚拟节点标识vnId对应的边缘节点标识修改为目标边缘节点标识targetEdgeNodeId。
可选地,当VirtualNodeController完成更新工作节点状态之后,获取调用Kubernetes API的Node资源的Replace Status操作接口的响应结果,经过CloudHub模块和EdgeHub模块发送创建Kubernetes Node响应消息到VirtualDeviced模块,消息包括虚拟节点标识和结果信息,结果信息包括更新Kubernetes Node状态是否成功的标志,如成功或失败,以及可选的失败原因。
该实施例中,KubeEdge通信框架,是指KubeEdge项目中各模块之间通信的软件框架,当前为KubeEdge项目的“beehive”框架,详细描述可以参考相关技术,此处不再赘述。
本实施例中,通过在KubeEdge中新增虚拟节点控制器模块和切换控制器模块、虚拟节点管理设备和任务单元代理模块,同时在KubeEdge的EdgeHub模块和EventBus模块新增接口与虚拟节点管理设备对接,在KubeEdge的CloudHub模块新增两个接口分别与虚拟节点控制器模块和切换控制器模块对接。并且在消息流程方面,新增切换通知消息、虚拟节点迁出请求消息、虚拟节点迁出响应消息、虚拟节点迁入请求消息、虚拟节点迁入响应消息和切换确认消息,使得终端设备在切换到目标边缘节点后重新进行资源注册时,虚拟节点控制器模块可以检测到该重复的资源注册消息,通知切换控制器将该虚拟节点对应的所有任务单元上下文,从源边缘节点迁移到目标边缘节点,并将原本的创建Kubernetes Node操作改为更新Kubernetes Node状态操作,使得Kubernetes认为源虚拟节点并未失效,而是做了状态更新,从而避免终端设备发生切换而导致Kubernetes进行不必要的重新调度。
下面,对本申请上述实施例中涉及的模块以及可实现方式进行示例性地介绍。在此说明的是,该示例中的实现方式仅是一种可实现方式,也可以是其他实现方式,本申请实施例对此不做限定。
虚拟节点资源库(VirtualNodeResources)模块,可以使用数据库的方式实现,也可以使用共享内存的方式实现。若以数据库的方式实现,一种可实现方式是VirtualNodeTable和TaskUnitTable为数据库中的两张表,另一种可实现方式是VirtualNodeTable和TaskUnitTable表中的字段和值为数据库中的键值对;若以共享内存的方式实现,一种可实现方式是VirtualNodeTable和TaskUnitTable为内存中的两个结构体数组。
示例性地,如表3和表4所示,表3为VirtualNodeTable中可以包括的字段,表4为TaskUnitTable中可以包括的字段。
表3
表4
在此说明的是,表3和表4中,vn、tu和su分别是虚拟节点Virtual Node、任务单元Task Unit和调度单元Scheduling Unit的缩写。Timestamp类型由实现而定,可以是整数、字符串或专门的时间戳类型。
任务单元类型选择器模块(TaskUnitTypeSelector模块),用于选择某个调度单元在某个虚拟节点上的任务单元类型,输入参数包括:Kubernetes Pod描述符;输出参数包括:任务单元类型;
一种可能的实现方式如下:从Kubernetes Pod描述符的spec字段的nodeName字段获取该Pod所分配的工作节点的名称,该工作节点的名称即该工作节点对应的虚拟节点标识;根据虚拟节点标识从虚拟节点资源库的虚拟节点表中查询出该虚拟节点标识对应的虚拟节点上下文,将该虚拟节点上下文的任务单元类型列表字段解析为任务单元类型的数组。若Kubernetes Pod描述符中包括预期的任务单元类型(例如该Kubernetes Pod描述符的metadata字段中的labels字段中有键为"task-unit-type"的标签,则该标签值即预期的任务单元类型),且预期的任务单元类型为该虚拟节点标识对应的任务单元类型的数组中的一个值,则该预期的任务单元类型为选择的任务单元类型。否则,该虚拟节点标识对应的任务单元类型的数组中的第一个值作为选择的任务单元类型;或为虚拟节点群组预置任务单元类型(该任务单元类型为该虚拟节点群组中的虚拟节点共同支持的任务单元类型),并写入任务单元类型选择器的数据库或配置文件,从该虚拟节点标识对应的虚拟节点上下文中获取对应的虚拟节点群组,则数据库或配置文件中该虚拟节点群组对应的任务单元类型为选择的任务单元类型。
任务单元适配器模块(TaskUnitAdapter模块),用于将Kubernetes Pod描述符转换成适合在终端设备或网络节点运行的任务单元描述符。
示例性地,表5为任务单元适配器模块可以包括的输入参数。
表5
其中taskUnitType的可选值包括:"Native"、"Container",或用户针对具体场景自定义的类型,如"JavaThread"等;Pod类型,由Kubernetes定义,任务单元适配器模块使用包括如表6所示的字段。
表6
字段名称 | 字段类型 | 字段说明 |
kind | 字符串 | 可选,Kubernetes资源种类,默认为"Pod" |
spec | PodSpec | Pod规格 |
其中的PodSpec类型,由Kubernetes定义,任务单元适配器模块使用包括如表7所示的字段。
表7
字段名称 | 字段类型 | 字段说明 |
initContainers | Container类型的数组 | 可选,用于初始化的容器列表 |
containers | Container类型的数组 | 容器列表 |
其中的Container类型,由Kubernetes定义,任务单元适配器模块使用包括如表8所示的字段。
表8
其中的EnvVar类型,由Kubernetes定义,任务单元适配器模块使用包括如表9所示的字段。
表9
字段名称 | 字段类型 | 字段说明 |
name | 字符串 | 环境变量名称 |
value | 字符串 | 环境变量的值 |
示例性地,任务单元适配器模块的输出结果包括任务单元描述符,该任务单元描述符是TaskUnit类型,该TaskUnit类型包括的参数如表10所示。
表10
其中,taskUnitType的可选值与表5里定义的一致;taskUnitContent包括任务单元规格,参数类型可为任意类型,具体由taskUnitType的值决定,一种可能的实现方式是表示为编程语言里定义的通用数据类型,例如Go语言里的interface{}类型,taskUnitContent的具体类型示例如下:若taskUnitType的值为"Native",则taskUnitContent参数为NativeTaskUnit类型,若taskUnitType的值为"Container",则taskUnitContent参数为Kubernetes Pod类型,若taskUnitType的值为用户自定义的类型名称,则taskUnitContent参数为该自定义类型;对于NativeTaskUnit类型,即原生任务单元,包括的字段如表11所示。
表11
字段名称 | 字段类型 | 字段说明 |
spec | TaskUnitSpec | 任务单元规格 |
pod | 字符串 | 可选,将输入参数的Pod描述符序列化后的字符串 |
其中的TaskUnitSpec类型,即任务单元规格,包括的字段如表12所示。
表12
其中的ExecutableEntity类型,即执行实体,包括的字段如表13所示。
表13
其中的EnvVar类型与表9中定义相同。
本申请实施例中参数类型或字段类型中的字符串、整数、布尔型,具体可以由数据库或编程语言提供的数据类型实现,本申请实施例对此不做限定。本申请实施例中参数类型或字段类型中的数组,具体可以由编程语言提供的数组、向量、列表等数据结构实现,本申请实施例对此不做限定。
下面提供一种任务单元适配器模块的处理过程的可实现方式:
步骤1,创建初始的TaskUnit类型的对象taskUnit,将输入参数taskUnitType的值赋值到taskUnit对象的taskUnitType字段。
步骤2,创建字符串变量namespace和name,若输入参数pod的metadata字段中的namespace字段存在且值不为空,则将该字段的值赋值到namespace变量,否则namespace变量的值为"default",若输入参数pod的metadata字段中的name字段存在且值不为空,则将该字段值赋值到name变量,否则随机生成一个字符串作为name变量的值,将namespace变量的值和name变量的值通过“-”字符连接后的字符串赋值到taskUnit中的taskUnitName字段,即taskUnitName=namespace+"-"+name。
步骤3,若taskUnitType的值为"Container",则创建初始的Kubernetes Pod类型的对象,命名为k8sPod,将pod参数的值赋值到k8sPod,再将k8sPod对象赋值到taskUnit中的taskUnitContent字段,返回taskUnit,即任务单元描述符。
步骤4,若taskUnitType的值为"Native",则创建初始的NativeTaskUnit类型的对象,命名为nativeTaskUnit,若pod参数的spec字段的initContainers字段存在且不为空,则遍历initContainers中的每个initContainer,调用“容器转换为执行实体”方法(ConvertContainerToExecutableEntity),以initContainer为参数,转换为initExecutableEntity对象,并添加到nativeTaskUnit的spec字段中的initExecutableEntities数组中;若pod参数的spec字段的containers字段存在且不为空,则遍历containers中的每个container,调用“容器转换为执行实体”方法(ConvertContainerToExecutableEntity),以container为参数,转换为executableEntity对象,并添加到nativeTaskUnit的spec字段中的executableEntities数组中。
步骤5,若reservingPod参数存在且值为真,则将pod参数按照现有JSON序列化方法,转换为字符串(假设变量名为body),将序列化后字符串赋值到nativeTaskUnit的pod字段。
步骤6,将nativeTaskUnit对象赋值到taskUnit中的taskUnitContent字段,返回taskUnit对象,即任务单元描述符。
可选地,若taskUnitType的值为用户自定义的类型名称,则按照用户预设的规则将pod参数转换成该自定义的类型的对象,并将该对象赋值到taskUnit中的taskUnitContent字段,返回taskUnit对象,即任务单元描述符。
其中的“容器转换为执行实体”方法(ConvertContainerToExecutableEntity),包括:输入参数,包括:container,类型为Container,该类型见表8;输出参数,包括:executableEntity,类型为ExecutableEntity,该类型见表13,容器转换为执行实体的处理过程,按表14包括的字段映射关系进行转换。
表14
ExecutableEntity类型字段名称 | Container类型字段名称 |
name | name |
package | image |
command | command |
args | args |
env | env |
workingDir | workingDir |
工作节点适配器模块(WorkerNodeAdapter模块),用于将虚拟节点表中的虚拟节点上下文转换成Kubernetes Node描述符,包括:输入参数,包括:virtualNodeContext,类型为VirtualNodeContext,其中VirtualNodeContext为VirtualNodeTable中每个上下文的类型,该类型见表3;输出参数,包括:node,类型为Node,其中Node类型由Kubernetes定义,具体见Kubernetes的文档和源代码,此处不再详述。
下面提供一种工作节点适配器模块的处理过程的可实现方式:
步骤1,创建初始的Kubernetes Node类型的对象node,将该对象的apiVersion字段的值设置为所支持的Kubernetes Node API版本,如"v1",kind字段的值设置为"Node"。
步骤2,将virtualNodeContext中的vnId字段的值赋值到node的metadata字段中的name字段。
步骤3,在node的status字段中的addresses数组里新增一项,该项的字段包括:type和address,其中type字段的值为"InternalIP",address字段的值为virtualNodeContext中的vnAddress字段的值。
步骤4,将virtualNodeContext中的cpuTotal、memTotal和diskTotal字段的值分别赋值到node的status字段中的capacity字段中的cpu、memory和ephemeral-storage字段。
步骤5,将virtualNodeContext中的cpuAllocatable、memAllocatable和diskAllocatable字段的值分别赋值到node的status字段中的allocatable字段中的cpu、memory和ephemeral-storage字段。
步骤6,若virtualNodeContext中的nodeSystemInfo字段的值不为空,则将该字段的值解析为Kubernetes定义的NodeSystemInfo类型的对象nodeSystemInfo,将该对象赋值到node的status字段中的nodeInfo字段。
步骤7,在node的status字段中的conditions数组里新增一项,该项的字段包括:type、status和lastHeartbeatTime,其中type字段的值为"Ready";若virtualNodeContext中的vnStatus字段的值为预设的表示虚拟节点已经就绪的标志,如"ready",则status字段的值为"True",否则status字段的值为"False",可选地,若vnStatus字段的值为预设的表示虚拟节点正在创建或创建成功的标志,如"creating"或"created",也可以将status字段的值设为"True";lastHeartbeatTime字段的值为virtualNodeContext中的heartbeatTime字段的值转换成字符串类型后的值;lastTransitionTime字段的值为virtualNodeContext中的transitionTime字段的值转换成字符串类型后的值。
步骤8,返回该node对象。
调度单元适配器模块(SchedulingUnitAdapter模块),用于将任务单元表中的任务单元上下文转换成Kubernetes Pod描述符,输入参数,包括:taskUnitContext,类型为TaskUnitContext,其中TaskUnitContext为TaskUnitTable中每个上下文的类型,该类型见表4;输出参数,包括:pod,类型为Pod,其中Pod类型由Kubernetes定义,具体见Kubernetes的文档和源代码,此处不再详述。
示例性地,一种可实现方式包括:
步骤1,创建初始的Kubernetes Pod类型的对象pod,将该对象的apiVersion字段的值设置为所支持的Kubernetes Node API版本,如"v1",kind字段的值设置为"Pod"。
步骤2,将taskUnitContext中的suName字段和suNamespace字段的值分别赋值到pod对象的metadata字段中的name字段和namespace字段。
步骤3,将taskUnitContext中的tuPhase字段的值赋值到pod对象的status字段中的phase字段。
步骤4,根据taskUnitContext中的tuStatus字段设置该pod对象中的status字段,包括:在status字段的conditions数组里新增一项,该项的字段包括:type、status和lastTransitionTime,其中type字段的值为"Ready";若tuStatus的值为预设的表示任务单元已经就绪的标志,如"ready",则status字段的值为"True",否则status字段的值为"False",可选地,若tuStatus字段的值为预设的表示任务单元正在创建或创建成功的标志,如"creating"或"created",也可以将status字段的值设为"True";lastTransitionTime字段的值为taskUnitContext中的transitionTime字段的值转换成字符串类型后的值。
步骤5,返回该pod对象。
任务单元代理模块(TaskUnitAgent模块),接收任务单元管理请求消息,根据不同的消息类型,作不同的处理,其中任务单元管理请求消息类型有:创建任务单元请求和删除任务单元请求。
示例性地,一种可实现方式包括:若消息类型为创建任务单元请求消息,则消息包括任务单元描述符,任务单元描述符包括:任务单元类型taskUnitType、任务单元名称taskUnitName和任务单元内容taskUnitContent,其中任务单元内容包括任务单元规格,处理流程为:
若任务单元类型taskUnitType的值为"Native",则将taskUnitContent解析为NativeTaskUnit类型的对象nativeTaskUnit,分别遍历nativeTaskUnit对象的spec字段中的initExecutableEntities和executableEntities数组,对于数组中每个initExecutableEntity或executableEntity,进行如下操作:
步骤1,检测所在终端设备或网络节点是否存在nativeTaskUnit对象的initExecutableEntity或executableEntity中package字段指定的执行实体软件包,若不存在,从任务单元仓库下载该任务单元的执行实体软件包,如果软件包为压缩包,则进行解压缩;
步骤2,若env字段存在且值不为空,则遍历env数组,设置环境变量;
步骤3,若command字段存在且值不为空,则根据command数组里内容,取第一个值作为执行命令;如command=["java"],则执行命令为:java;
步骤4,若args字段存在且值不为空,则根据args数组里内容,以空格连接成完整的命令参数;如args=["-jar","image-recognition.jar"],则参数列表为:-jar image-recognition.jar;
步骤5,将执行命令和命令参数组合,并执行;例如执行:java-jar image-recognition.jar。
步骤6,在本地数据库或内存里记录任务单元名称taskUnitName、任务单元类型taskUnitType和命令执行后的进程标识或线程标识。
可选地,若任务单元类型taskUnitTyped的值为"Container",处理流程为:将消息里的taskUnitContent字段的值发送到Kubernetes节点代理,由Kubernetes节点代理处理后续的容器镜像下载和容器的运行,为现有技术,不再详述;在本地数据库或内存里记录下任务单元名称taskUnitName、任务单元类型taskUnitType和容器标识。
可选地,若任务单元类型为用户根据应用场景自定义的类型,则由用户自行实现对该类型的任务单元实例的创建,如若任务单元类型taskUnitType的值为"JavaThread",则可以通过动态加载Java类的方式实现,并在本地数据库或内存里记录下任务单元名称taskUnitName、任务单元类型taskUnitType和Java线程标识。
若消息类型为删除任务单元请求消息,则消息包括任务单元名称,处理流程为:检测本地数据库或内存里是否存在该任务单元名称,若有,若任务单元类型的值为"Native",则查找出该任务单元名称对应的所有进程标识或线程标识,并终止对应的进程或线程;若任务单元类型的值为"Container",则查找出该任务单元名称对应的所有容器标识,并终止并删除对应的容器;若任务单元类型为用户根据应用场景自定义的类型,则由用户自行实现对该类型的任务单元实例的删除,如若任务单元类型的值为"JavaThread",则查找出该任务单元名称对应的所有Java线程标识,并终止对应的Java线程;若删除任务单元成功,则在本地数据库或内存里将该任务单元名称对应的条目删除。
原生任务单元仓库,提供的接口包括:上传接口:用于上传任务单元的执行实体软件包,接口参数包括软件包名称、可选的软件包版本;下载接口:用于下载任务单元的执行实体软件包,接口参数包括软件包名称、可选的软件包版本。
容器注册表,提供标准容器仓库接口,具体实现可由现有的容器镜像服务提供,或自行搭建容器镜像服务器,为现有技术,此处不再详述。
在此说明的是,本申请实施例中示出的各个表格仅是作为一种示例,而不应构成本申请的限制。例如,各个表格之间既可以合并,也可以拆分,而并不局限于本申请实施例中的表现形式。
图14为本申请一个实施例提供的计算节点的管理装置的结构性示意图。图14所示的管理装置可以用于执行前述任意一个实施例中与第一设备对应的各个流程和/或步骤。
如图14所示,本实施例的管理装置1400包括:收发模块1401和处理模块1402。
其中,收发模块1401,用于获取第一信息,该第一信息用于指示第一设备创建任务单元实例,第一信息包括任务单元描述符,任务单元描述符包括第一设备的任务单元的描述信息,描述信息包括以下至少一种:任务单元的任务单元类型、任务单元的任务单元规格;
处理模块1402,用于根据任务单元描述符创建任务单元实例。
作为一种示例,处理模块1402可以用于执行图6至图12中任意一个所述的管理方法中的根据所述任务单元描述符创建任务单元实例的步骤。例如,处理模块1402用于执行S603。
在一种可能的实现方式中,在获取第一信息之前,收发模块1401还用于:发送资源注册请求消息,该资源注册请求消息用于请求将第一设备映射为工作节点,资源注册请求消息包括:第一设备的资源标识和任务单元类型信息,任务单元类型信息包括第一设备可使用的任务单元类型。
在一种可能的实现方式中,收发模块1401还用于:获取来自第二设备的资源注册响应消息,该资源注册响应消息包括指示第一设备映射为工作节点的结果信息。
在此说明的是,本实施例中的收发模块1401和处理模块1402也可以合并为一个模块,例如将合并后的模块称为任务单元代理模块,用于执行图6至图12所示实施例的各个步骤/功能。
图15为本申请一个实施例提供的计算节点的管理装置的结构性示意图。图15所示的管理装置可以用于执行前述任意一个实施例中与第二设备对应的各个流程和/或步骤。
如图15所示,本实施例的通信装置1500包括:虚拟节点代理模块1501、资源映射管理器模块1502。其中,虚拟节点代理模块1501,用于根据调度单元描述符和虚拟节点上下文确定任务单元描述符,所述虚拟节点上下文用于指示第一设备映射的工作节点的资源信息,资源信息包括第一设备的资源标识和任务单元类型信息,任务单元类型信息包括第一设备可使用的任务单元类型,任务单元描述符包括第一设备的任务单元的描述信息,描述信息包括以下至少一种:任务单元的任务单元类型、任务单元的任务单元规格;资源映射管理器模块1502,用于向第一设备发送第一信息,该第一信息用于指示第一设备创建任务单元实例,第一信息中包括任务单元描述符。
作为一种示例,虚拟节点代理模块1501可以用于执行图6至图12中任意一个所述的管理方法中的确定计算描述符的步骤。例如,虚拟节点代理模块1501用于执行S601。
在一种可能的实现方式中,虚拟节点代理模块1501具体用于:根据虚拟节点上下文为调度单元选择工作节点上的任务单元类型;根据调度单元描述符和任务单元类型,确定任务单元描述符。
在一种可能的实现方式中,资源映射管理器模块1502还用于:获取来自第一设备的资源注册请求消息,该资源注册请求消息包括资源信息;根据资源注册请求消息生成第一设备映射为工作节点时的虚拟节点上下文。
在一种可能的实现方式中,资源映射管理器模块1502还用于:向第一设备发送资源注册响应消息,该资源注册响应消息包括指示第一设备映射为工作节点的结果信息。
在一种可能的实现方式中,虚拟节点代理模块1501还用于:根据虚拟节点上下文生成工作节点的工作节点描述符;向控制设备发送工作节点描述符;获取控制设备根据工作节点描述符发送的调度单元描述符。
在一种可能的实现方式中,虚拟节点代理模块1501还用于:获取迁出请求消息,该迁出请求消息用于请求迁出任务单元上下文,任务单元上下文包括任务单元描述符与工作节点之间的映射关系;发送任务单元上下文。
本申请还提供了一种计算节点的管理系统,该管理系统包括上述图14所示的装置(即装置1400)和/或上述图15所示的装置(即装置1500)。
图16为本申请另一个实施例提供的管理装置的结构示意图。图16所示的管理装置可以用于执行前述任意一个实施例所述的管理方法。
如图16所示,本实施例的装置1600包括:存储器1601、处理器1602、通信接口1603以及总线1604。其中,存储器1601、处理器1602、通信接口1603通过总线1604实现彼此之间的通信连接。
应理解,装置1600可以具体为上述实施例中的第一通信设备或第二通信设备,或者,上述实施例中的第一通信设备或第二通信设备的功能可以集成在装置1600中,装置1600可以用于执行上述实施例中的第一通信设备或第二通信设备对应的各个步骤和/或流程。
存储器1601可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器1601可以存储程序,当存储器1601中存储的程序被处理器1602执行时,处理器1602用于执行图6至图13所示的方法的各个步骤。
处理器1602可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application specific integrated circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本申请方法实施例的管理方法。
处理器1602还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请实施例的规划自动驾驶车辆的方法的各个步骤可以通过处理器1602中的硬件的集成逻辑电路或者软件形式的指令完成。
上述处理器1602还可以是通用处理器、数字信号处理器(digital signalprocessing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1601,处理器1602读取存储器1601中的信息,结合其硬件完成本申请测温装置包括的单元所需执行的功能,例如,可以执行图6至图13所示实施例的各个步骤/功能。
通信接口1603可以使用但不限于收发器一类的收发装置,来实现装置1500与其他设备或通信网络之间的通信。
总线1604可以包括在装置1600各个部件(例如,存储器1601、处理器1602、通信接口1603)之间传送信息的通路。
应理解,本申请实施例所示的装置1600可以是电子设备,或者,也可以是配置于电子设备中的芯片。
应理解,本申请实施例中的处理器可以为中央处理单元(central processingunit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random accessmemory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
图17为本申请一个实施例提供的管理装置的结构性示意图。该管理装置1700包括:输入输出接口1701、逻辑电路1702。其中,该输入输出接口1701可以用于输入或输出指令或信息,逻辑电路1702可以用于执行输入输出接口1701的指令或者根据输入输出接口1701的信息执行图6至图13所示实施例的各个步骤/功能。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (30)
1.一种计算节点的管理方法,其特征在于,应用于第一设备,包括:
获取第一信息,所述第一信息用于指示所述第一设备创建任务单元实例,所述第一信息包括任务单元描述符,所述任务单元描述符包括所述第一设备的任务单元的描述信息,所述描述信息包括以下至少一种:所述任务单元的任务单元类型、所述任务单元的任务单元规格;
根据所述任务单元描述符创建任务单元实例。
2.根据权利要求1所述的方法,其特征在于,在所述获取第一信息之前,所述方法还包括:
发送资源注册请求消息,所述资源注册请求消息用于请求将所述第一设备映射为工作节点,所述资源注册请求消息包括:所述第一设备的资源标识和任务单元类型信息,所述任务单元类型信息用于指示所述第一设备可使用的任务单元类型。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
获取来自第二设备的资源注册响应消息,所述资源注册响应消息包括指示所述第一设备映射为所述工作节点的结果信息。
4.一种计算节点的管理方法,其特征在于,应用于第二设备,所述方法包括:
根据调度单元描述符和虚拟节点上下文确定任务单元描述符,所述虚拟节点上下文用于指示第一设备映射的工作节点的资源信息,所述资源信息包括所述第一设备的资源标识和任务单元类型信息,所述任务单元类型信息包括所述第一设备可使用的任务单元类型,所述任务单元描述符包括所述第一设备的任务单元的描述信息,所述描述信息包括以下至少一种:所述任务单元的任务单元类型、所述任务单元的任务单元规格;
向所述第一设备发送第一信息,所述第一信息用于指示所述第一设备创建任务单元实例,所述第一信息中包括所述任务单元描述符。
5.根据权利要求4所述的方法,其特征在于,所述根据调度单元描述符和虚拟节点上下文确定任务单元描述符,包括:
根据所述虚拟节点上下文为所述调度单元选择所述工作节点上的任务单元类型;
根据所述调度单元描述符和所述任务单元类型,确定所述任务单元描述符。
6.根据权利要求4或5所述的方法,其特征在于,在所述根据调度单元描述符和虚拟节点上下文确定任务单元描述符之前,所述方法还包括:
获取来自第一设备的资源注册请求消息,所述资源注册请求消息包括所述资源信息;
根据所述资源注册请求消息生成所述第一设备映射为工作节点时的所述虚拟节点上下文。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
向第一设备发送资源注册响应消息,所述资源注册响应消息包括指示所述第一设备映射为所述工作节点的结果信息。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
根据所述虚拟节点上下文生成所述工作节点的工作节点描述符;
向控制设备发送所述工作节点描述符;
获取所述控制设备根据所述工作节点描述符发送的所述调度单元描述符。
9.根据权利要求6所述的方法,其特征在于,所述方法还包括:
获取迁出请求消息,所述迁出请求消息用于请求迁出所述任务单元上下文,所述任务单元上下文包括所述任务单元描述符与所述工作节点之间的映射关系;
发送所述任务单元上下文。
10.一种计算节点的管理装置,其特征在于,所述装置应用于第一设备,包括:
收发模块,用于获取第一信息,所述第一信息用于指示所述第一设备创建任务单元实例,所述第一信息包括任务单元描述符,所述任务单元描述符包括所述第一设备的任务单元的描述信息,所述描述信息包括以下至少一种:所述任务单元的任务单元类型、所述任务单元的任务单元规格;
处理模块,用于根据所述任务单元描述符创建任务单元实例。
11.根据权利要求10所述的装置,其特征在于,在所述获取第一信息之前,所述收发模块还用于:
发送资源注册请求消息,所述资源注册请求消息用于请求将所述第一设备映射为工作节点,所述资源注册请求消息包括:所述第一设备的资源标识和任务单元类型信息,所述任务单元类型信息包括所述第一设备可使用的任务单元类型。
12.根据权利要求11所述的装置,其特征在于,所述收发模块还用于:
获取来自第二设备的资源注册响应消息,所述资源注册响应消息包括指示所述第一设备映射为所述工作节点的结果信息。
13.一种计算节点的管理装置,其特征在于,所述装置应用于第二设备,所述装置包括:
虚拟节点代理模块,用于根据调度单元描述符和虚拟节点上下文确定任务单元描述符,所述虚拟节点上下文用于指示第一设备映射的工作节点的资源信息,所述资源信息包括所述第一设备的资源标识和任务单元类型信息,所述任务单元类型信息包括所述第一设备可使用的任务单元类型,所述任务单元描述符包括所述第一设备的任务单元的描述信息,所述描述信息包括以下至少一种:所述任务单元的任务单元类型、所述任务单元的任务单元规格;
资源映射管理器模块,用于向所述第一设备发送第一信息,所述第一信息用于指示所述第一设备创建任务单元实例,所述第一信息中包括所述任务单元描述符。
14.根据权利要求13所述的装置,其特征在于,所述虚拟节点代理模块具体用于:
根据所述虚拟节点上下文为所述调度单元选择所述工作节点上的任务单元类型;
根据所述调度单元描述符和所述任务单元类型,确定所述任务单元描述符。
15.根据权利要求13或14所述的装置,其特征在于,所述资源映射管理器模块还用于:
获取来自第一设备的资源注册请求消息,所述资源注册请求消息包括所述资源信息;
根据所述资源注册请求消息生成所述第一设备映射为工作节点时的所述虚拟节点上下文。
16.根据权利要求15所述的装置,其特征在于,所述资源映射管理器模块还用于:
向第一设备发送资源注册响应消息,所述资源注册响应消息包括指示所述第一设备映射为所述工作节点的结果信息。
17.根据权利要求15或16所述的装置,其特征在于,所述虚拟节点代理模块还用于:
根据所述虚拟节点上下文生成所述工作节点的工作节点描述符;
向控制设备发送所述工作节点描述符;
获取所述控制设备根据所述工作节点描述符发送的所述调度单元描述符。
18.根据权利要求15所述的装置,其特征在于,所述虚拟节点代理模块还用于:
获取迁出请求消息,所述迁出请求消息用于请求迁出所述任务单元上下文,所述任务单元上下文包括所述任务单元描述符与所述工作节点之间的映射关系;
发送所述任务单元上下文。
19.一种计算节点的管理系统,其特征在于,所述管理系统包括控制设备、第一设备和第二设备,所述第一设备中部署任务单元代理模块,所述控制设备中包含第一设备映射为工作节点时的工作节点描述符;
所述控制设备,用于根据所述第一设备映射为工作节点时的工作节点描述符,将调度单元分配给所述工作节点和向所述第二设备发送所述调度单元的调度单元描述符;
所述第二设备,用于根据调度单元描述符和虚拟节点上下文确定任务单元描述符,所述虚拟节点上下文用于指示第一设备映射的工作节点的资源信息,所述资源信息包括所述第一设备的资源标识和任务单元类型信息,所述任务单元类型信息包括所述第一设备可使用的任务单元类型,所述任务单元描述符包括所述第一设备的任务单元的描述信息,所述描述信息包括以下至少一种:所述任务单元的任务单元类型、所述任务单元的任务单元规格;
所述第二设备,还用于向所述第一设备发送第一信息,所述第一信息用于指示所述第一设备创建任务单元实例,所述第一信息中包括所述任务单元描述符;
所述任务单元代理模块,用于根据所述任务单元描述符创建任务单元实例。
20.根据权利要求19所述的系统,其特征在于,所述第二设备具体用于:
根据虚拟节点上下文为所述调度单元选择所述工作节点上的任务单元类型;
根据所述调度单元描述符和所述任务单元类型,确定所述任务单元描述符。
21.根据权利要求19或20所述的系统,其特征在于,所述任务单元代理模块还用于:向第二设备发送资源注册请求消息,所述资源注册请求消息用于请求将所述第一设备映射为工作节点,所述资源注册请求消息包括所述资源信息;
所述第二设备还用于:获取所述资源注册请求消息,根据所述资源注册请求消息生成所述第一设备映射为所述工作节点时的所述虚拟节点上下文。
22.根据权利要求21所述的系统,其特征在于,所述第二设备还用于:
根据所述虚拟节点上下文生成所述工作节点的工作节点描述符;
向控制设备发送所述工作节点描述符;
获取所述控制设备根据所述工作节点描述符发送的所述调度单元描述符。
23.根据权利要求21所述的系统,其特征在于,所述第二设备还用于:
获取迁出请求消息,所述迁出请求消息用于请求迁出所述任务单元上下文,所述任务单元上下文包括所述任务单元描述符与所述工作节点之间的映射关系;
发送所述任务单元上下文。
24.根据权利要求19至23中任一项所述的系统,其特征在于,所述控制设备部署在边缘节点。
25.根据权利要求19至23中任一项所述的系统,其特征在于,所述控制设备部署在云端节点。
26.一种计算节点的管理装置,其特征在于,包括至少一个处理器和存储器,所述处理器和所述存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时,使得计算节点的管理装置执行如权利要求1至3任一项所述的计算节点的管理方法,或者执行如权利要求4至9任一项所述的计算节点的管理方法。
27.一种计算节点的管理装置,其特征在于,包括逻辑电路和输入输出接口,所述输入输出接口用于输入或输出指令或信息,所述逻辑电路用于执行所述指令或者根据所述信息,以执行如权利要求1至3中任一项所述的方法。
28.一种计算节点的管理装置,其特征在于,包括逻辑电路和输入输出接口,所述输入输出接口用于输入或输出指令或信息,所述逻辑电路用于执行所述指令或者根据所述信息,以执行如权利要求4至9中任一项所述的方法。
29.一种计算机可读存储介质,其特征在于,所述计算机可读介质存储用于计算机执行的程序指令,该程序指令包括用于执行如权利要求1至3任一项所述的计算节点的管理方法,或者执行如权利要求4至9任一项所述的计算节点的管理方法。
30.一种计算机程序产品,所述计算机程序产品中包括计算机程序指令,其特征在于,当所述计算机程序指令在计算机上运行时,使得所述计算机实现如权利要求1至3任一项所述的计算节点的管理方法,或者执行如权利要求4至9任一项所述的计算节点的管理方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110528216.5A CN115344361A (zh) | 2021-05-14 | 2021-05-14 | 计算节点的管理方法及管理系统 |
EP22806232.9A EP4318236A1 (en) | 2021-05-14 | 2022-02-11 | Management method and system for computing node |
PCT/CN2022/076076 WO2022237255A1 (zh) | 2021-05-14 | 2022-02-11 | 计算节点的管理方法及管理系统 |
US18/506,548 US20240086236A1 (en) | 2021-05-14 | 2023-11-10 | Computing node management method and system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110528216.5A CN115344361A (zh) | 2021-05-14 | 2021-05-14 | 计算节点的管理方法及管理系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115344361A true CN115344361A (zh) | 2022-11-15 |
Family
ID=83946546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110528216.5A Pending CN115344361A (zh) | 2021-05-14 | 2021-05-14 | 计算节点的管理方法及管理系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240086236A1 (zh) |
EP (1) | EP4318236A1 (zh) |
CN (1) | CN115344361A (zh) |
WO (1) | WO2022237255A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116661978A (zh) * | 2023-08-01 | 2023-08-29 | 浙江云融创新科技有限公司 | 一种分布式的流程处理方法、装置及分布式业务流程引擎 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0519890D0 (en) * | 2005-09-29 | 2005-11-09 | Houghton Robert | A system and method for sharing computer resources |
US20160380904A1 (en) * | 2015-06-25 | 2016-12-29 | Trifectix, Inc. | Instruction selection based on a generic directive |
WO2018085973A1 (zh) * | 2016-11-08 | 2018-05-17 | 华为技术有限公司 | 一种网络切片的管理方法、单元和系统 |
CN109120678B (zh) * | 2018-07-26 | 2021-05-14 | 北京百度网讯科技有限公司 | 用于分布式存储系统的服务托管的方法和装置 |
US10949254B2 (en) * | 2018-09-28 | 2021-03-16 | Atlassian Pty Ltd. | Systems and methods for scheduling tasks |
CN112100585A (zh) * | 2020-08-19 | 2020-12-18 | 北京小米移动软件有限公司 | 权限管理方法、装置及存储介质 |
CN112130960A (zh) * | 2020-09-29 | 2020-12-25 | 联想(北京)有限公司 | 一种轻量化移动边缘计算节点及构建方法 |
-
2021
- 2021-05-14 CN CN202110528216.5A patent/CN115344361A/zh active Pending
-
2022
- 2022-02-11 WO PCT/CN2022/076076 patent/WO2022237255A1/zh active Application Filing
- 2022-02-11 EP EP22806232.9A patent/EP4318236A1/en active Pending
-
2023
- 2023-11-10 US US18/506,548 patent/US20240086236A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116661978A (zh) * | 2023-08-01 | 2023-08-29 | 浙江云融创新科技有限公司 | 一种分布式的流程处理方法、装置及分布式业务流程引擎 |
CN116661978B (zh) * | 2023-08-01 | 2023-10-31 | 浙江云融创新科技有限公司 | 一种分布式的流程处理方法、装置及分布式业务流程引擎 |
Also Published As
Publication number | Publication date |
---|---|
US20240086236A1 (en) | 2024-03-14 |
EP4318236A1 (en) | 2024-02-07 |
WO2022237255A1 (zh) | 2022-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10175957B1 (en) | System and method for pervasive software platform-based model driven architecture application generator | |
CN109976667B (zh) | 一种镜像管理方法、装置及系统 | |
US10462262B2 (en) | Middleware abstraction layer (MAL) | |
CN107590033B (zh) | 一种创建docker容器的方法、装置和系统 | |
CN110352401B (zh) | 具有按需代码执行能力的本地装置协调器 | |
KR102499219B1 (ko) | 동적 네트워크 인터페이스를 사용하는 상호운용가능 클라우드 기반 미디어 처리 | |
US20170249177A1 (en) | Extending user interface of a web console | |
Leppänen et al. | Mobile agents-based smart objects for the internet of things | |
US20170351723A1 (en) | Managing data format of data received from devices in an internet of things network | |
CN107172214B (zh) | 一种具有负载均衡的服务节点发现方法及装置 | |
CN111865649B (zh) | 处理媒体内容的方法和装置、计算机设备和存储介质 | |
CN113382077B (zh) | 微服务调度方法、装置、计算机设备和存储介质 | |
US20240086236A1 (en) | Computing node management method and system | |
CN113204353A (zh) | 一种大数据平台组件部署方法及装置 | |
CN115086330A (zh) | 跨集群负载均衡系统 | |
CN112579319A (zh) | 一种基于LRU Cache优化的服务调用方法及装置 | |
CN114710549B (zh) | 一种容器平台中网卡的动态管理方法、系统及业务节点 | |
KR101997602B1 (ko) | 디바이스 양방향 m2m 리소스 관리 방법 | |
KR20210066114A (ko) | 이기종 IoT 장치와 IoT 플랫폼의 연동을 위한 프록시, 방법 및 상기 프록시를 포함하는 시스템 | |
CN115437647A (zh) | 适配多框架的微服务部署方法、装置、终端及存储介质 | |
CN112631727B (zh) | 一种容器组pod的监控方法及装置 | |
Steele et al. | XML-based mobile agents | |
CN110781001A (zh) | 一种基于Kubernetes的容器环境变量查看方法 | |
CN111400054A (zh) | 网络插件调用方法及装置,计算机存储介质和电子设备 | |
CN113835846B (zh) | k8s集群的创建方法、装置及计算机可读存储介质 |
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 |