北美KubeCon新风,正把K8S魔力带向边缘计算

做者:DJgit

审校:Kevin·Wanggithub

1. 容器生态圈新的创新方向golang

2018年容器技术圈的年终盛典北美KubeCon终于在西雅图落下了帷幕。此次北美KubeCon总共吸引了8000多观众参会,创下历史新高。先放一张图来感觉下现场的火爆程度。web

关注Kubernetes的小伙伴应该已经感受到了,与观众参会热情造成鲜明对比的是,这届KubeCon传递出了一个信号:针对Kubernetes自己的变化愈来愈少,咱们也愈来愈难看到那些激动人心的大特性。Kubernetes正变得“无聊”已经成了一个既定的事实。后端

对Kubernetes核心来讲,“无聊”并不见得是件坏事,这是一个项目成熟的标志。现现在Kubernetes已经日益成为公有云/企业IT系统的基础设施,而且朝着大规模,复杂场景的方向延伸,与AI、大数据、IoT、以及垂直行业等领域的结合愈来愈紧密。近来,愈来愈多围绕Kubernetes生态圈的创新,正在这些领域发生着。好比,此次在北美KubeCon亮相的由华为开源的KubeEdge项目,就给人一种眼前一亮的惊喜,让人不禁地惊呼 “哦,原来Kubernetes还能在边缘计算上玩!” 在感叹Kubernetes的强大魅力同时,也不得不佩服华为工程师们的创造力——要知道,边缘计算与云计算的场景有很大的区别,用K8S跑边缘计算,以前更多还只是停留在讨论阶段,实践过程当中的坑不胜枚举,华为竟然作到了,并且还开源了!安全

 

2. K8S IoT Edge Working Group服务器

 

2018年既是容器和Kubernetes收获广泛赞誉的一年,也是边缘计算加速行业落地和应用的一年。边缘计算的“边缘”是指咱们平常生活中无处不在、影响着咱们衣食住行的各式各样的端点设备,好比:手机、摄像头、路由器、自动驾驶汽车,工业机器人等。与集中式的计算模型相比,边缘计算能够为企业/用户提供低延迟,高性能的服务,保证数据的本地化和安全,解决本地数据人工智能等问题。然而,物联网世界的异构性和工业系统资产的长生命周期等特色给边缘设备的管理带来了严峻的挑战。Gartner直接把边缘计算列为下一个十年的关键技术方向。网络

 

Kubernetes引领的以容器为中心的IT基础设施变革方兴未艾,就已经有人在谋划下一个“十年”了。既然Kubernetes已经成为了容器化编排的事实标准,而且持续在云端持续发挥着魔力,那么一个直觉的想法就是可否让Kubernetes把这种魔力带到边缘计算的场景呢?架构

然而,当Kubernetes真正涉及到边缘侧部署时,仍然存在很多挑战,例如:app

1. 边缘侧可能没有足够的资源运行一个完整的Kubelet;

2. 当边缘节点和云端的网络不稳定时甚至彻底不通时,可否实现本地自治;

3. 边缘侧节点之间通讯;

4. 如何在云端管理多租户的边缘资源,包括设备;

5. 边缘侧没有serverless的支持,好比:函数。

为了解决这些挑战,华为,谷歌,红帽,VMWare共同在Kubernetes社区发起成立了一个新的工做组:IoT Edge Working Group,目的就是为了提升Kubernetes在边缘场景下的部署能力。

KubeCon进行到第三天的时候,四位分别来自华为,红帽,思科和Oort公司的工程师们进行了一次圆桌会议,会议主题就边缘计算面临的技术挑战和将来发展趋势。 

来自华为的架构师Cindy Xing(Kubernetes社区IoT Edge工做组的co-chair)在圆桌会议中谈到了云计算、容器和边缘计算的关系——不一样于云计算,边缘计算意味着几十万分布在不一样地理位置的边缘节点和百万甚至上亿的末端设备。边缘计算规模和地域跨度远远超过数据中心。云所能提供的带宽将没法知足边缘的需求。同时边缘和云之间的链接是不稳定的。边缘侧须要实如今和云断网的情形下实现自治,同时又须要和云链接实现集中的管理和批量的应用部署管理。若是对着几十万的边缘节点去分别部署更新应用,这个消耗是没法想象的。另外边缘计算中,设备极其多样,设备的通讯协议也很不一样。设备能够是128MB、1CPU的Raspberry-Pi,也能够是多核,GB内存的服务器。设备通讯协议既能够是Http/Amqp/Mqtt,还能够是Bluetooth,Zigbee等等。边缘计算将比云计算复杂的多。对于开发者来讲,一个应用在办公室开发验证后,将但愿应用直接部署在边缘,无需焦虑功能问题。容器的可移植性正好知足了这个须要。

