作者:DJ

审校:Kevin·Wang

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

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

关注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真正涉及到边缘侧部署时,仍然存在不少挑战,例如:

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将会打造一个新的生态。

北美KubeCon新风,正把K8S魔力带向边缘计算的更多相关文章

  1. [转帖]从零开始入门 K8s | 手把手带你理解 etcd

    从零开始入门 K8s | 手把手带你理解 etcd https://zhuanlan.zhihu.com/p/96721097 导读:etcd 是用于共享配置和服务发现的分布式.一致性的 KV 存储系 ...

  2. 阿里云如何基于标准 K8s 打造边缘计算云原生基础设施

    作者 | 黄玉奇(徙远)  阿里巴巴高级技术专家 关注"阿里巴巴云原生"公众号,回复关键词 1219 即可下载本文 PPT 及实操演示视频. 导读:伴随 5G.IoT 的发展,边缘 ...

  3. KubeEdge v0.2发布,全球首个K8S原生的边缘计算平台开放云端代码

    KubeEdge开源背景 KubeEdge在18年11月24日的上海KubeCon上宣布开源,技术圈曾掀起一阵讨论边缘计算的风潮,从此翻开了边缘计算和云计算联动的新篇章. KubeEdge即Kube+ ...

  4. 使用JDK自带的MessageDigest计算消息摘要

    使用JDK自带的MessageDigest计算消息摘要 上代码 /** * 使用JDK自带MessageDigest */ public class MessageDigestUtils { /** ...

  5. 关于k8s这项大动作,预示着边缘计算迎来“开源”发展的新周期……

    在文章<最近在边缘计算领域,发生了一件足以载入物联网史册的大事…>我曾经提到Kubernetes(简称K8s)将从超大规模云计算环境,被带入到物联网边缘计算场景中. 事情有了新进展,从本周 ...

  6. 边缘计算k8s集群SuperEdge初体验

    前言 手上一直都有一堆的学生主机,各种各样渠道途径拿来的机器. 一直管理里面都比较蛋疼,甚至也不太记得住它们在哪是什么IP,管理起来很是头疼. 有阵子空闲的时候想折腾了一下边缘计算集群方案. 希望能把 ...

  7. 边缘计算k8s集群之SuperEdge

    什么是边缘计算? 边缘计算,是指在靠近物或数据源头的一侧,采用网络.计算.存储.应用核心能力为一体的开放平台,就近提供最近端服务.其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务.应 ...

  8. 从零开始入门 K8s | 手把手带你理解 etcd

    作者 | 曾凡松(逐灵) 阿里云容器平台高级技术专家 本文整理自<CNCF x Alibaba 云原生技术公开课>第 16 讲. 导读:etcd 是用于共享配置和服务发现的分布式.一致性的 ...

  9. K8s 还是 k3s?This is a question

    本文来自:Rancher Labs 自k3s问世以来,社区里有许多小伙伴都问过这样的问题"除了中间的数字之外,k3s和K8s的区别在哪里?","在两者之间应该如何选择?& ...

随机推荐

  1. matlab操作(整理)

    http://blog.csdn.net/ysuncn/article/details/1741828 http://zhan.renren.com/h5/entry/3602888498000464 ...

  2. Java编程练习题

      曾经,有人说过,没有刷题的人生是不完整的.看了几天Java,我试着做了几道练习题,好让我的人生完整一点.(偷笑--)这里挑了一些题来跟大家分享,本文不定期更新. 题目集  1. 最后一个单词的长度 ...

  3. [咸恩静][Good Bye]

    歌词来源:http://music.163.com/#/song?id=35437298 作曲 : 安英民 [作曲 : 安英民] 作词 : 安英民/로코 [作词 : 安英民/lo-Ko] 나를 떠나버 ...

  4. 【转载】socket 的 connect、listen、accept 和全连接队列、半连接队列的原理

    转自:http://blog.csdn.net/tennysonsky/article/details/45621341 写在前面: 1. accept 只是从全连接队列拿出一个已经建立好的socke ...

  5. oracle删除用户及其表空间

    oracle删除用户及其表空间 删除表空间:可以先将其offlinealter tablespace xx offline;将磁盘上的数据文件一同删除drop tablespace xxx inclu ...

  6. eclipse异常关闭,无法启动tomcat解决办法

    如果eclipse异常关闭,会出现以下 此时需要关闭javaw.exe即可,重新启动tomcat了. 关闭javaw.exe需要打开任务关闭器,选择详细信息,然后结束javaw.exe即可

  7. 【洛谷】【线段树+位运算】P2574 XOR的艺术

    [题目描述:] AKN觉得第一题太水了,不屑于写第一题,所以他又玩起了新的游戏.在游戏中,他发现,这个游戏的伤害计算有一个规律,规律如下 1. 拥有一个伤害串为长度为n的01串. 2. 给定一个范围[ ...

  8. [luogu3943] 星空

    题面 ​ 这个题目大意上是这样的:给定一个长度为n的01串, 其中只有k个0, 每次操作时, 从给定的m种长度中选择一种, 选择序列上长度为这种的进行反转操作, 求至少需要多少次操作使得整个串全变为1 ...

  9. error:Assertion failed ((unsigned)i0 < (unsigned)size.p[0]) in cv::Mat::at

    问题原因: 访问像素时指针越界造成的 解决办法: 1.检查指针下标是否正确 2.row和col是否写反了

  10. 构建Vue开发环境

    1.开发环境的准备工作 IDE 可以选择WebStom或者VisualStudio Code Node.js的安装 node + npm 调试环境 Google Chrome + Vue.js 2.什 ...