一种基于边缘计算的调度方法及边缘设备集群与流程

文档序号:25868705发布日期:2021-07-13 16:29阅读:119来源:国知局
一种基于边缘计算的调度方法及边缘设备集群与流程

本发明涉及互联网技术领域,特别涉及一种基于边缘计算的调度方法及边缘设备集群。



背景技术:

在当前的边缘计算场景下,为了最大化利用边缘设备资源,可以采用容器虚拟化技术,将符合用户期望的容器编排至边缘设备处,从而通过边缘设备中部署的容器提供服务。

目前,可以通过kubernetes和kubeedge的系统架构,在内容分发网络(contentdeliverynetwork,cdn)中实现上述的容器编排和部署的过程。传统的这种容器编排和部署的过程,通常只是考虑边缘设备的cpu资源和内存资源是否充足。然而,在实际应用中,仅根据cpu资源和内存资源来部署容器是无法充分地利用边缘设备的资源的,也无法很好地将容器与边缘设备进行兼容。



技术实现要素:

本申请的目的在于提供一种基于边缘计算的调度方法及边缘设备集群,能够提高容器在边缘设备中的部署效率。

为实现上述目的,本申请一方面提供一种基于边缘计算的调度方法,所述方法应用于边缘设备集群中,所述边缘设备集群中包括纳管的多个边缘设备,所述方法包括:接收控制中心发来的编排任务,并创建与所述编排任务相匹配的容器;检测各个所述边缘设备的设备信息,并基于所述设备信息,从各个所述边缘设备中筛选出适配于所述容器的目标边缘设备;将所述容器调度至所述目标边缘设备处,并将所述容器与所述目标边缘设备相绑定,以在所述目标边缘设备中建立所述容器与对应缓存之间的映射关系。

为实现上述目的,本申请另一方面还提供一种边缘设备集群,所述边缘设备集群中包括纳管的多个边缘设备,所述边缘设备集群中还包括服务接口、存储单元、控制器和调度器,其中:所述服务接口,用于接收控制中心发来的编排任务,并将所述编排任务写入所述存储单元中;所述控制器,用于监听所述存储单元中写入的编排任务,并创建与所述编排任务相匹配的容器;所述调度器,用于检测各个所述边缘设备的设备信息,并基于所述设备信息,从各个所述边缘设备中筛选出适配于所述容器的目标边缘设备;将所述容器调度至所述目标边缘设备处,以将所述容器与所述目标边缘设备相绑定。

由上可见,本申请一个或者多个实施方式提供的技术方案,控制中心可以接收用户的容器部署需求,然后生成对应的编排任务,该编排任务可以下发至边缘设备集群中。边缘设备集群针对接收到的编排任务,可以创建符合用户预期的一个或者多个容器。然后,通过对各个边缘设备的设备信息进行分析,从而可以筛选出适配于容器的目标边缘设备。在将容器调度至目标边缘设备后,可以将该容器与目标边缘设备相绑定,并可以建立容器与对应缓存之间的映射关系。这样,由于cdn中的业务通常是缓存类型的业务,那么在调度容器时,可以优先考虑与容器绑定的缓存,从而能够复用边缘设备中的缓存,不仅能够提高边缘设备的带宽利用率,还能够提高容器的部署效率和服务效率,使得部署的容器与cdn业务更加兼容。

附图说明

为了更清楚地说明本发明实施方式中的技术方案,下面将对实施方式描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施方式中调度系统的架构示意图;

图2是本发明实施方式中基于边缘计算的调度方法流程图;

图3是本发明实施方式中边缘设备集群的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施方式及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施方式仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本申请保护的范围。

本申请提供一种基于边缘计算的调度方法,该方法可以应用于图1所示的系统架构中。在该系统架构中,可以包括管理平台、控制中心及边缘设备集群。其中,边缘设备集群中可以纳管多个边缘设备,在边缘设备中可以安装cdn厂商提供的系统镜像,该系统镜像运行之后,可以在边缘设备中配置客户端。通过该客户端,边缘设备可以自动被纳管到与当前的区域和运营商相匹配的边缘设备集群中。此外,边缘设备还可以通过该客户端,将自身的设备信息上报至控制中心,控制中心可以再将边缘设备的设备信息下发至对应的边缘设备集群中,边缘设备的设备信息可以作为后续容器调度过程中的依据。

