KubeEdge这个架构主要是分了云、边、端三部分
云上就是KubeEdge的控制面,边就是KubeEdge的边缘节点
端就是跑了一些端侧设备
云上是一个Kubernetes的master,是没有做过改动的原生的Kubernetes控制面
后边我们加了一个组件叫CloudCore
它云上的组件主要是会拿一些Kubernetes控制面上的东西
通过EdgeController和DeviceController做一些处理,然后通过下边的CloudHub
CloudHub主要是跟边端通信的
边端有个EdgeHub和Cloud Hub通信,然后把数据拿下来
边端是主要做了一个应用管理和设备管理的能力
应用管理左边会有一个Edged
右边有DeviceTwin、EventBus
分别是应用管理和设备管理
DataStore就是我们说的本地自治的能力
组件介绍:
CloudHub
CloudHub是cloudcore 的一个模块,是Controller(EdgeController和DeviceController)和Edge端之间的中介
它同时支持基于web-socket 的连接以及QUIC协议访问。
EdgeHub可以选择其中一种协议来访问CloudHub。CloudHub 的功能是实现边缘和控制器之间的通信。
边缘的连接(通过EdgeHub模块)是通过websocket连接上的 HTTP 完成的。
对于内部通信,它直接与控制器通信。
发送到CloudHub的所有请求都是context对象的请求,该对象与标记为其nodeID的事件对象的映射通道一起存储。
CloudHub执行的主要功能
获取消息context并为事件创建ChannelQ
通过websocket创建http连接
服务websocket连接
从边缘节点读取消息
将消息写入边缘节点
向Controller发布消息
DeviceController(设备控制器)
DeviceController是 KubeEdge 的云组件,负责设备管理。
KubeEdge 中的设备管理是通过使用 Kubernetes 自定义资源定义 (CRD)来描述设备元数据/状态和设备控制器来在边缘和云之间同步这些设备更新来实现的。
DeviceController启动两个独立的 goroutines,称为upstream controller和downstream controller。
DeviceController利用设备模型和设备实例来实现设备管理
设备模型:Device model描述设备和属性访问者公开的设备属性以访问这些属性。设备模型就像一个可重复使用的模板,使用它可以创建和管理许多设备。
设备实例:一个Device instance代表一个实际的设备对象。它就像一个实例化Device model并引用模型中定义的属性。
DeviceController主要功能
upstream controller
通过device twin将设备更新从边缘节点同步到云端。
downstream controller
通过在 K8S API 从云端更新边缘节点上的设备属性。
EdgeHub
EdgeHub负责与云中端的CloudHub组件进行交互。它使用 websocket 连接或使用QUIC协议连接到CloudHub。支持同步云端资源更新、报告边缘端主机和设备状态变化等功能。
EdgeHub 执行的主要功能
Keep Alive
发布客户信息
边端路由到云端
云端路由到边缘
DeviceTwin (设备孪生)
DeviceTwin 模块负责存储设备状态、处理设备属性、处理DeviceTwin操作、在边缘设备和边缘节点之间创建成员、将设备状态同步到云端以及在边端节点和云之间同步DeviceTwin信息。
它还为应用程序提供查询接口。DeviceTwin由四个子模块(即成员模块、通信模块、设备模块和设备孪生模块)组成。
以下是设备双控制器执行的功能:
将元数据同步到db(Sqlite )和从db(Sqlite )中获取数据
注册和启动子模块
向子模块分发消息
健康检查