OpenStack合力Kubernetes打造IoT平臺(tái),提供智能城市解決方案

責(zé)任編輯:editor004

作者:Jakub Pavlik

2016-07-08 11:51:25

摘自:INFOQ

本文詳細(xì)介紹了OpenStack奧斯丁峰會(huì)上主題演講所提及的開源IoT平臺(tái)。若要詳細(xì)了解該項(xiàng)目,建議閱讀奧斯丁SuperUser雜志《更進(jìn)一步,讓城市變得更智能》一文,或觀看KubeCon 2016演講。

本文詳細(xì)介紹了OpenStack奧斯丁峰會(huì)上主題演講所提及的開源IoT平臺(tái)。首先我們會(huì)介紹關(guān)于IoT的方法和愿景,隨后會(huì)提供簡(jiǎn)要的技術(shù)概述并展示兩個(gè)使用案例。

物聯(lián)網(wǎng)(IoT)是云計(jì)算領(lǐng)域的“下一件大事”。領(lǐng)先的行業(yè)供應(yīng)商都提供了自己的IoT解決方案,并將其視作自己的業(yè)務(wù)戰(zhàn)略。因此IoT這個(gè)詞已經(jīng)被濫用成為描述不同供應(yīng)商專有解決方案的一個(gè)新流行詞匯。“IoT”這個(gè)詞幾乎可以代表一切,甚至比“云計(jì)算服務(wù)”更加空泛。物聯(lián)網(wǎng)主要圍繞日益增加的計(jì)算機(jī)間通信,可通過用于收集數(shù)據(jù)傳感器的網(wǎng)絡(luò)和連接到云計(jì)算服務(wù)的執(zhí)行程序處理各類信息。這個(gè)技術(shù)可以讓我們生活中的一切,從街邊路燈到港口都變得更加“智能”。

我們對(duì)IoT的看法與其他供應(yīng)商有所差異。我們會(huì)通過相同的方法向客戶提供私有云解決方案,并使用現(xiàn)有的開源項(xiàng)目對(duì)云服務(wù)的實(shí)現(xiàn)方式進(jìn)行擴(kuò)展,借此打造通用IoT平臺(tái),以應(yīng)對(duì)不同用例的需求。為此我們定義了下列需求:

開源軟件 整個(gè)平臺(tái)必須基于現(xiàn)有的開源解決方案,并且絕對(duì)不能只由某一家供應(yīng)商開發(fā)。我們希望使用現(xiàn)有的平臺(tái):OpenStack、Kubernetes、Docker、OpenContrail等。

不依賴具體硬件和供應(yīng)商 軟硬件方面不能存在供應(yīng)商鎖定的情況。IoT網(wǎng)關(guān)CPU必須支持x86/64或ARM架構(gòu)。我們不想因?yàn)榘嘿F的專有裝置而被迫只能使用某一供應(yīng)商的產(chǎn)品。

**互操作性**IoT平臺(tái)必須是通用的,可以適合不同用例。舉例來說,如果某一IoT網(wǎng)關(guān)可用于統(tǒng)計(jì)街燈數(shù)量,那么也必須能通過相同的方式將其用于智能工廠或工業(yè)4.0應(yīng)用程序中。

因此我們?cè)O(shè)計(jì)出涉及OpenStack、Kubernetes、OpenContrail和Docker開源項(xiàng)目的下列高層體系結(jié)構(gòu)。

  開源軟件

整個(gè)平臺(tái)必須基于現(xiàn)有的開源解決方案,并且絕對(duì)不能只由某一家供應(yīng)商開發(fā)。我們希望使用現(xiàn)有的平臺(tái):OpenStack、Kubernetes、Docker、OpenContrail等。

不依賴具體硬件和供應(yīng)商

軟硬件方面不能存在供應(yīng)商鎖定的情況。IoT網(wǎng)關(guān)CPU必須支持x86/64或ARM架構(gòu)。我們不想因?yàn)榘嘿F的專有裝置而被迫只能使用某一供應(yīng)商的產(chǎn)品。

互操作性

IoT平臺(tái)必須是通用的,可以適合不同用例。舉例來說,如果某一IoT網(wǎng)關(guān)可用于統(tǒng)計(jì)街燈數(shù)量,那么也必須能通過相同的方式將其用于智能工廠或工業(yè)4.0應(yīng)用程序中。

下文技術(shù)概述一節(jié)將詳細(xì)介紹其中的技術(shù)細(xì)節(jié)。首先一起來看看我們構(gòu)建解決方案原型的兩個(gè)用例。

智能城市原型