正是看到了K8S和边缘计算存在的自然契合点,华为开发并开源了KubeEdge——业界首个基于Kubernetes的多租、可扩展、兼容K8S API的容器应用的边缘计算平台。KubeEdge也是K8S IoT Edge Working Group输出的使用Kubernetes支持边缘计算的一个参考范例。

 

3. KubeEdge:K8S与边缘计算的结合

 

KubeCon第四天的时候,华为为CNCF IOT/Edge的社区会员组织了一次小型聚会。

在此次轻松随意的聚会上,K8S/CNCF社区成员坐下来,聊聊天,分享各自对边缘计算的场景需求和技术理解。华为的工程师演示了华为云的边缘计算产品IEF。在随后的KubeCon CNCF IOT/Edge Deep Dive,co-chair Cindy Xing深度介绍了IEF的开源实现KubeEdge的架构,功能和将来发展路标。

针对边缘计算场景下的痛点,KubeEdge为用户提供了基础的网络设施,使用KubeBus能够实现边缘和云,边缘和边缘的网络路由通讯。借助云和边的MetaStore以及之间的同步,KubeEdge解决了云边断网,带宽的问题并实现边缘侧自治。在KubeEdge里,AppEngine是个轻量化的代理, ~10MB的运行时内存消耗意味着它几乎能够跑在任何设备上。AppEngine保持K8S的数据模型和通讯协议,经过和容器引擎交互,管理容器应用的生命周期,反馈容器应用的运行状态。

从功能上看,KubeEdge打通了从底层设备到设备驱动/SDK,再到边缘侧Runtime,云端控制器以及云上应用整个软硬件全栈,它为IOT厂商,开发者和IOT应用企业带来了一个解决方案和平台。

从架构看,KubeEdge包括云端和边缘侧两套组件。边缘侧对设备支持MQTT协议,采用了模块化设计,由Edged,MetaManager,DeviceTwin,EventBus,EdgeHub这五个模块构成,模块之间经过golang的channel进行通讯。

 Edged就是为边缘计算深度定制的精简AppEngine。虽然精简,但这个AppEngine支持K8S的API原语,好比:Pod,Volume,Configmap等,同时也支持Pod探针和Event上报。

 EdgeHub是一个web socket的client,负责和云端的消息通讯,包括:向边缘侧同步云端资源更新,向云端报告边缘侧节点和设备状态更新,这条数据通道也就是上文提到的KubeBus。

 MetaManager则是一个消息处理器,是架在edged和edgehub之间的桥梁,同时也和后端data store交互,读写一些元数据;

 EventBus则是边缘节点和设备的之间的纽带,他既能够从MQTT Broker处订阅设备状态更新事件,并向其余感兴趣的组件发布,也能够向MQTT Broker发送对设备的操做指令,同时云上app和用户本身部署在edge的应用通讯,也走EventBus。

 DeviceTwin则负责存储设备元数据到data store以及和云端同步设备状态,用户能够从云端下发的对设备操做指令发布给DeviceTwin。KubeEdge在边缘侧对设备支持MQTT协议,而且提供设备影子服务。设备目前能够经过MQTT Broker(mosquitto)注册进来。

在Cindy看来,KubeEdge的架构作到了云、边松耦合,边缘能够在断网条件下自治,并在网络恢复后和云侧进行同步。KubeEdge引入了K8S强大的容器编能力,客户能够像管理云上K8S集群同样方便地管理边缘节点和部署应用,这对熟悉K8S的用户来讲,无疑是个福音。

 

4. 将来工做

 

KubeEdge目前已包含了边缘侧的完整实现,云侧的开源工做正在紧锣密鼓地筹划中,相信很快也会开源,详见项目地址:https://github.com/kubeedge/kubeedge。

KubeEdge自11月KubeCon China宣布开源以来,引发了普遍关注,一度登上Github trending榜单。目前star 220+,fork 50+,slack用户和开发者群成员50+,而且吸取了多名外部代码贡献者。

将来,华为将继续完善KubeEdge,包括但不限于:

  • 支持更多的设备接入协议:AMQP,蓝牙,ZigBee等;

  • 支持超大规模节点和设备管理;

  • 和Istio结合构建服务网格能力;

  • 在边缘侧提供函数服务;

  • 支持设备经过MQTT协议直连云端;

  • 边缘节点使用UDP hop来通讯;

  • 引入智能调度功能。

华为也欢迎参任何感兴趣的厂商和开发者参与KubeEdge社区,共同推进边缘计算的创新。咱们预计从此一到两年边缘计算会有日新月异的发展,咱们彻底有理由相信取得先发优点的KubeEdge将会打造一个新的生态。

相关文章
相关标签/搜索