编辑推荐: |
本文主要介绍了解读KubeEdge
v0.3的核心特性:边缘设备管理、一键安装部署工具、端到端性能测试框架,以及21处问题修复。
本文来自于OSCHINA,由火龙果软件Linda编辑推荐。 |
|
项目的地址(欢迎Star、Folk,各种Issue、PR):
北京时间5月29日,KubeEdge发布了第三个特性版本v0.3.0。
本次发布的新版本包含了边缘设备管理、一键安装部署工具、端到端性能测试框架,以及21处问题修复。作为v0.3版本的关键新特性,边缘设备管理能力的引入使得KubeEdge可以完整打通各类云、边、设备协同的场景;KubeEdge
installer的加入大大简化了安装部署一套完整KubeEdge集群的难度;端到端性能测试框架的实现则为后续的规模测试及性能优化工作奠定了基础。
接下来本文将逐一解读KubeEdge v0.3的核心特性。
边缘设备管理
在介绍KubeEdge的边缘设备管理能力之前,先简单了解下KubeEdge边缘设备管理与Kubernetes设备插件的区别。
Kubernetes提供的设备插件(device plugin)框架, 旨在通过Kubelet管理“绑定”在节点上的硬件(加速器),例如:GPU、FPGAs、InfiniBand等,为Pod中的容器应用提供更强的计算和网络性能。而KubeEdge的设备管理关注的是与边缘通信的外部设备,例如:蓝牙终端、智能传感器、工业网关等,这部分功能由KubeEdge开发的edge_core负责。
边缘设备状态管理operator
KubeEdge的设备管理采用的是Kubernetes官方推荐的Operator方式,并实现了设备孪生(device
twin)。设备管理Operator的核心是Device CRD和Device Controller,其中Device
CRD用来描述设备的状态等元数据,Device Controller运行在云上,负责在云和边之间同步设备状态的更新(包括设备实际状态和用户设定的期望状态)。
KubeEdge设备管理的工作流程如下图所示:
边缘设备驱动统一接入接口:Mapper
Device Controller会把用户设定的设备孪生期望状态和配置下发到边缘,而在边缘的组件则要接收并处理这些信息。为了避免edge_core引入量处理边缘设备通信的代码,同时保持整个项目良好的易定制性,KubeEdge设计了一个边缘设备驱动统一管理引擎Mapper。
Mapper之于KubeEdge的作用如同CRI之于Kubernetes,只是CRI作为Kubernetes定义的容器接口与底层容器引擎打交道,而Mapper作为一个开放接口方便不同的设备协议接入KubeEdge这个边缘计算平台。
KubeEdge v0.3中内置支持的设备协议是蓝牙,后续版本将逐步增加对OPC-UA和Modbus的支持。有了Mapper的解耦层,用户可以方便地根据实际需要开发自己的Mapper来实现与特定设备的通信,同时社区也欢迎广大开发者贡献更多的协议实现。
Mapper的架构如下图所示:
具体的Mapper实现,例如Bluetooth Mapper,通过订阅MQTT broker的消息获得用户从云端下发的设备期望状态,然后通过设备驱动程序控制设备的开、关等动作。
Bluetooth Mapper除了能够响应云端设备状态更新,还能从蓝牙设备接收数据并将原始数据转换成应用程序能够直接使用的数据发布给MQTT
broker。这样运行在边缘节点上的应用程序只需订阅MQTT broker的相应消息topic便可获得经过处理的设备数据。
未来,KubeEdge还将引入data management框架统一处理边缘侧收集的数据。
一键部署工具KubeEdge installer
KubeEdge v0.3发布了一键部署工具KubeEdge installer,彻底代替了之前的安装脚本,降低了用户安装和管理KubeEdge集群生命周期的难度。KubeEdge
installer分为cloud和edge两类子命令,分别对应于云端管理面和边缘节点的管理。
当前实现的云上节点命令有:
# kubeedge init:初始化一个KubeEdge管理面,包括安装一个Kubernetes集群和edge-controller。
# kubeedge reset:Kubeedge init的逆操作。
当前实现的边缘节点命令有:
# kubeedge join: 初始化一个KubeEdge节点并加入到KubeEdge管理面。
# kubeedge reset: KubeEdge join的逆操作。
端到端性能测试框架
KubeEdge支持管理海量的边https://kubeedge.io缘节点和设备,v0.3发布的端到端性能测试框架能够用于准确地发现系统的时延、吞吐、资源消耗等性能瓶颈。
性能测试部署如下图所示:
当准备进行性能测试时,测试客户端通过向云端的Kubernetes master下发测试负载,包括:Job、Deployment、Device
CRD等,同时通过观测KubeEdge集群返回的Event计算系统的时延、吞吐率、CPU/内存使用等性能数据。
随着v0.3版本的发布,KubeEdge提供了完成打通云、边缘、设备三者协同的最小功能集,后续版本将提供边缘站点(EdgeSite)、云-边/边-边通信(EdgeMesh)等高级特性。
|