第一個(gè)用例是為捷克共和國一個(gè)名為皮斯克(Pisek)的小城市構(gòu)建的智能城市項(xiàng)目。智能城市的理念和架構(gòu)需要部署超過3000個(gè)端點(diǎn),以及大約300個(gè)IoT網(wǎng)關(guān),這些網(wǎng)關(guān)以高可用模式運(yùn)行在Kubernetes驅(qū)動(dòng)的容器中。該解決方案還包含開放數(shù)據(jù)門戶,并通過數(shù)據(jù)API為第三方公司提供了下列信息:

交通流量、路線、停車位監(jiān)控和管理能源的使用以實(shí)現(xiàn)節(jié)能電子商務(wù)、營銷、旅游信息環(huán)境分析生活方式、社交服務(wù)、社交網(wǎng)絡(luò)

該解決方案使用基于RaspberryPi 2的IoT網(wǎng)關(guān)。來自網(wǎng)關(guān)的數(shù)據(jù)存儲(chǔ)在Graphite中,通過自行開發(fā)的數(shù)據(jù)挖掘應(yīng)用程序進(jìn)行處理,將結(jié)果顯示在基于Leonardo CMS構(gòu)建的市民門戶網(wǎng)站中。Leonardo CMS是一種Web服務(wù),可以將復(fù)雜的可視化結(jié)果混合顯示在一起呈現(xiàn)任何內(nèi)容。這個(gè)開放數(shù)據(jù)門戶可以通過可視化儀表盤或API提供數(shù)據(jù)訪問。

下圖展示了特定時(shí)間內(nèi),Kollarova和Zizkova兩條街道十字路口的機(jī)動(dòng)車和行人通行情況。

若要詳細(xì)了解該項(xiàng)目,建議閱讀奧斯丁SuperUser雜志《更進(jìn)一步,讓城市變得更智能》一文,或觀看KubeCon 2016演講。

OpenStack奧斯丁峰會(huì)上的智能會(huì)議系統(tǒng)

為了證明我們的IoT平臺(tái)真正不依賴某種應(yīng)用程序環(huán)境,在OpenStack峰會(huì)過程中,我們將智能城市項(xiàng)目中使用的IoT網(wǎng)關(guān)(RaspberryPi 2)帶到了奧斯丁會(huì)議中心,通過基于IQRF的網(wǎng)狀網(wǎng)絡(luò)將其與傳感器連接在一起,借此測(cè)量濕度、溫度,以及二氧化碳濃度。這個(gè)演示證明了IoT網(wǎng)關(guān)可以對(duì)IQRF、藍(lán)牙、GPIO,以及任何其他基于Linux平臺(tái)的通信標(biāo)準(zhǔn)進(jìn)行管理并收集數(shù)據(jù)。

我們?cè)跁?huì)議中心三層樓內(nèi)部署了20個(gè)傳感器和20個(gè)路由器,通過一個(gè)IoT網(wǎng)關(guān)接收來自整個(gè)IQRF網(wǎng)狀網(wǎng)絡(luò)的數(shù)據(jù),并將其中繼至一個(gè)專門的時(shí)序數(shù)據(jù)庫,本例中使用的數(shù)據(jù)庫是Graphite。數(shù)據(jù)收集器使用了Docker容器內(nèi)運(yùn)行,通過Kubernetes管理的MQQT-Java網(wǎng)橋。其中最有趣的地方是距離,運(yùn)行Docker容器的Raspberry位于美國奧斯丁的會(huì)議中心內(nèi),而虛擬機(jī)運(yùn)行在歐洲的數(shù)據(jù)中心。動(dòng)態(tài)網(wǎng)絡(luò)覆蓋渠道由OpenContrail SDN提供。下文技術(shù)概述一節(jié)還將對(duì)該平臺(tái)進(jìn)行進(jìn)一步介紹。

下圖展示了傳感器和路由器發(fā)現(xiàn)過程中找到的一個(gè)無線IQRF網(wǎng)狀網(wǎng)絡(luò)。區(qū)域0 - 1覆蓋會(huì)議中心一樓,區(qū)域2 - 4覆蓋四樓。

IQRF是一種工作在亞GHz ISM波段的無線網(wǎng)狀網(wǎng)絡(luò)技術(shù),可提供簡(jiǎn)單易行的集成能力,良好的互操作性,最多支持240個(gè)躍點(diǎn)的健壯網(wǎng)狀網(wǎng)絡(luò)連接,工作距離可達(dá)數(shù)百米,能耗非常低。