管理平台可以是面向用户的平台,用户通过登录该管理平台,可以选择容器部署的区域信息和运营商信息。这样,管理平台在接收到用户选择的内容后,便可以通过与控制中心进行数据交互,筛选出与用户输入的区域信息和运营商信息相匹配的边缘设备集群。后续,便可以在该边缘设备集群的边缘设备中部署用户的容器。管理平台在确定了边缘设备集群后,还可以让用户确认容器的服务参数配置信息,其中服务参数配置信息用于限定容器的规格,该服务参数配置信息例如可以包括容器所需的cpu资源、内存资源,容器部署的区域,容器的环境变量,镜像的启动参数,健康监测参数等等。服务参数配置信息经过用户确认之后,便可以由管理平台传输至控制中心。

控制中心可以基于管理平台发来的服务参数配置信息,生成对应容器的编排任务,并将该编排任务下发至对应的边缘设备集群,以在边缘设备集群的边缘设备中进行容器的部署。

在实际应用中,可以按照图1展示的流程,将新启用的边缘设备加入对应的边缘设备集群中。具体地,边缘设备通过安装的客户端,可以自动向管理平台发起注册请求,并可以上报自身的设备信息。管理平台通过解析设备信息,从而知晓边缘设备的归属地和支持的运营商,然后可以根据解析得到的信息查询到满足归属地和运营商的边缘设备集群,便可以向该边缘设备集群的控制中心发送设备纳管请求。控制中心在确认该设备纳管请求合法后,便可以生成边缘设备的编排任务,并将该编排任务下发至对应的边缘设备集群。边缘设备集群在执行了该编排任务后,便可以向控制中心反馈编排完成通知。这样,控制中心便可以针对设备纳管请求,向管理平台反馈纳管请求结果,该纳管请求结果中可以包括用于接纳边缘设备的边缘设备集群的集群标识。管理平台可以将集群标识提供给边缘设备。后续,边缘设备便可以与集群标识指向的边缘设备集群建立websocket连接,从而加入该边缘设备集群。这样,便可以完成新启用的边缘设备的纳管流程。

在现有技术中,cdn节点的资源带宽基本都是向运营商购买,购买的边缘节点带宽资源都有其对应上限和单价。而现有的kubernetes中,默认的调度基本是考虑cpu和内存是否达到上限,很少出于带宽成本进行考虑,未最大化地利用带宽资源。也就是说,在现有技术中,如果某个边缘节点的cpu和内存没有达到上限的话,那么会优先地向该边缘节点调度容器。然而,在容器调度过程中,该边缘节点的带宽资源会不断地被占用,而其它边缘节点的带宽资源可能会处于闲置状态。通常而言,某一台边缘节点上的带宽资源占用越多,对应的带宽单价也可能会越高,那么在某一台边缘节点上占用较多的带宽资源,而其它边缘节点上的带宽资源处于闲置状态,会提高整体带宽资源的成本。在一些场景下,如果调度的边缘节点的带宽上限超过了线路带宽,会影响服务的质量。鉴于此,在本申请中,可以将各个边缘节点的带宽资源作为容器调度过程中的一项参考依据,从而尽可能地利用每一台边缘节点的带宽资源,进而降低整体的带宽成本。此外,kubernetes在进行调度时,也没有考虑磁盘的输入输出(io)情况资源,不同的边缘设备的io资源通常不一样,而cdn中多为缓存类型业务,io资源很大程度上影响了业务的带宽。另外,kubernetes多为无状态调度,但是cdn中主要是缓存类型业务,调度时需要考虑历史缓存状态,尽最大可能复用缓存,以此提高带宽利用率效率。

出于对上述问题的改进,请参阅图2和图3,本申请一个实施方式提供的基于边缘计算的调度方法,可以应用于上述的边缘设备集群中,该边缘设备集群可以是基于kubernetes(k8s)的集群,该方法可以包括以下多个步骤。

s1:接收控制中心发来的编排任务,并创建与所述编排任务相匹配的容器。

