KubeEdge云边协同设计原理

云端组件CloudCore与k8s Master的关系

KubeEdge云边协同设计原理

 

从黑盒角度看,CloudCore就是k8s的一个插件,它是非侵入的来扩展k8s的一部分功能,将原来云上的节点映射到边缘端进行管理,一个CloudCore可以管理多个边缘节点。

CloudCore里面有EdgeController、DeviceController、CSI Driver、Admission Webhook以及CloudHub这些组件。

 

EdgeController详解

KubeEdge云边协同设计原理

 

upstream处理上行数据(与原生k8s中kubelet上报自身信息一致,这里主要上报边缘节点node状态和pod状态);downstream处理下行数据。云边协同采用的是在websocket之上封装了一层消息,而且不会全量的同步数据,只会同步和本节点最相关最需要的数据,边缘节点故障重启后也不会re-list,因为边缘采用了持久化存储,直接从本地恢复。本地数据怎么实时保持最新?就是通过downstream不断从云上发生变更的相关数据往边缘去同步。

kubernetes中拉起应用的过程

KubeEdge云边协同设计原理

 

workload controller是k8s中管理各种应用类型的控制器,管理各种应用的生命周期,以goroutine方式运行在controller manager中,是k8s原生的组件。

  0. workload controllers(这里用deployment controller举例) 会watch所有deployment对象,scheduler主要watch未分配节点的pod对象,kubelet watch的过滤条件是调度到本节点的pod

通过命令行创建一个Deployment

api server就会做对应的存储(所有集群状态的查询都是通过api server与etcd的交互进行的)

etcd会有一个反馈给api server

api server会把这个事件反馈给订阅了这个事件的组件,比如deployment相关事件会反馈给deployment controller组件

deployment controller watch到变化后,根据定义文件去发出创建相应pod事件

api server修改etcd中pod的信息

etcd接着反馈给api server资源变更事件

api server把pod create事件反馈给scheduler

scheduler会根据它加载的调度策略在集群中找到一个合适节点 ,更新pod字段信息

api server修改etcd中pod信息

etcd返回给api server pod Bound(update)事件

订阅相关node name pod的kubelet就会收到事件通知,然后执行拉起动作

图中黄色框就是kubeedge中通过CloudCore加边缘节点组件做等价替换的范围。

KubeEdge拉起边缘应用

KubeEdge云边协同设计原理

前面部分都一样,系统起来的时候,CloudCore里面的EdgeController会watch很多资源,对于pod来说,它会watch所有pod,但它里面会有一个过滤,但是过滤不会反映在list-watch上, 只在内部做下发的时候处理。

  12. CloudCore收到pod变更通知后,会在内部循环中做条件的判断,看pod中的nodeName字段是不是在它所管理的边缘节点范围。如果是,它会做一个事件的封装发送到CloudHub中去

  13. CloudHub对事件做完消息的封装和编码后会通过websocket通道发送到每个边缘的节点,边缘节点的EdgeHub收到消息后解开去查看pod的信息,然后发送到MetaManager组件

  14. MetaManager会把收到的pod进行本地持久化

  15. MetaManager在把pod信息发送到Edged(轻量化的kubelet),去拉起应用  

 

Device CRD和DeviceController的设计

这个完全是一个operator的典型设计和实现,有一个自定义的API对象以及有一个相应的自定义controller去管理该对象的生命周期。

DeviceModel设备模版抽象

关于设备的API有两个:DeviceModel(来定义一种型号的设备),另一个是Device设备实例的API,这两个的关系就像是类和对象的关系。

KubeEdge云边协同设计原理

 

 DeviceInstance设备实例的定义

KubeEdge云边协同设计原理

 

  DeviceController

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzwfd.html