边缘计算那些事儿-kubeedge edged解读

0 背景

        从上一次解读kubeedge的MetaManager到现在已经过去了几个月,最近这几个月笔者忙于一件大事就停更了一段时间,现在得空,再继续这个主题。本文是kubeedge中最为核心的一个模块edged,这个模块可以说是整个kubeedge的灵魂,它提供了云端应用卸载到边缘侧的一套架构和平台,能够真正体现kubeedge的云边协同能力,这也是边缘计算平台一个非常重要的能力。云边协同的能力可以承载多种业务,比如说智能边缘场景,智能算法大模型可以在云端进行训练,然后通过剪枝,知识蒸馏等算法压缩成小模型卸载到edged上,智能终端就可以就近在edged上进行推理,对于实时性要求高的应用都可以在edged上处理,edged模块为这种云边协同提供了实时更新,同步数据处理模型的能力。edged是如何实现这种云边协同能力的,这里边核心的是将k8s的特性部分卸载到了edged,使得edged具备了管理和编排pod的能力。接下来本文将详述edged的架构、上下文、主流程和数据在模型的处理过程,以及模型的更新过程。

1 edged架构

        与前面的论述思路一样,我们首先来看edged的架构。从edged的代码文件和文件夹可以看到其架构比较简单,只包含config,kubeclientbridge和edged三个部分,分别是配置文件,kube客户端和edged的主程序入口。映射到右边的框图,从上到下依次是主入口,kube客户端和k8s服务器。主入口主要实现了edged模块与MetaManager等模块的交互,接收来自云端的消息,然后对其进行解析调用kube客户端的接口实现云边同步和协同。kube客户端主要实现计算和存储资源在边缘的创建,更新和删除等,这些计算资源和存储资源分别以pod和卷的形式存在,能够灵活地在云边之间,边边之间进行资源的调度和分配。kube客户端是从边缘侧的k8s服务器上创建的,该服务器原本被部署在云端,通过裁剪和压缩被卸载到边缘侧,让边缘侧具备了和云端一样的管理、编排应用程序的能力,在卸载的实现方式上来看属于将云端模型下放到边缘侧,好处是可以让应用在云端还是边缘端都可以灵活部署,运行,并实时更新部署环境。

O9qpUxsGOYKaei+t0REgQIBAMwT+P0jkvxZojtJAAAAAAElFTkSuQmCC

        上图的最右边是kube客户端包含的文件,从其文件的命名上也能看出kube客户端实现的三个核心功能。第一个核心功能是协作,即实现云边之间的协同。第二个核心功能主要是对node/pod和卷等资源进行管理,包括增删改查等功能,实现云边之间计算模型的卸载。第三个核心功能主要针对卷挂载等存储类的资源,实现云边之间存储资源的卸载。有了计算和存储这两类资源搭建了应用程序就近处理的基础,作为使用者不必关心这些资源的部署和管理,只要确定数据是选择在边缘处理还是云端处理即可。

2 edged上下文

        了解了上述edged的内部实现架构,接下来我们看一下这个模块是如何进行上下文交互的。如下图所示是edged在kubeedge中的位置,从图中可以看出与edged模块关系紧密的是MetaManager模块,来自云端的消息都是经过MetaManager进行转换,然后再交给edged模块处理,edged模块负责对边缘侧的卷和pod进行管理和控制。假设我们在一个边缘网关设备上引入了kubeedge,那该边缘网关就相当于k8s中的一个node节点,在node节点里可以包含多个pod,每个pod就可以承载一个应用程序或者微服务,pod的实现在kubeedge中可以用docker,容器或者CRI-O技术,pod之间的通信可以直接使用部署在kubeedge中的kubelet,作为应用开发者不需要关心pod的管理和维护过程,也不需要关心如何通信,这些都由edged完成了,只需要专注于业务开发即可。

nsyqD6QjQeUAAAAASUVORK5CYII=