如图2所示,边缘设备集群中可以包括服务接口(apiserver)、存储单元(etcd)、控制器(controlmanager)、调度器(scheduler)以及调度接口(cloudcore)。控制中心(pontus)下发的编排任务可以被服务接口接收,服务接口可以将接收到的编排任务写入存储单元中。控制器可以对存储单元进行监听,当监听到存储单元中出现新写入的编排任务时,控制器可以解析该编排任务,并可以创建与该编排任务相匹配的一个或者多个容器。调度器可以对边缘设备集群中的容器进行管理,当检测到被创建的容器时,由于这部分容器未被调度,因此调度器可以检测当前边缘设备集群中各个边缘设备的设备信息,并基于检测到的设备信息,从各个边缘设备中筛选出适配于容器的目标边缘设备。

s3:检测各个所述边缘设备的设备信息,并基于所述设备信息,从各个所述边缘设备中筛选出适配于所述容器的目标边缘设备。

在实际应用中,边缘设备的设备信息可以包括多种参数。例如,设备信息可以包括边缘设备的cpu资源、内存资源,边缘设备的设备名称,边缘设备的端口信息,边缘设备中的硬盘信息(硬盘的卷信息、可用域标签等),边缘设备的污点信息(taint)等等。此外,在本申请中,为了让容器能够更好地与边缘设备相兼容,可以将边缘设备的拨号线路、边缘设备的带宽资源、边缘设备的设备类型也作为待考量的参数,加入至边缘设备的设备信息中。后续,根据实际的调度需求,可以选择设备信息中的一个或者多个参数进行分析,从而确定出与容器的兼容性较好的边缘设备。

在一个实施方式中,容器是基于用户设定的服务参数配置信息创建的,因此该服务参数配置信息便可以精确地描述一个容器的需求。为了从众多的边缘设备中查询到与容器适配性较好的边缘设备,可以将容器的服务参数配置信息与边缘设备的设备信息进行比对,从而可以确定出符合该服务参数配置信息的边缘设备。容器的服务参数配置信息,除了包含前文所述的多个参数,还可以包括以下的一种或者多种参数:容器所需的cpu资源和内存资源;容器指定的宿主机的名称;容器申请的宿主机的端口;容器指定的调度节点;容器对应的可用域标签;容器的容忍字段;容器的亲和与互斥关系;容器申请的带宽量;容器对应的业务类型。在实际应用中,可以针对每种参数,从以下多个角度来检测边缘设备是否能够作为容器的调度节点:

a.podfitsresources(容器所需的cpu资源和内存资源)

podfitsresources检查的是容器的requests字段,在该字段中,可以注明容器所需的最低cpu资源和最低内存资源,通过比对该参数,可以判断边缘设备的cpu资源和内存资源是否够用。

b.podfitshost(容器指定的宿主机的名称)

该参数可以通过容器的spec.nodename来限定,通过识别该参数,可以判断边缘设备的名称是否与容器指定的宿主机的名称一致。

c.podfitshostports(容器申请的宿主机的端口)

该参数可以通过容器的spec.nodeport来限定,通过识别该参数,可以判断容器申请的宿主机的端口是不是跟边缘设备已经被使用的端口有冲突。

d.podmatchnodeselector(容器指定的调度节点)

容器可以通过nodeselector或者nodeaffinity来指定调度节点,通过识别该参数,可以判断边缘设备是否为容器指定的调度节点。

e.nodiskconflict(硬盘冲突检测)

通过识别该参数,可以判断多个容器声明挂载的持久化卷(volume)是否有冲突。

f.maxpdvolumecountpredicate(持久化卷的上限检测)

通过识别该参数,可以判断是边缘设备上某种类型的持久化volume是否已经超过了一定数目,如果是的话,那么声明使用这种类型的持久化volume的容器就不能再调度到这个边缘设备上了。

g.volumezonepredicate(容器对应的可用域标签)

通过识别该参数,可以判断容器限定的volume的可用域标签,是否与边缘设备的可用域标签相匹配。

h.podtoleratesnodetaints(容器的容忍字段)

通过识别该参数,可以判断容器的容忍(toleration)字段是否与边缘设备的污点(taint)相匹配。如果容器的容忍字段中表明了能够容忍边缘设备的污点,那么该容器才能被调度到该边缘设备上。

i.nodememorypressurepredicate(内存压力检测)

通过识别该参数,可以判断当前边缘设备的内存是否充足,如果不充足,那么容器就不能被调度到该边缘设备上。

