从v0.1到v0.2
小数点后的一小步
是边缘计算领域里程碑式的一大步
KubeEdge发布v0.2版本
全球首个基于K8S
提供云边协同能力的开源边缘计算架构
正式补齐最后一块拼图
将毫无保留地提供
云原生的端到端边缘计算解决方案
项目地址:
kubeedge/kubeedgegithub.com
KubeEdge开源背景
KubeEdge在18年11月24日的上海KubeCon上宣布开源,技术圈曾掀起一阵讨论边缘计算的风潮,从此翻开了边缘计算和云计算联动的新篇章。
KubeEdge即Kube+Edge,顾名思义就是依托K8S的容器编排和调度能力,实现云边协同、计算下沉、海量设备的平滑接入。KubeEdge架构上包含两部分,分别是云端和边缘侧。云端负责应用和配置的下发,边缘侧则负责运行边缘应用和管理接入设备。
此前,关于用K8S在边缘侧部署应用还一直停留在实验阶段,KubeEdge脱胎于华为云IEF服务,是第一个具备在生产环境部署能力的边缘计算领域开源项目。前几天K8S IOT/Edge工作组发布了关于边缘计算的白皮书,并将KubeEdge作为K8S在IOT/Edge场景下的参考架构。
KubeEdge开源后国内外也出现了一些开源的边缘计算平台和基金会。但是当你仔细研究这些项目时会发现,LF Edge糅合了5个项目有点像是大杂烩,OpenEdge强绑定厂商中立性有待商榷,而k3s为了在边缘部署完整集群而魔改了K8S,他们似乎都称不上完整的从云到边缘再到设备的开源解决方案。TheNewStack在撰文对比过这些开源的边缘计算项目时如是写道:
It would appear openEdge is integrated with Baidu’s IoT cloud platform so it is not clear how independent is the technology.
与其他开源或半开的项目不同,不论是社区生态建设、项目运作或是代码开发,KubeEdge诞生之初就把开放性放在首位。那么, KubeEdge的开放性到底表现在哪里呢?这次的重大版本更新将会给整个边缘计算产业造成什么深远的影响呢?
v0.1- ALL in K8S,极致优化
容器天然的轻量化和可移植性,非常适合边缘计算的场景,这一点边缘计算的厂家和开发者们都心知肚明。而且鉴于K8S已经成为云原生编排的事实标准,因此携手K8S进入边缘将很有可能结束边缘计算当前混沌的状态,并定义云端和边缘统一的应用部署和管理的标准。
然而,由于边缘场景通信的不稳定性和严苛的资源消耗限制,导致原生的K8S组件无法直接运行在边缘节点上,例如:工业网关等。而受限于K8S本身list/watch机制带来的disconnect问题,数据面和管理面断连后,无法做到本地自治。
KubeEdge选择的是“轻边缘”架构,即边缘侧的容器引擎和设备管理agent尽量轻量化,管理面运行在云端,且构建在K8S的调度能力之上,100%兼容K8S原生API。KubeEdge all in K8S的设计理念使得用户可以围绕K8S的标准API定制需求或者轻松集成云原生生态中的成熟项目。
值得一提的是,KubeEdge项目的核心成员均来自于K8S/CNCF社区的maintainer和TOP contributor,他们对K8S的设计和理念和实现机制了然于心,自然也清楚K8S在边缘计算领域需要解决的问题。为了使KubeEdge可以运行在几乎所有的边缘场景(例如:工业制造、智慧园区、智能驾驶等),权衡K8S的资源占用和原生能力支持,KubeEdge选择在对接K8S API的基础上,全部重写边缘部分实现。当前,KubeEdge边缘组件的磁盘占用约为60MB,运行时内存占用小于30MB。
KubeEdge开源的v0.1版本包含:edged,edgehub,eventbus,devicetwin和metamanager这五个边缘侧的组件,架构如下图所示:
其中:
- edged是重新开发的轻量化Kubelet,实现Pod,Volume,Node等K8S资源对象的生命周期管理;
- metamanager负责本地元数据的持久化,是边缘节点自治能力的关键;
- edgehub提供可靠的云边信息同步,解决了K8S list/watch带来的disconnect问题;
- devicetwin用于同步信息到云端;
- eventbus订阅来自于MQTT Broker的设备数据;
不难发现,v0.1版本的KubeEdge最大的意义在于填平了K8S与边缘计算的鸿沟。它提供的无缝衔接K8S生态、数据本地化处理、边缘节点离线自治、简化应用在边缘侧部署、多场景支持等功能,为云原生的边缘计算架构提供了范例。
v0.2 - 生态建设的里程碑
如果说KubeEdge的 v0.1 版本只是抛砖引玉,那么 v0.2 版本将是发力生态建设的一个重要里程碑。由于其开放的设计,KubeEdge一经开源便引起了众多社区开发者和厂商的关注。
尽管v0.1版本可以通过与华为云IEF服务尝鲜云边协同的能力,但为了让海外更多的用户能够完整体验KubeEdge以及进一步消除用户对厂商绑定的顾虑,KubeEdge团队决定提前开放云端代码,即在最新的v0.2版本中发布。从KubeEdge v0.1到v0.2,虽然只是小数点后的一小步,却是边缘计算发展的一个里程碑。KubeEdge v0.1和v0.2的发布分别创造了两个记录:
- 全球首个开源的支持容器部署的边缘计算平台;
- 全球首个开放云边协同能力的边缘计算平台;
KubeEdge v0.2 的发布意味着任何人都可以在自己的环境中部署一个完整的涵盖云、边、设备的边缘计算解决方案。本次更新在 v0.1 的基础上新增了云上两个重要组件,分别是:CloudHub和EdgeController,架构如下所示:
其中:
- Cloudhub负责接收EdgeHub同步到云端的信息;
- EdgeController用于控制K8S API Server与边缘的节点、应用和配置的状态同步;
用户可以直接通过kubectl命令行在云端管理边缘节点、设备和应用,使用习惯与K8S原生的完全一致,无需重新适应。
Roadmap
在赋予了KubeEdge完全开放的云边协同能力后,接下来我们将与云原生社区和边缘计算生态玩家一道,从以下几个方面逐步完善 KubeEdge 项目,共建自主可控的边缘计算开源社区!
- 通过CRD描述设备的编排信息,并实现相应的控制器;
- 对外暴露边缘服务;
- 支持边缘节点之间的直接通信;
- 增强边缘节点的安全;
- 优化云边消息通道的效率;
- 提供通用的边缘数据管理/分析框架;
- 支持边缘serverless;
- 提供多设备协议接入的框架;
- ……