下圖展示了會(huì)議中心二樓不同房間的二氧化碳實(shí)時(shí)濃度。歷史圖表顯示了自周一以來的數(shù)值。從中可以直觀了解到主題演講的開始時(shí)間和午飯時(shí)間。

  奧斯丁這套平臺(tái)的數(shù)據(jù)收集方面,我們使用了下列服務(wù)架構(gòu)。

  技術(shù)概述

本節(jié)進(jìn)一步介紹了這個(gè)IoT平臺(tái)的一些技術(shù)構(gòu)思。這個(gè)IoT平臺(tái)以“通用”為愿景,旨在以安全的方式收集、管理和處理來自數(shù)千個(gè)端點(diǎn)的數(shù)據(jù),并以動(dòng)態(tài)的方式集中管理所有數(shù)據(jù)。

因此整個(gè)體系結(jié)構(gòu)可以分為下列兩大主要部分:

數(shù)據(jù)中心

數(shù)據(jù)中心是整個(gè)IoT平臺(tái)的中心管理點(diǎn)。其中包含OpenStack IaaS云,以及伴隨云同時(shí)運(yùn)行的虛擬機(jī)和SDN控制面板。這些計(jì)算機(jī)負(fù)責(zé)了時(shí)序存儲(chǔ)、數(shù)據(jù)處理群集、數(shù)據(jù)API網(wǎng)關(guān)訪問,以及可視化Web服務(wù)等任務(wù)。

網(wǎng)關(guān)

IoT網(wǎng)關(guān)可位于任何目標(biāo)位置,例如街燈、工廠機(jī)械、家用電器中。SDN提供的傳輸層將遠(yuǎn)程IoT網(wǎng)關(guān)與云服務(wù)連接在一起。網(wǎng)關(guān)可支持多平臺(tái),甚至可能混合使用了x86/64和ARM設(shè)備。該技術(shù)可以通過一個(gè)網(wǎng)關(guān)為多個(gè)客戶承載多種傳感器平臺(tái),這一特性是通過微服務(wù)分隔(Docker容器)和Kubernetes對(duì)多租戶的支持實(shí)現(xiàn)的。整個(gè)平臺(tái)可以提供可伸縮的多租戶環(huán)境,無論多遠(yuǎn)距離的應(yīng)用程序和傳感器都可位于同一個(gè)網(wǎng)絡(luò)中。

下列架構(gòu)圖展示了數(shù)據(jù)中心層和網(wǎng)關(guān)端的相關(guān)組件。下文架構(gòu)詳情一節(jié)提供了進(jìn)一步介紹。

  架構(gòu)詳情

架構(gòu)圖展示了整個(gè)IoT平臺(tái)在體系結(jié)構(gòu)方面的邏輯視圖。左側(cè)是數(shù)據(jù)中心,右側(cè)是上文提到的網(wǎng)關(guān)。

從下圖可以看到,這里使用OpenStack作為承載所有控制服務(wù)的云,同時(shí)所有大數(shù)據(jù)處理和前端可視化任務(wù)也是在這里進(jìn)行的。網(wǎng)關(guān)使用Kubernetes對(duì)服務(wù)進(jìn)行微分隔,為了實(shí)現(xiàn)多租戶功能并確保不同傳感器的安全,這一步是必須的。同時(shí)該平臺(tái)還使用OpenContrail將兩端連接在一起,并為Kubernetes POD和OpenStack Project虛擬機(jī)提供網(wǎng)絡(luò)分隔。

上文曾提到過,分隔是通過SDN覆蓋實(shí)現(xiàn)的。這里的重點(diǎn)在于數(shù)據(jù)中心邊緣路由器和IoT網(wǎng)關(guān)之間只存在IP連接。網(wǎng)關(guān)操作系統(tǒng)和數(shù)據(jù)中心邊緣路由器之間的VPN連接可以看作該平臺(tái)的最底層,該層之上是SDN,在這里可以通過OpenContrail實(shí)現(xiàn)虛擬機(jī)(OpenStack云)和容器(網(wǎng)關(guān))之間的直接通信。這種方法使得用戶可以自由選擇不同類型的傳感器和執(zhí)行程序,為其設(shè)置權(quán)限,并用安全的方式將其與云中負(fù)責(zé)任務(wù)處理的應(yīng)用程序連接在一起。

數(shù)據(jù)中心包含下列服務(wù):

管理服務(wù)

硬件群集中運(yùn)行的虛擬機(jī)承載了所有控制服務(wù):OpenStack控制器、OpenContrail控制器(SDN)、Kubernetes主機(jī)、Salt主機(jī)。

OpenStack云

