2018年11月15日上午Huawei在上海KubeCon宣布了KubeEdge项目开源,并公布了KubeEdge这个开源项目的地址(欢迎Star、Folk,各种Issue、PR):
并演示基于KubeEdge管理摄像头的一个智能考勤系统的例子。
在此之前,先简单介绍下KubeEdge这个项目背景。当前,越来越多的计算正在从云端往边缘侧转移。
我们身边随处可见边缘计算的场景,例如:
5大现实场景下的「客观因素」推动计算从云端走向边缘:
中心云无法很好地解决以上问题,引入边缘计算可以解决这些问题。那么如何在边缘侧部署应用呢?我们很自然地想到了Kubernetes。虽然Kubernetes已经成为事实上容器编排的标准,但是当涉到在边缘侧部署时,仍然存在不少挑战。
例如:
为了解决Kubernetes在IoT Edge场景下的问题,Kubernetes社区最近成立了一个新的工作组:IoT Edge WG。
该工作组由Huawei,红帽,Google和VMWare共同领导。这个工作组的目标是:
因此,我们开源了KubeEdge,一个Kubernetes Native的边缘计算管理框架,他的设计初衷就是:让云边协同,计算下沉,让云端更加容易地管理边缘节点和设备。
KubeEdge有以下几个特点:
KubeEdge项目开源地址: https://github.com/kubeedge/
KubeEdge是个开放的社区,欢迎开发者积极贡献代码,在使用过程中有任何问题也欢迎提issue讨论。
KubeEdge从功能上看,是打通了从底层设备到设备驱动/SDK,再到边缘侧Runtime,云端控制器以及云上应用整个软硬体全栈。
从架构看,又分为云端和边缘侧。边缘侧是单进程部署,采用了模块化设计,由edged,metamanager,devicetwin,eventbus,edgehub这五个模块构成,模块之间通过golang的channel进行通信。
Edged 就是为边缘计算深度定制的精简runtime,虽然这是一个精简的runtime,但它支持K8S的API原语,比如:Pod,Volume,Configmap等,同时也支持Pod探针和Event上报;
Edgehub 是一个web socket的client,负责和云端的消息通信,包括:向边缘侧同步云端资源更新,向云端报告边缘侧节点和设备状态更新;
Metamanager 则是一个消息处理器,是架在edged和edgehub之间的桥梁,同时也和后端data store交互,读写一些元数据;
EventBus 则是边缘节点和设备的之间的纽带,他既可以从MQTT Broker处订阅设备状态更新事件,并向其他感兴趣的组件发布,也可以向MQTT Broker发送对设备的操作指令,同时云上app和用户自己部署在edge的应用通信,也走eventbus;
DeviceTwin 则负责存储设备元数据到data store以及和云端同步设备状态,用户可以从云端下发的对设备操作指令发布给DeviceTwin。设备目前可以通过MQTT Broker注册进来,也就是eclipse的mosquitto。未来,我们将支持更多的设备协议,例如:AMQP,BlueTooth,ZigBee等。
接下来我们将用一个智慧园区人脸考勤系统为例,展示KubeEdge协同管理云,边和设备的能力。
整个过程分为以下三个步骤:
推荐阅读: