日前在Austin举办的OpenStack 大会上介绍过基于Kubernetes和Openstack的开源物联网平台。我们来看看这两者的结合在物联网平台如何玩,先说说我们对物联网的解决方法和看法,再给大家展示两个案例。
物联网(IoT)是云计算领域的“下一个大事件”。物联网意味着所有的事情,它甚至比云计算服务更加具体。物联网以增加机器间通信为中心,它建立在数据采集传感器网络和连接到云计算服务执行器的基础上。
我们来看看如何使用开源项目,来扩展云服务方法进而创建通用的物联网平台,可以处理多个用户案例。我们定义了以下要求:
开源软件
整个平台基于已存在的开源解决方案,我们想要使用的平台包括:OpenStack,Kubernetes,Docker,OpenContrail等。
HW和独立供应商
没有一家供应商的定位是既包括软件又包括硬件的。物联网网关CPU不是x86/64架构就是ARM架构。我们不想被锁定到用昂贵专用设备的供应商。
可互相操作
物联网平台对多种使用情况来说都是普遍可用的。比如,物联网网关也可用在计算对象的路灯,就如同用在智能工厂或者工业4.0应用程序。因此,我们设计了以下高层次的架构,这个架构使用的是开源项目,OpenStack,Kubernetes,OpenContrail和Docker。
传感器
任意用来阅读环境数据(温度,湿度,二氧化碳水平),对象,计数等等的传感器。
IQRF网络
IQRF是一个操作sub-gigahertz ISM bands的强大无线网格技术。能够很容易地跟传感器整合。
网关
在物联网网关,由IQRF协调员来处理从传感器传来的数据。这些可以是任意的x86/64或者ARM架构,这些基于Docker,Kubernetes,OpenContrail vRouter和Debian,从预构建镜像方面来运行系统。
网络
网关可通过任意网络连接(GSM/LTE/WiFi),因为SDN在Docker service和数据中心之间创建了动态L3VPN。
数据中心
数据中心包括了OpenStack和Kubernetes控制面板。这两个编排解决方法都使用OpenContrail作为单个SDN(软件定义网络)。这就可以从中心点管理整个平台。我们可以在本地远程开启任意Docker容器,然后创建动态连接到OpenStack上的service。OpenStack云容器数据存储和大数据进程services。
虚拟化/API 访问
所有数据在网络端口已经被虚拟化,而且可以通过REST API service访问。
下面,让我们来看两个案例。
案例1: 智能城市Smart City
第一个案例是捷克共和国Pisek城市的SmartCity项目。SmartCity概念和架构将会部署超过3000个端点,大约300个物联网网关,这些网关以高可用模式运行在由Kubernetes驱动的容器中。解决方案的一部分是开放数据门户,数据API对提供信息的第三方公司来说可用:
交通,路径,停车
监测,管理,节能
电子商务,市场,旅游信息
环境分析
生活方式,社会服务,社交网络
目标解决方案使用基于树莓派2的物联网网关作为物联网网关服务。网关的数据被存储在Graphite,由自定义的数据挖掘应用程序进行处理,结果已经被展示到基于LeonardoCMS的城市公民门户,这是一种允许混合复杂的可视化与任意内容的网页服务。这个开放数据门户使得数据能够通过可视化仪表或者API访问。
以下屏幕用特定时期内的车辆和行人展示了简单的从十字路口Kollarova X Zizkova输出。
案例2: 在Austin OpenStack峰会上的智能会议
为了证明我们的物联网平台在应用程序环境独立,我们从智能城市项目采取了一个物联网网关,然后和基于IQRF网状网络连接传感器(测量湿度,温度和二氧化碳水平)一起在OpenStack峰会上放入Austin会展中心。这说明了物联网网关管理和收集信息的能力,它可以从任意像IQRF,Bluetooth,GPIO之类的基于Linux平台通信技术获得信息。
我们用单个、主动的物联网网关在3楼会议部署了20个传感器和20个路由器,从整个IQRF网状网络接收数据并传送到专门的时间序列数据库,在这个例子里是Graphite。收集器是运行在由Kubernetes管理的Docker容器MQQT-Java桥。最有趣的就是运行在树莓派上的Docker容器,和运行在Europe数据中心的虚拟机。OpenContrail SDN提供动态网络覆盖tunnels。
以下图片展示了单个无线IQRF网状网络传感器和路由器发现。
IQRF是一个在sub-gigahertz频带上操作的无线网状网络技术。它提供非常简单的整合,产品互操作性,最大值240 hops的健壮网状网络,范围多达数百米,以及超低功率操作。
以下截屏从2楼不同的房间展示了各个时间下的CO2值。历史图表展示的是周一的情况。
从收集的Austin数据来看,以下图覆盖了services。
技术总览
所谓“物联网平台”,是用一般视角创建的,这个视角基于收集,管理和安全、动态处理成千上万的端点来集中管理。因此,架构会分成两个主要的部分:
1 数据中心
数据中心是整个物联网平台管理的重点。OpenStack IaaS云和虚拟机一起运行在SDN控制面板上。这些机器包括时间序列存储,处理数据集群,数据API代理服务,虚拟化网页服务等。
2 网关
物联网网关位于像路灯,工业设备,家用电器之类的目标地方。SDN提供传输层用云服务来连接远程物联网网关。网关可以是多平台的,有可能的话,可以将x86/64和ARM设备混合到一起。在单个网关为多个客户处理多个传感器平台,由于微服务分割(Docker容器)和Kubernetes 多租户支持。这个平台可以提供可伸缩的多租户空间。
以下图表展示了在网关方面的数据中心层和组件。这个章节的细节展示了更多信息。
细节图表
细节图表提供了整个物联网平台在本地的架构视图。左边展示的是数据中心,右边展示的是之前提到的网关。
就如同你在下面看到的那样,OpenStack被用作云来处理所有的control service,以及大数据处理,和之前提到的虚拟单元。在网关的Kubernetes被用于services的微分段,这对多租户和不同传感器间的安全来说十分有必要。
OpenContrail被用来连接这两边,并且提供Kubernetes PODs和OpenStack 项目虚拟机间的网络分段。
像上文提到的,SDN覆盖已经完成了分割。重要的是只有数据中心边界路由器和物联网网关之间的IP连接。最底层是网关OS和数据中心边界路由器之间的VPN,在这里OpenContrail可以直接在虚拟机(OpenStack云)和容器(网关)间交流。这个方法允许从不同的传感器和执行器选择,给予他们特权,并且安全地连接处理应用程序内部的云。
数据中心包括以下services:
管理services
HW集群用所有的control service来运行虚拟机:OpenStack controller,OpenContrail controller(SDN),Kubernetes master,SaltMaster。
OpenStack云
OpenStack项目为不同的虚拟机提供分段,虚拟机包括数据库(graphite,influxdb,openTSDB),大数据处理(Hadoop),数据虚拟化(Grafana,LeonardoCMS)。它运行在KVM超管理器上,并且为网络使用OpenContrail neutron插件。
边界路由器
OpenContrail创建iBGP,iBGP与数据中心边界路由器对等,在边界路由器上,从OpenStack虚拟机和物联网网关上的Kubernetes pods可以传播动态网络路由。它创建了标准的L3VPN,MPLSoverGRE或者MPLSoverUDP。
远程网关包括的组件:
Kubernetes Minion
Kubernetes minion与Kubernetes master在数据中心进行交流,并且通过kubelet管理PODs。Kubelet使用opencontrail插件,这个插件可以用vRouter代理连接Docker容器。
Kubernetes PODs
Kubernetes PODs连接到vRouter的单个或者多个容器组。PODs由标签进行分类。这就可以开启不同的应用程序,就可以从像IQRF,Bluetooth或者GPIO这样的消息总线读取。
Docker容器
Kubernetes PODs中的Docker容器带来无须任何特殊装置就可以轻松操作系统的巨大好处。比如IQRF用特定版本来使用简单的Java应用程序,这个版本用容器可以在几分钟内进行交付,而且不会导致跟操作系统网关不匹配的状况。
应用视图
下图提供了应用视图的模式。展示了虚拟机内部OpenStack云能够在任意地理位置L2或者L3上联系到Docker容器的状况,这得益于OpenContrail的覆盖。因此,应用程序开发者能够使用相同的工具,就如同他们在标准云中使用的那样。
比如,我们从环境传感器收集数据。传感器直接连接到容器,数据在容器中处理,之后发送到Graphite时间序列数据库。因为我们想要生动地实时显示数据,我们用读取GraphiyeAPI接口的Leonardo CMS来使用另一个虚拟机,并在网页上展现数据。根据这个,我们就可以在同一个由多个输入和输出的云中,依据相同的准则来创建不同的项目。
结论
以上简述了如何基于Kubernetes和OpenStack来做物联网平台的原型部署,目前我们正在为整个Smart City处理细节上的设计。
今年,在Austin的OpenStack峰会,以及London的KubeCon上,我们得到了很多反馈。对于处理安全问题,大家觉得我们提供的方法思路是可行的,抵抗属性和性能关系到物联网平台,以及很多技术合作伙伴都想要加入我们,跟我们一起努力,然后拓展我们的物联网平台到他们的解决方案。
(如果需要转载,请联系我们哦,尊重知识产权人人有责:)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。