KubeEdge是一个开源系统,旨在将容器化应用程序的编排功能扩展到边缘计算领域。以下是KubeEdge的核心技术解析:
1. **云边协同**:
- KubeEdge依托Kubernetes的容器编排和调度能力,实现云边协同、计算下沉和海量设备的平滑接入。
- 云边双向通信,能够与位于私有子网中的边缘节点通信,即使与云端断开连接,边缘也能自主运行。
2. **边缘自治**:
- 每个节点拥有持久化元数据,节点恢复期间无需list-watch,启动快速。
- 边缘节点在网络不稳定时可以离线工作,并在网络恢复后同步状态。
3. **资源优化**:
- KubeEdge优化了边缘资源的使用,内存占用降至约70MB,以适应边缘计算环境中资源受限的情况。
4. **设备管理**:
- KubeEdge通过Kubernetes API管理边缘设备,支持设备状态的同步和查询。
- 使用DeviceTwin来存储设备状态,并将设备状态同步到云端。
5. **架构组成**:
- **Edged**:在边缘节点上运行并管理容器化应用程序的代理。
- **EdgeHub**:WebSocket客户端,负责与云端服务交互,同步云端资源更新到边缘端,并将边缘端主机和设备状态变更报告到云端。
- **CloudHub**:WebSocket服务器,负责在云端缓存信息、监视变更,并向EdgeHub端发送消息。
- **EdgeController**:扩展的Kubernetes控制器,用于管理边缘节点和Pod的元数据。
- **DeviceController**:扩展的Kubernetes控制器,用于管理边缘IoT设备,实现设备元数据/状态数据在云端与边缘端的同步。
- **EventBus**:MQTT客户端,用于与MQTT服务器交互,为其他组件提供发布和订阅功能。
- **MetaManager**:处理edged和edgehub之间的消息,并负责在轻量级数据库(SQLite)中存储/检索元数据。
6. **云边消息可靠性增强**:
- 云端向边端发送控制命令时会检测边缘是否回传ACK应答,确保消息下发成功;云端会对控制命令编号,记录消息的下发,避免重发消息可能导致的带宽冲击问题。
7. **组件轻量化**:
- 为了应对边缘场景资源受限的问题,KubeEdge在edgecore中集成了一个经过裁剪后轻量级的kubelet,用以管理边缘应用的容器。
8. **边缘物理设备管理**:
- KubeEdge利用设备管理插件Mapper以云原生化的方式纳管边缘设备,用户能够定义设备配置文件,以Kubernetes自定义资源的方式云原生化管理边缘物理设备。
这些技术特点使得KubeEdge成为一个强大的云原生边缘计算平台,能够支持多种边缘计算场景,如智能交通、智慧园区、工业制造等。