KubeEdge之设备管理:如何在云端点亮您家的灯
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
边缘计算与KubeEdge
云计算离终端设备(如摄像头、传感器等)较远,对于实时性要求高的计算需求,把计算放在云上会引起较长的网络延时、网络拥塞、服务质量下降等问题。而终端设备通常计算能力不足,无法与云端相比。在此情况下,边缘计算应运而生,将云端计算能力延伸到靠近终端设备的边缘节点,完美解决上述问题。
KubeEdge作为全球首个Kubernetes原生的开源边缘计算平台,依托Kubernetes的容器编排和调度能力,通过纳管用户的边缘节点,提供将云上应用延伸到边缘的能力,联动边缘侧和云端的数据,满足客户对边缘计算资源的远程管控、数据处理、分析决策、智能化的诉求。同时,在云端提供统一的设备/应用监控、日志采集等运维能力,为企业提供完整的边云协同一体化服务的边缘计算解决方案。
本文将介绍KubeEdge是如何在云端管理边缘侧的设备的,例如:用户只需在按下手机上app的一个按钮,就能打开自己家中的电灯。
设备孪生与KubeEdge设备管理
说到IoT设备,不得不提到一个概念叫做设备孪生Device Twin。设备孪生作为一种IoT设备元数据在应用平台上的虚拟映射,已经成为IoT设备管理的重要组成部分。IoT设备通常包含两类数据:一是不会改变的元数据,包括序列号、资产标识符、Mac地址等描述设备的详细信息,也可以称为设备的静态属性。另一类是设备的动态数据,包括特定背景下的设备专有实时数据,例如灯的开、关状态,也可以称为设备的Twin属性。设备孪生具有与物理设备相同的特性,便于设备与应用之间进行更好地通信。应用发送的命令首先到达设备孪生,设备孪生根据应用设置的Expected State进行状态更新,此外IoT设备实时反馈自身的Actual State,设备孪生同时记录IoT设备的Actual State和Expected State 。这种方式也使IoT设备在离线状况下再次上线时,设备的状态也能得到同步。
设备管理也是边缘计算中IoT场景的关键功能。KubeEdge作为一个云端和边缘侧都开源的边缘计算平台,除了实现云端应用的配置和下发之外,另一个很重要的功能就是在云端管理IoT设备,并且实现云边之间的设备状态同步。
KubeEdge设备管理组件
KubeEdge设备管理相关的组件如下:
-
DeviceController:扩展的 Kubernetes 控制器,管理云端的设备信息以及云端与边缘侧设备的同步。
-
CloudHub:WebSocket 服务端,负责监听云端资源变化, 缓存并发送消息到 EdgeHub。
-
EdgeHub:WebSocket 客户端,包括同步云端资源更新、报告边缘节点和设备信息到云端等功能。
-
DeviceTwin:负责存储设备状态并将设备状态同步到云端。
-
EventBus:与 MQTT 服务器Mosquitto交互的客户端,为其他组件提供订阅和发布消息的功能。
-
Mapper:用于连接和控制端侧设备,例如开、关灯。
KubeEdge通过CRD(Customer Resource Definition)扩展Kubernetes的API,扩展的API资源包括:Device和DeviceModel等,这样我们能在云端通过Kubernetes命令行工具Kubectl或其他方式对设备资源进行CRUD的操作。Device资源映射与各个边缘节点关联的设备,例如传感器。DeviceModel则是对一类设备定义的模板,方便用户可以在云端依据DeviceModel模板轻易地完成对Device资源的批量操作。
使用KubeEdge点亮您家的灯
在云端点亮您家的灯,让我们来看看KubeEdge如何实现这件有趣的事情?一个设备孪生的参考示例如下所示:
这里就需要用到上面提到Device Twin。例如灯的元数据信息以Json的格式描述如上,包含静态属性attributes和动态属性twin。这里定义一个名为powerstatus的twin属性,它的expected值和actual值可以为ON或者OFF。设备自身可以上报powerstatus的actual值到云端,云端则可以通过修改为powerstatus属性的expected值来控制边缘侧灯的开、关。
首先我们看看如何上报灯的powerstatus的actual值到云端:
-
Mapper实时上报实际状态Actual State给MQTT服务器Mosquitto。
-
EventBus从Mosquitto收到订阅消息,消息内容包含设备的实际状态Actual State。
-
EventBus把设备实际状态Actual State发送给Device Twin。
-
Device Twin更新设备实际状态Actual State到边缘节点本地的轻量级数据库,例如SQLite。
-
Device Twin同步实际状态Actual State给WebSocket客户端EdgeHub。
-
EdgeHub发送消息给WebSocket服务端CloudHub。
-
CloudHub回馈消息给DeviceController。
-
DeviceController同步实际状态Actual State到Kubernetes API Server。
最后用户就能在云端查询设备的powerstatus的actual值,获取到边缘侧设备上的灯开、关的实际状态。
加入KubeEdge
设备管理毫无疑问是边缘计算IoT场景中十分关键的特性,目前KubeEdge的设备管理特性仍在开发之中,将会在0.3版本发布,敬请期待。
KubeEdge作为一个100%开源的项目,十分欢迎您的加入。KubeEdge Github项目地址:
https://github.com/kubeedge/kubeedge
- KubeEdge v0.3发布:把边缘设备管理能力带到Kubernetes
- 如何推广移动设备管理(MDM)更容易?
- Android中如何通过强制设备管理策略创建一个安全敏感的应用程序
- 如何通过硬件堡垒机管理网络设备
- Solaris Cluster如何使用非卷管理设备注册StoragePlus
- 如何才能有效的管理存储设备
- Android 是如何动态管理dev下的设备节点的
- 教你如何深度解析Windows7的设备驱动管理原理
- 软件升级---同类型设备如何管理
- 如何设计一个设备管理系统平台?-之 一 :背景概述
- 华为交换机模拟器为什么不能配置IP(或反)?如何在华为设备上配置远程管理设备?如何保存ENSP的配置
- 如何真机PC桥接小凡模拟器进行设备管理
- 如何设置华为交换机通过WEB管理设备
- docker/qemu中是如何对设备管理的
- linux设备驱动——一个驱动如何管理多个设备
- 如何做好设备管理
- 高效| 工厂如何做好设备管理工作?看这篇就够了!
- 旧电脑如何华丽变身专业上网行为管理设备!