KubeEdge是面向边缘计算场景、专为边云协同设计的云原生边缘计算框架。它在 Kubernetes 原生的容器编排调度能力之上,实现了边云之间的应用协同、资源协同、数据协同和设备协同等能力,完整打通了边缘计算中云、边、设备协同的场景。于 2020 年 9 月晋级为 CNCF 孵化级别的托管项目,具有广泛的应用前景和活跃的社区支持。2024年9月11日,KubeEdge从孵化阶段毕业,标志着其在云原生边缘计算领域得到了广泛认可和成熟发展。
一、技术特点
Kubernetes原生支持:100%兼容K8S API,用户可使用K8S API原语管理边缘节点和设备,能像在传统Kubernetes集群一样在边缘节点编排应用程序、管理设备并监视状态,便于将现有复杂的机器学习、图像识别等高级应用部署到边缘。
边缘自治能力:支持边缘离线自治,通过边缘元数据持久化、边缘DNS等保证边缘离线时业务运行和故障恢复能力。在网络中断时,利用本地缓存数据维持系统稳定运行,通信恢复后再重新同步数据。
轻量化设计:针对资源受限场景进行自身组件轻量化,如EdgeCore等组件内存占用小,~70MB内存占用,能在资源有限的边缘设备上高效运行。
支持多种通信协议:支持MQTT、Modbus、Bluetooth、OPC UA等多种边缘设备通信协议,还支持自定义插件扩展边缘设备协议,可满足不同类型边缘设备的通信需求。
优化的云边通信:采用双向多路复用的边云消息通道,支持边缘位于私有网络;应用层可靠增量同步机制,能在高时延、低质量网络环境下工作,确保云边之间高效、可靠的数据同步。
二、组成部分
KubeEdge框架的核心技术架构主要由云边协同、边缘计算、设备管理等模块组成,各模块相互协作,共同实现云原生边缘计算功能。
1.云边协同模块
云控制器(Cloud Controller):作为KubeEdge架构中的控制中心,通常运行在云端。它负责管理和协调整个边缘计算系统,包括与Kubernetes Master交互,接收和处理来自管理员的指令,如部署应用、管理资源等,并将相关指令和配置信息传递给边缘节点。
边缘控制器(Edge Controller):部署在边缘节点上,主要负责与云控制器进行通信,接收来自云控制器的指令和配置信息,并根据这些信息对本地的边缘计算资源和应用进行管理和控制。同时,它也会将边缘节点的状态信息反馈给云控制器,实现云边之间的双向通信和协同工作。
2.边缘计算模块
EdgeCore:是KubeEdge的核心组件之一,运行在边缘节点上。它提供了容器运行时环境、网络管理、存储管理等功能,类似于Kubernetes中的kubelet,负责在边缘节点上启动、运行和管理容器化应用。EdgeCore还支持边缘节点的自治能力,在与云端网络连接中断时,能够依靠本地缓存的配置和数据继续运行应用,并在网络恢复后自动与云端进行数据同步。
边缘网络(Edge Network):负责管理边缘节点之间以及边缘节点与云端之间的网络通信。它提供了多种网络策略和配置选项,以适应不同的网络环境和应用需求。例如,支持虚拟网络、服务发现、负载均衡等功能,确保边缘应用能够高效、可靠地进行网络通信。
边缘存储(Edge Storage):为边缘节点提供存储管理功能,支持多种存储类型,如本地存储、分布式存储等。它可以根据应用的需求,将数据存储在边缘节点本地或分布式存储系统中,以满足边缘应用对数据存储和访问的要求。同时,边缘存储还支持数据的缓存和同步机制,确保数据在云边之间的一致性和可用性。
3.设备管理模块
设备模型(Device Model):定义了边缘设备在KubeEdge中的表示方式和管理接口。通过设备模型,KubeEdge可以将各种不同类型的边缘设备抽象为统一的资源对象,方便进行管理和操作。每个设备模型定义了设备的属性、状态、操作方法等信息,使得应用可以通过标准的Kubernetes API来访问和控制边缘设备。
设备插件(Device Plugin):是连接边缘设备和KubeEdge系统的桥梁。它负责与具体的边缘设备进行通信,将设备的信息和状态报告给EdgeCore,并将来自EdgeCore的指令和操作转发给设备。设备插件通常是针对特定类型的设备或设备协议开发的,不同类型的设备需要相应的设备插件来实现与KubeEdge的集成。
设备控制器(Device Controller):运行在云端或边缘节点上,负责管理和协调边缘设备的生命周期。它通过与设备模型和设备插件进行交互,实现设备的注册、发现、连接、配置等功能。设备控制器还可以根据设备的状态和事件,触发相应的操作和策略,如设备故障处理、设备升级等。
此外,KubeEdge还包括安全模块,通过TLS加密、身份认证、访问控制等多种安全机制,保障云边通信、边缘节点和设备的安全。监控与日志模块则提供了对边缘计算系统的监控和日志记录功能,帮助管理员及时了解系统的运行状态和故障信息,以便进行故障排查和性能优化。
三、与云端网络连接中断时的自治
1.元数据持久化
KubeEdge将边缘节点的元数据存储在本地的轻量级数据库(如SQLite)中。当云边网络连接中断时,边缘节点可以从本地数据库中读取元数据,这些元数据包含了边缘节点的配置信息、设备状态、应用部署信息等,使得边缘节点能够在离线状态下继续运行应用和管理设备,而不会丢失关键信息。
2.消息总线机制
KubeEdge通过消息总线实现组件之间的通信。在正常网络状态下,边缘节点与云端之间的消息通过消息总线进行传递。当网络连接中断时,消息总线可以将部分重要消息暂存于本地,这些消息可以是设备状态更新、应用配置变更等信息。边缘节点上的组件可以从本地消息总线获取这些消息,以维持自身的运行状态,并且在网络恢复后,再将本地暂存的消息同步到云端。
3.边缘DNS
KubeEdge支持边缘DNS功能,为边缘节点上的应用和设备提供域名解析服务。在网络中断时,边缘DNS可以根据本地缓存的域名解析记录,为边缘应用提供域名解析服务,确保应用之间的通信能够正常进行,而无需依赖云端的DNS服务。
4.IP快照能力
原生CNI组件离线时无法完成IP分配,KubeEdge通过建设IP快照能力,对CNI返回结果增加IP快照信息。在网络正常时,调用ipam组件进行IP分配;离线时使用本地磁盘存储的IP快照信息,实现Pod IP在离线重启时保持不变,保障网络连接的稳定性。
5.边缘代理
增加边缘代理模块,通过http代理方式,代理系统组件请求,拦截请求数据并缓存在本地。在离线时,使用缓存数据对系统组件提供服务,提升系统组件离线自治能力。
四、不足之处
1.复杂度较高:基于Kubernetes并针对边缘计算场景做了大量功能扩展,要用好KubeEdge,不仅要懂Kubernetes,还需了解KubeEdge及边缘业务/边缘通信协议,入门学习曲线陡峭。
2.中文文档质量有待提高:存在版本更新后文档未更新、生硬机翻英文文档、组织结构不合理等问题,难以快速上手。
3.资源占用可控性问题:若仅安装基本组件,资源占用相对可控,但使用EdgeMesh、Sedna、边缘设备管理、Kubernetes的CSI CNI实现等功能时,需启用或安装相应插件,会导致资源占用上升。
4.自动化运维困难:相比其他一些方案,KubeEdge在一键式安装运维脚本或自动化部署/运维功能方面相对缺乏,自动化运维能力需要用户自行探索。
五、应用场景
1.智能交通:如自动驾驶场景中,可在车辆或路边基础设施上利用KubeEdge进行实时路况处理、交通信号控制等,减少云端计算压力和网络延迟,提高行车安全性和交通效率。
2.工业互联网:用于工业自动化中的实时监控和故障诊断,通过在边缘端部署相关应用和算法,对工业设备的运行数据进行实时分析和处理,及时发现故障隐患并采取措施,提高生产效率和设备可靠性。
3.智能城市:可应用于人脸识别门禁系统、智能路灯控制、环境监测等场景,在边缘端完成数据采集、处理和分析,实现智能化的城市管理和服务,提升城市居民的生活质量。
4.能源管理:在电力、石油、天然气等能源领域,KubeEdge可用于能源生产设备的远程监控、能源消耗的实时监测和优化等,帮助能源企业提高能源利用效率、降低运营成本。
5.智能安防:如视频监控、入侵检测等,在边缘端对监控视频进行分析和处理,实现异常行为的实时检测和报警,减少数据传输量,保护数据隐私。