j.podaffinitypredicate和podantiaffinity(容器的亲和与互斥关系)

通过识别该参数,可以判断当前边缘设备中是否存在与容器相亲和或者相排斥的其它容器。

除了以上的检测,在本申请中还可以对边缘设备的拨号线路、带宽资源以及设备类型进行检测,具体地:

1.线路拨号检测

根据线路独占算法,相同业务类型的容器需要分散部署在不同的线路上,并且若一个线路被占用了,则其它容器就不能再调度到该线路上。

2.带宽资源检测

根据容器申请的带宽量,可以在同一个边缘设备的多个拨号线路上,以堆叠的方式分配带宽资源。具体地,堆叠的方式可以表示:当一条线路的带宽被完全分配完毕后,才会进行第二条线路的带宽分配,并且带宽分配完毕后会形成预占带宽,除非容器被控制中心删除,否则其它容器不可以抢占该容器的预占带宽。

3.设备类型检测

设备类型可以包括架构类型、网络类型、存储类型等,根据设备类型的不同,支持的业务类型也是不一样的,而容器通常是与业务类型相对应的。因此,可以根据设备类型区分部署不同业务类型的容器。

由上可见,在确定符合服务参数配置信息的边缘设备时,可以检测边缘设备的线路信息,以确保相同业务类型的容器被部署于不同的线路上,并且若当前的线路被一个容器占用,其它容器无法被调度至所述当前的线路上。此外,当确定出与容器相适配的目标边缘设备后,可以根据容器申请的带宽量,在目标边缘设备的第一线路中为容器分配对应的预占带宽,其中,预占带宽无法被其它容器占用,并且在第一线路的带宽被完全分配完毕后,才会对第二线路的带宽进行分配。

在一个实施方式中,由于符合服务参数配置信息的边缘设备可能数量较多,那么可以针对这部分边缘设备,可以基于预设优选规则,为这部分边缘设备计算各自的评分值,并将评分值最高的边缘设备作为适配于容器的目标边缘设备。在实际应用中该预设优选规则可以有以下多种实现方式:

1.计算边缘设备中空闲的cpu资源比例和空闲的内存资源比例,然后基于空闲的资源比例进行评分,空闲的资源越多,评分值越高。

2.识别边缘设备中cpu资源的使用占比、内存资源的使用占比以及硬盘资源的使用占比,然后计算这些占比的方差,并基于方差进行评分,方差越大,评分值越低。

此外,在按照上述的方式进行评分时,还可以遵循以下的规则:

满足边缘设备的亲和性规则的字段数目越多,边缘设备的得分就会越高;

满足污点容忍规则的字段数目越多,边缘设备的得分就会越高

满足待调度的容器的亲和性规则的字段数目越多,边缘设备的得分就会越高;

如果待调度的容器需要使用的镜像很大,并且该镜像已经存在于某个边缘设备上,那么该边缘设备的得分就会比较高;

基于待调度的容器所指定的线路类型,为边缘设备的各条拨号线路进行评分,如果类型一致的拨号线路越多,那么评分越高。

通过上述的方式,可以为每个边缘设备计算出对应的评分值,评分值最高的边缘设备便可以作为适配于容器的目标边缘设备。

s5:将所述容器调度至所述目标边缘设备处,并将所述容器与所述目标边缘设备相绑定,以在所述目标边缘设备中建立所述容器与对应缓存之间的映射关系。

在本实施方式中,调度器在筛选出目标边缘设备后,可以将容器调度至目标边缘设备处,并可以将该容器与目标边缘设备相绑定。在得到调度结果后,服务接口可以在存储单元中更新该容器的调度结果,从而可以将该容器使用的资源从边缘设备集群中扣除,比避免资源的重复分配。此外,调度接口(cloudcore)可以监听存储单元中的调度结果,在监听到存储单元中更新了调度结果后,可以解析该调度结果,并向该调度结果指向的目标边缘设备下发容器编排指令。这样,目标边缘设备在接收到容器编排指令后,就可以在本地部署对应的容器,并而已建立该容器与对应缓存之间的映射关系。

