硬件群集中运行的虚拟机承载了所有控制服务:OpenStack控制器、OpenContrail控制器(SDN)、Kubernetes主机、Salt主机。
OpenStack云
OpenStack项目为数据库(Graphite、Influxdb、openTSDB)、大数据处理(Hadoop),以及数据可视化(Grafana、LeonardoCMS)所涉及的不同虚拟机服务提供了分隔和划分。这个云运行在KVM hypervisor之上,通过OpenContrail的Neutron插件实现网络连接。
边缘路由器
OpenContrail会与数据中心边缘路由器创建iBGP对端,这样便可以将OpenStack虚拟机和Kubernetes POD的动态网络路由传播至IoT网关。该设备可以MPLSoverGRE或MPLSoverUDP方式创建标准的L3VPN。
远程网关包含下列组件:
Kubernetes Minion
Kubernetes minion负责与数据中心内的Kubernetes主机通信,并负责管理Kubeletand POD。Kubelet使用了Opencontrail插件,借此将Docker容器与vRouter代理连接在一起。
Kubernetes POD
Kubernetes POD是连接到vRouter的一个或多个Docker容器。POD可按照标签进行分隔,这样即可启动不同应用程序,从不同消息总线以IQRF、蓝牙,或GPIO方式读取数据。
Docker容器
Kubernetes POD中的Docker容器为整个平台提供了极大的收益,可在无需特别安装的情况下支持任何类型的操作系统。例如,IQRF使用了某一版本的简单Java应用程序,可通过容器在几分钟内交付,并且不会与网关本身的操作系统产生不匹配的情况。
应用程序视图
下列架构图详细介绍了应用程序视图。从图中可知,借助OpenContrail覆盖的帮助,OpenStack云内部的虚拟机可以通过L2或L3私有网络联系位于任何地理位置的Docker容器。因此应用程序开发者可以使用标准云平台中用过的同一套工具。他们可以通过HEAT部署虚拟机应用程序控制器,随后通过简单的Yaml文件在远程网关上的容器中部署Kubernetes服务。
![物联网](/d/file/news/Internet_of_things/technical/2017-07/ef70bf70530f5185cae6668508745e87.png)
以通过环境传感器收集数据的做法为例:传感器直接连接至容器,数据在Docker容器中处理后发送至Graphite时序数据库。因为我们希望以图形化方式实时呈现数据,因此使用了另一个虚拟机,通过Leonardo CMS借助Graphite API读取数据,并将其显示在网站上。据此我们可以通过同一个云平台,按照相同的原则创建不同项目,并使用多种输入和输出位置。
结论
我们希望对这个IoT平台的愿景和已经部署的原型进行一个简要的介绍。目前我们正在完成整个智慧城市解决方案的细节设计工作。
今年在奥斯丁举行的OpenStack峰会和伦敦举行的KubeCon上对该方案进行介绍后,我们收到了来自社区成员的大量反馈。在IoT平台的安全性、弹性,以及性能方面,我们的构想得到了大家的认可,很多技术合作伙伴希望通过合作对我们的IoT平台进行扩展,借此构建他们自己的解决方案。我们现在正在着手有关工业4.0的构想,打算通过开源项目创建第一个智能工厂。
作者:Jakub Pavlik
阅读英文原文: OpenStack and Kubernetes join forces for an Internet of Things platform