3 edged主流程

        在了解了上述edged的整体架构和交互的上下文模块以后,接下来我们看一下这个模块内部是如何实现的。首先edged是基于K8S实现的,可以理解为k8s的一个node节点,edged注册到edgecore上,而edgecore通过kubelet实现与k8s的通信,edged负责管理pod、卷和容器。

        如下图所示,当云端的pod节点发生变化的时候,通过MetaManager将更新的pod信息通知到edged模块,edged模块就会更新pod。当边缘侧设备离线时,相应的pod节点依然可以正常工作,只不过不是以当前云端最新的pod执行,这保障了终端应用在边缘侧的业务连续性,直到边缘设备重新上线,pod被更新,就可以用当前最新的模型计算。除了计算资源,存储资源在边缘设备上也十分重要。存储资源除了物理的存储设备外,在逻辑上通过卷的方式表示。edged模块同样提供了卷的控制、删除和发布方式,与pod的管理类似,卷可以在云端和边缘端设备之间迁移,当边缘设备离线时,卷可以仍然存在,为应用提供存储服务,当设备在线后再跟随pod新的需求,进行更新。

AHbzI689cwCuAAAAAElFTkSuQmCC

        云端和边缘设备的pod是如何同步的呢?如下图所示,云端的pod被卸载到边缘设备上,通过edged进行管理,当边缘设备上的pod应用程序发生了变化,edged会将更改的部分同步到云端,这是利用了k8s对pod的管理和维护功能。当云端的pod应用程序发生变化的时候,就可以通过edged模块对边缘侧pod进行更新。如果是另外的一个边缘设备也可以用这套平台实现pod的跨边缘设备的迁移,更新。1fd8bccc85944ccaa6ee43a1e1e29bd5.png

4 edged边缘计算应用

        截止到这里,我们简单地将kubeedge中两个比较核心的模块edged和devicetwin结合起来,看一下边缘计算是如何实现的。边缘计算的核心要点之一就是在靠近用户的一侧处理数据,处理数据的模型可以来自于云端的卸载,而我们的kubeedge可以很好地满足这两个需求。

vLq6er3zFkwrvXI7tuOOQLz2iKD7wrOPG4vmq4MAAQIE+kxAoNxnA667BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKCsgUC4rpRwBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT6TECg3GcDrrsECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoKyBQLiulHAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPpMQKDcZwOuuwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECgrIFAuK6UcAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE+kxAoNxnA667BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKCsgUC4rpRwBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT6TECg3GcDrrsECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoKyBQLiulHAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPpMQKDcZwOuuwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECgrIFAuK6UcAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE+kxAoNxnA667BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKCsgUC4rpRwBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT6TECg3GcDrrsECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoKyBQLiulHAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPpMQKDcZwOuuwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECgrIFAuK6UcAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE+kxAoNxnA667BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKCsgUC4rpRwBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT6TECg3GcDrrsECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoKyBQLiulHAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPpMQKDcZwOuuwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECgrIFAuK6UcAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE+kxAoNxnA667BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKCsgUC4rpRwBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT6TECg3GcDrrsECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoKyBQLiulHAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPpMQKDcZwOuuwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECgrIFAuK6UcAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE+kxAoNxnA667BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKCsgUC4rpRwBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT6TECg3GcDrrsECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAoKyBQLiulHAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPpMQKDcZwOuuwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECgr8L8BKeYSWLB2qtYAAAAASUVORK5CYII=

        如上图所示,数据的来源是设备,devicetwin模块,负责对数据进行采集,对设备进行管理,采集的设备数据可以被继续上送到云端,或者是放到边缘设备的datastore中。接下来就可以被edged管理的pod进行处理,我们的edged模块打通了云端和边缘端的docker的迁移和管理,同时提供卷的管理。在数据的缓存方面则可以存到边缘侧的datastore,选用的存储设备的大小则可以由用户根据具体的应用场景定制。

        kubeedge提供了云边端协同处理数据的平台,让应用开发者不必关心通道和资源的维护和管理,可以专注于应用的开发。但是边缘计算的实现除了需要这样一种云边协同的平台,还需要解决如何卸载,卸载什么,什么时候卸载,卸载到哪里的问题;资源如何跨平台分配和调度的问题,这一部分主要是边缘操作系统的范畴;数据处理的模型是来自云端的裁剪还是在本地边缘设备生成的问题;还有相关的边缘智能芯片,边缘存储,边缘架构,边缘算法,边缘开发库等。后续笔者将会深入讨论。

5 小结

        kubeedge这个平台比较核心的模块基本已经梳理完成,下一步我们将转向北向与云端交互的edgehub进行解读,看一下这条云边的通道是如何打通的,敬请期待。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值