目标边缘设备在完成容器部署后,就可以通过上报接口(edgecore)向调度接口汇报部署结果。调度接口接收到目标边缘设备上报的部署结果后,可以基于该部署结果,通过调用服务接口(apiserver),在存储单元中更新容器的部署状态。这样,便可以完成容器的调度和部署过程。

在本申请中,考虑到cdn中的业务多为缓存类型业务,在对容器调度时,为了提高带宽利用率和服务效果,需要尽可能考虑历史的缓存状态,最好能够复用已存在的缓存。正是基于该目的,容器一旦成功调度到某个边缘设备后,会将容器与边缘设备的存储(硬盘资源、缓存资源)、带宽资源及边缘设备本身建立映射关系。后续,除非释放该映射关系,否则该容器只会运行调度到该映射关系限定的边缘设备处,且使用映射关系限定的线路、带宽以及存储资源。

在一个实施方式中,若边缘设备集群与控制中心的通信中断,在恢复通信之后,可以根据建立的映射关系,将容器依然调度至目标边缘设备处,从而使得容器能够继续使用映射关系限定的缓存。

在本申请中,在将容器与目标边缘设备进行绑定时,可以根据目标边缘设备的拨号线路、带宽资源,为容器分配线路,并且可以预占线路上的部分带宽。此外,根据均摊算法,可以在目标边缘设备中为容器筛选出最优硬盘,并将容器的数据写入最优硬盘中,并建立容器与最优硬盘的绑定关系,该绑定关系可以持久化到边缘设备集群。这样,在创建容器时,边缘设备集群便可以对容器的硬盘资源、网络资源进行绑定。同时,如果是第一次调度成功,会持久化容器和边缘设备的绑定关系,保证容器的状态数据不丢失,从而能够更好地提供缓存类型的业务。

如图3所示,本申请一个实施方式还提供一种边缘设备集群,所述边缘设备集群中包括纳管的多个边缘设备,所述边缘设备集群中还包括服务接口、存储单元、控制器和调度器,其中:

所述服务接口,用于接收控制中心发来的编排任务,并将所述编排任务写入所述存储单元中;

所述控制器,用于监听所述存储单元中写入的编排任务,并创建与所述编排任务相匹配的容器;

所述调度器,用于检测各个所述边缘设备的设备信息,并基于所述设备信息,从各个所述边缘设备中筛选出适配于所述容器的目标边缘设备;将所述容器调度至所述目标边缘设备处,以将所述容器与所述目标边缘设备相绑定。

在一个实施方式中,所述服务接口还用于在所述容器被调度至所述目标边缘设备处后,在所述存储单元中更新所述容器的调度结果,以将所述容器使用的资源从所述边缘设备集群中扣除。

在一个实施方式中,所述边缘设备集群中还包括调度接口,所述调度接口用于监听所述存储单元中更新的调度结果,并向所述调度结果指向的目标边缘设备下发容器编排指令,以在所述目标边缘设备中部署所述容器,并在所述目标边缘设备中建立所述容器与对应缓存之间的映射关系。

在一个实施方式中,所述调度接口还用于接收所述目标边缘设备上报的部署结果,并基于所述部署结果调用所述服务接口,以在所述存储单元中更新所述容器的部署状态。

由上可见,本申请一个或者多个实施方式提供的技术方案,控制中心可以接收用户的容器部署需求,然后生成对应的编排任务,该编排任务可以下发至边缘设备集群中。边缘设备集群针对接收到的编排任务,可以创建符合用户预期的一个或者多个容器。然后,通过对各个边缘设备的设备信息进行分析,从而可以筛选出适配于容器的目标边缘设备。在将容器调度至目标边缘设备后,可以将该容器与目标边缘设备相绑定,并可以建立容器与对应缓存之间的映射关系。这样,由于cdn中的业务通常是缓存类型的业务,那么在调度容器时,可以优先考虑与容器绑定的缓存,从而能够复用边缘设备中的缓存,不仅能够提高边缘设备的带宽利用率,还能够提高容器的部署效率和服务效率,使得部署的容器与cdn业务更加兼容。

本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,针对边缘服务集群的实施方式来说,均可以参照前述方法的实施方式的介绍对照解释。

本领域内的技术人员应明白,本发明的实施方式可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施方式、完全软件实施方式、或结合软件和硬件方面的实施方式的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于硬盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施方式的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的实施方式而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1