张琦:很高兴和大家一起探讨云原生的边缘计算平台的问题,主要是向大家介绍KubeEdge这个项目。我本人是华为公有云智能边缘计算服务首席架构师,同时也是KubeEdge项目的负责人。负责边缘计算项目之前,我本人负责华为公有云微服务引擎的架构师。骑摩托车的都说“Speed First,Safety Second”,其实这和云原生也有很大的关系,后面再和大家分享。
站在云端看边缘,华为公有云作为一个公有云厂商,怎么看待边缘计算这件事情?边缘计算和云原生结合能够解决什么问题?我们对边缘计算的生态构建是什么想法?下面我们逐一来看。
Gartner公布的2019年十大趋势当中边缘计算位列其中,不看这些报告大家也可以明显感受到,2018年开始边缘计算技术被提得越来越多了,其实这个名词并不是一个新概念,之前就有,但是去年被提得越来越多了。那么这到底是为什么?除了上面列的Gartner的趋势以外,计算、存储、网络的发展是不平衡的,1983年到2011年的统计数字当中,内存都是千倍以上的提升,带宽提升很大,网络时延提升也很明显。
我们的业务形式也越来越丰富了,未来五年边缘计算的主要推动力在于IoT视频+传感器,VR和AR这种交付体验,最近几年开始边缘侧产生的数据越来越多。以后万物互联,什么东西都是在线的,即便一棵树都有二维码,数字世界和物理世界的连接越来越紧密,那么更多业务形式都会在边缘侧产生大量数据,因为这些数据变得越来越有价值,人们也越来越学会利用这些数据的价值。
今天下午信通院发布了云计算和边缘计算协同应用场景的白皮书,我们可以看到里面对协同部署是非常强调的,就是云计算和边缘计算并不是对立的,这也部分解释了去年开始边缘计算这个词重新变热起来,传统企业也在上云,所以对边缘计算的需求变得火热起来,可以说这二者是很有意思的关系。
总结来看,边缘计算的推动力基本上就是低时延、海量数据、隐私安全和本地自治。
我们总是在讲边缘计算,但是大家有没有意识到,可能你讲的边缘计算和我讲的边缘计算不是一个东西。这是为什么呢?我们把边缘计算分成这样几种不同的形态:进场计算的特点是放到CDN上面计算,边缘计算节点也是在CDN上面。线上计算就是我们常说的IoT,更多的是接入线上的机器和传感器,就是要和下面的设备连接。离线计算也是线上计算的形式,只是要看离线时间。我们在技术上可能有很多共通的地方,但是从业务的角度并不是一个东西。
刚才讲的是边缘计算的发展形势和情况,下面介绍一下所谓的云原生边缘计算。边缘计算发展到现在是有几个问题:边缘计算割裂、物理设备访问难度较高,开发难度较高,日趋复杂的边缘业务部署,缺少云和边的协同。不知道大家有多少是做和边缘计算相关的行业,之前我们和很多IOT厂商交流,很多时候会发现大家说的不是一个语言,你在讲容器,人家在讲虚拟化,你在讲微服务,人家在讲生产线节拍和协议,大家的技术栈都不一样。我们还发现随着现在边缘侧业务越来越复杂,特别是进场计算的出现,边缘侧的物理形态也会越来越复杂,不是原来那样简简单单的只是一个嵌入式软件放在里面,很多情况下边缘部署也是非常复杂的系统。
现在的边缘计算很难缺少云,云和边缘都是协同工作,边上收集数据,云上处理数据,所以边缘和云总是有些协同。按照传统的方式,大家想的更多的就是数据的传输和协议的转换,没有达到这种程度,所以协同和云原生的事件相比还是有些问题。
KubeEdge被称作云原生的边缘计算解决方案,就像它的名字一样,这是基于媒体生态的边缘计算平台,现在已经成为CSR基金会下面的一个项目。我们可以从架构上看到平台分为云上部分到云下部分,云上部分主要是对接和处理上面的模型和对象,下面会有一个边缘侧的Agent或者小的系统,所有这些东西都是在一个进程里面,我们的原则就是Zero Touch,就是做得足够简单、足够健全。
我们为了做这样的边缘侧Agent也有开发所谓的进程服务框架,通过这样的框架实现进程内的模块,包括服务和云上连接,因为边缘侧没有官网的地址,所以只能是和云上发起连接,就有一个模块负责连接保持,包括和边缘连接的端侧设备,通过端侧设备收集数据处理模型,进行本地存储和本地试点,这套网络在很多情况下都是不稳定的,时断时连,不能假设这种连接永远存在。
为什么我们选用基于Kubernattes来做这种平台?实际上现在已经形成了一套业界标准,最重要的不仅是平台的技术层面,更重要的是这么多年来沉淀下来的复杂的云原生应用。这里列举的是所谓的原模型构建云原生应用部署的元素,通过对这些模型的组装,我们可以表示很多在边缘侧的复杂部署情况。我们的两个硬件同时连接一个设备,需要处理这个设备上面传下来的数据,这个时候就可以把我们的应用部署到边缘侧,一个设备出现问题以后可以把这种应用飘到另外一个设备,这样可以形成高可用的方案。
我们一个项目可能涉及到部署几百个边缘侧界面,这个节点就是一个小盒子,并且希望达到的效果就是第一次部署以后,如果后面边缘界面再次拓展,只需要施工人员到现场把这个盒子放到相应的位置,插上电就可以直接使用了,想要的就是这样的效果。这个时候我们可以通过Deployment调度部署的方式,所有打了某个指定Label的边缘节点都去部署这种应用,不管边缘节点有多少个,这样的话后续上线的边缘节点只要打了这个Label就会自动部署下去。可以发现这样的部署模型除了在云上面之外,现在越来越复杂的是非限制场景,因此我们构建的项目就是要把这样一套部署模型部署到边缘,可以让边缘享受到这样的原生技术。
现在我们发现边缘应用大部分场景都是和AI相关,AI也是边缘计算很大的催化剂,所以我们在边缘侧支持GPU都是非常重要的事情,包括现在应用比较多的NVIDIA GPU,华为也有自己的NPU,KBS本身的架构设计就对加速芯片有非常好的支持,通过Device Plugin的机制把加速芯片的操作抽象成了几个不同的阶段:首先是整个项目的系统注册,然后会有一个Device List,如果在云上申请计算资源或者下发容器,通过这个接口调用Plugin,可以分配算力过来。这种抽象其实非常简单,非常简洁,但是这种抽象可以涵盖所有加速芯片,只要按照这种结构提供Device Plugin都可以接入进来。
ServiceMesh再到EdgeMesh都是构建方式,可以将分布式应用构建成为大的分布式系统,这样的开发体验针对用户和开发者是透明的,也是门槛非常低的构建云原生的分布式应用,或者微服务架构下的分布式应用的方式,我们把这种方式应用到边缘当中,针对边缘处理可以应用一种统一的体验实现整个大的服务系统。整个微服务和流量设计应用网格治理都是遵从Istio进行处理,如果大家熟悉Istio的话知道这种数据流量,我们也有进行边缘流量转发,数据节点需要处理很多复杂的情况,比如两个服务处理不同的边缘,流量可能需要先在云上面绕一下,或者通过P2P技术实现两边直接联系起来,云上服务的话通过API定位暴露出来,所以处理复杂连接情况就是通过这种方式进行流量转发。
我们的EdgeMesh也是1.0特性,现在处于早期阶段,1.0是上周刚刚发布的,大家有兴趣的话可以到社区体验一下。
DeviceCRD就是设备访问微服务化,针对设备抽象出来这样一组模型,连接边缘节点,抽象成为两层对象,定义的就是设备上层应用访问更加关心的属性。DeviceInstance封装的是下层具体连接设备需要填的参数,整个这套模型都可以在KBS当中对待内置对象的方式访问设备。
有了刚才的模型描述以后,我们还有一个管理机制叫做MK,对接的就是上面的模型,下面对接具体设备,可以把设备的数据拿上来。具体是怎么拿的呢?指导文件就是刚才我们说的CRD模型,传统本地开发和原生边缘计算不一样的地方,可以看到从这种设计开发部署运维分析几个阶段,其实每个阶段的差别都是蛮大的,最开始介绍的时候提到“Speed First、Safety Second”,当然并不是不要安全,驱动力是什么呢?我们观察到的更多的是业务的快速发展,就是业务的发展太快了,应用构建方式发展太快了,所以才产生云原生这样的技术。
大家可以想象一下这些年来移动互联网的业务发展,就像一辆车在高速公路上快速奔跑,带来的问题就是安全性,有了业务的快速发展驱动就要马上构建安全性,从而保证业务的快速发展。互联网业务当中我们经常说水平扩展等技术,就是为了保证整个业务的安全性,所以这是云原生的特点。实际上云原生边缘计算也是遵循这种思路,第一保证业务快速发展,第二在快速发展的同时让业务整体安全性更好。
这些就是我们对边缘计算生态构建的思考,云边缘计算的基础设施和应用的关系是经济学当中的互补品原理,就像剃刀和刀片的关系,一个需求上升,另外一个需求肯定会上升,要是剃刀刀架免费送的话肯定会有更多的人去买刀片,我们认为云边缘基础设施、边缘硬件和网络资源三者就是互补品的关系,并不是说边缘计算用的人多了计算就没有人用了。
KubeEdge本身也是一个CNCF项目,但是不仅是华为一家公司在做Contribution,很多公司的朋友都在里面做贡献,这样一个Working Group主要是实现边缘计算的场景方案,包括各种参考架构和端到端的验证。作为一个开源的项目商用化其实是有很多事情要做的,OpenStack也是这样,真正进行商用都有很多工作要做,要是想把这样的开源项目拿到实际生产或者是大规模生产当中需要做的一些工作,更多的是运维层面、安全层面和支持大规模接入层面的保证,包括产品化怎样应用起来更加方便。
信通院刚刚公布云计算和边缘计算协同的九大应用场景,这个白皮书应该是今天之后大家就可以拿到的,比如我们做的智慧园区的项目,价值就是云上面是把一些模型应用和边缘托管归到边缘侧,就在边缘侧构建了智慧园区、指挥安防的业务场景,包括人脸检测、周界检测,就是通过摄像机自动判断有没有人翻墙,配到边缘侧以后再做这种分析,事件发生的时候会把人脸的原始图片上传到云端。工业质检就是光伏电池生产线,也是边缘侧继续通过照片检测生产的光伏电池片有没有出现问题,就是在云端把模型应用推送到边缘,面向煤矿的安全计算除了刚才讲的边缘侧的智能设备分析之外,还要接入很多设备,比如判断有没有瓦斯泄漏、机器运转是不是正常,需要在边缘侧进行实时数据分析,最紧急的报警就是在边缘侧,然后会在云端建立模型。
我们知道CDNF是做应用加速的,很多厂商都是想在低谷期充分利用资源,所以就是对业务的弹性有很高的要求。
这些就是KubeEdge信息社区,大家如果感兴趣的话一起讨论云原生和边缘计算的想法。