OpenStack項(xiàng)目為數(shù)據(jù)庫(Graphite、Influxdb、openTSDB)、大數(shù)據(jù)處理(Hadoop),以及數(shù)據(jù)可視化(Grafana、LeonardoCMS)所涉及的不同虛擬機(jī)服務(wù)提供了分隔和劃分。這個(gè)云運(yùn)行在KVM hypervisor之上,通過OpenContrail的Neutron插件實(shí)現(xiàn)網(wǎng)絡(luò)連接。

邊緣路由器

OpenContrail會(huì)與數(shù)據(jù)中心邊緣路由器創(chuàng)建iBGP對(duì)端,這樣便可以將OpenStack虛擬機(jī)和Kubernetes POD的動(dòng)態(tài)網(wǎng)絡(luò)路由傳播至IoT網(wǎng)關(guān)。該設(shè)備可以MPLSoverGRE或MPLSoverUDP方式創(chuàng)建標(biāo)準(zhǔn)的L3VPN。

遠(yuǎn)程網(wǎng)關(guān)包含下列組件:

Kubernetes Minion

Kubernetes minion負(fù)責(zé)與數(shù)據(jù)中心內(nèi)的Kubernetes主機(jī)通信,并負(fù)責(zé)管理Kubeletand POD。Kubelet使用了Opencontrail插件,借此將Docker容器與vRouter代理連接在一起。

Kubernetes POD

Kubernetes POD是連接到vRouter的一個(gè)或多個(gè)Docker容器。POD可按照標(biāo)簽進(jìn)行分隔,這樣即可啟動(dòng)不同應(yīng)用程序,從不同消息總線以IQRF、藍(lán)牙,或GPIO方式讀取數(shù)據(jù)。

Docker容器

Kubernetes POD中的Docker容器為整個(gè)平臺(tái)提供了極大的收益,可在無需特別安裝的情況下支持任何類型的操作系統(tǒng)。例如,IQRF使用了某一版本的簡(jiǎn)單Java應(yīng)用程序,可通過容器在幾分鐘內(nèi)交付,并且不會(huì)與網(wǎng)關(guān)本身的操作系統(tǒng)產(chǎn)生不匹配的情況。

應(yīng)用程序視圖

下列架構(gòu)圖詳細(xì)介紹了應(yīng)用程序視圖。從圖中可知,借助OpenContrail覆蓋的幫助,OpenStack云內(nèi)部的虛擬機(jī)可以通過L2或L3私有網(wǎng)絡(luò)聯(lián)系位于任何地理位置的Docker容器。因此應(yīng)用程序開發(fā)者可以使用標(biāo)準(zhǔn)云平臺(tái)中用過的同一套工具。他們可以通過HEAT部署虛擬機(jī)應(yīng)用程序控制器,隨后通過簡(jiǎn)單的Yaml文件在遠(yuǎn)程網(wǎng)關(guān)上的容器中部署Kubernetes服務(wù)。

以通過環(huán)境傳感器收集數(shù)據(jù)的做法為例:傳感器直接連接至容器,數(shù)據(jù)在Docker容器中處理后發(fā)送至Graphite時(shí)序數(shù)據(jù)庫。因?yàn)槲覀兿M詧D形化方式實(shí)時(shí)呈現(xiàn)數(shù)據(jù),因此使用了另一個(gè)虛擬機(jī),通過Leonardo CMS借助Graphite API讀取數(shù)據(jù),并將其顯示在網(wǎng)站上。據(jù)此我們可以通過同一個(gè)云平臺(tái),按照相同的原則創(chuàng)建不同項(xiàng)目,并使用多種輸入和輸出位置。

結(jié)論

我們希望對(duì)這個(gè)IoT平臺(tái)的愿景和已經(jīng)部署的原型進(jìn)行一個(gè)簡(jiǎn)要的介紹。目前我們正在完成整個(gè)智慧城市解決方案的細(xì)節(jié)設(shè)計(jì)工作。

今年在奧斯丁舉行的OpenStack峰會(huì)和倫敦舉行的KubeCon上對(duì)該方案進(jìn)行介紹后,我們收到了來自社區(qū)成員的大量反饋。在IoT平臺(tái)的安全性、彈性,以及性能方面,我們的構(gòu)想得到了大家的認(rèn)可,很多技術(shù)合作伙伴希望通過合作對(duì)我們的IoT平臺(tái)進(jìn)行擴(kuò)展,借此構(gòu)建他們自己的解決方案。我們現(xiàn)在正在著手有關(guān)工業(yè)4.0的構(gòu)想,打算通過開源項(xiàng)目創(chuàng)建第一個(gè)智能工廠。

作者:Jakub Pavlik
閱讀英文原文:OpenStack and Kubernetes join forces for an Internet of Things platform

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)