基于 OpenYurt EdgeX Foundry 的云边端一体化解决方案
作者|VMWare 主任工程師:劉武明、浙江大學(xué) SEL 實(shí)驗(yàn)室研究生:陳濤
審核&校對(duì):溪洋、海珠
編輯&排版:雯燕
背景介紹
邊緣計(jì)算區(qū)別于傳統(tǒng)的中心云計(jì)算模式,并被廣泛地應(yīng)用于汽車、農(nóng)業(yè)、能源、交通等各行各業(yè)。Gartner 將邊緣計(jì)算分為 “Cloud” 、“Far Edge” 、“Near Edge” 三部分,分別對(duì)應(yīng)常見的公共云/私有云、云下 IDC/CDN 節(jié)點(diǎn)以及設(shè)備終端;即常說(shuō)的 “云、邊、端” 三層結(jié)構(gòu)。隨著算力和業(yè)務(wù)的逐級(jí)下沉,網(wǎng)絡(luò)環(huán)境越來(lái)越復(fù)雜,設(shè)備資源越來(lái)越受限,設(shè)備架構(gòu)越來(lái)越豐富,這些變化給運(yùn)維管理邊緣節(jié)點(diǎn)、設(shè)備,提高邊緣應(yīng)用的可靠性、資源的利用率等方面,都帶來(lái)了巨大的挑戰(zhàn)。
近日,OpenYurt 與 EdgeX Foundry 社區(qū)合作,完成了集成對(duì)接:從 v0.5.0 版本開始,OpenYurt 將正式支持部署和管理 EdgeX Foundry,并以云原生的方式管理端設(shè)備,雙方將共同幫助開發(fā)者輕松、高效地解決物聯(lián)網(wǎng)邊緣計(jì)算場(chǎng)景下端設(shè)備管理和運(yùn)維的挑戰(zhàn)。
1、OpenYurt:非侵入式的邊緣云原生智能平臺(tái)
OpenYurt 基于原生 Kubernetes 構(gòu)建,由阿里云于 2020 年 5 月開源,并于同年 9 月份入選 CNCF SandBox 項(xiàng)目,是業(yè)界首個(gè)對(duì) Kubernetes 無(wú)侵入的邊緣計(jì)算云原生開源平臺(tái)。OpenYurt 主打 “云邊一體化” 的概念,針對(duì)邊緣計(jì)算場(chǎng)景中的網(wǎng)絡(luò)環(huán)境復(fù)雜、大規(guī)模應(yīng)用交付、運(yùn)維困難等痛點(diǎn),提供了邊緣自治、云邊運(yùn)維通道、單元化部署、一鍵式集群轉(zhuǎn)化等能力,通過(guò)將云邊節(jié)點(diǎn)統(tǒng)一管理,使得邊緣節(jié)點(diǎn)擁有與云端相同的能力,幫助開發(fā)者輕松完成在海量邊緣資源上的大規(guī)模應(yīng)用交付、運(yùn)維、管控。
2、EdgeX Foundry:邊緣物聯(lián)網(wǎng)管理平臺(tái)
EdgeX Foundry 是一款由生態(tài)系統(tǒng)提供強(qiáng)力支持的邊緣物聯(lián)網(wǎng)即插即用型、開放式軟件平臺(tái)。它具有高度靈活和可擴(kuò)展性,可以大大的降低應(yīng)用與邊緣設(shè)備,傳感器等硬件互操作的復(fù)雜性。EdgeX Foundy 采用分層和服務(wù)的設(shè)計(jì),從下至上分別是設(shè)備服務(wù),核心服務(wù),支持服務(wù),應(yīng)用服務(wù)以及安全和管理兩個(gè)輔助服務(wù)。EdgeX Foundry 的分層和服務(wù)為邊緣設(shè)備/節(jié)點(diǎn)和云/企業(yè)應(yīng)用之間提供了一個(gè)雙向轉(zhuǎn)換引擎。可以將傳感器和節(jié)點(diǎn)數(shù)據(jù)按特定格式傳輸?shù)綉?yīng)用,也可以將應(yīng)用指令下發(fā)到邊緣設(shè)備。
- 設(shè)備服務(wù)層:設(shè)備服務(wù)將“物”即傳感器和設(shè)備連接到 EdgeX 的其余部分。設(shè)備服務(wù)是與 “物” 交互的邊緣連接器,包括但不限于警報(bào)系統(tǒng)、家庭和辦公樓中的供暖和空調(diào)系統(tǒng)、灌溉系統(tǒng)、無(wú)人機(jī)、自動(dòng)化運(yùn)輸(例如一些鐵路系統(tǒng))等等。
- 核心服務(wù)層:核心服務(wù)包括核心數(shù)據(jù)庫(kù),核心元數(shù)據(jù),配置和注冊(cè)表以及核心命令/控制四個(gè)服務(wù)。他們是對(duì)各類設(shè)備的一層抽象,保存和收集傳感器的數(shù)據(jù)和元數(shù)據(jù),以及來(lái)自應(yīng)用的命令/控制以及配置。
- 支持服務(wù)層:主要包括警報(bào)服務(wù)、通知服務(wù)、計(jì)劃服務(wù),以及規(guī)則引擎。
- 應(yīng)用服務(wù)層:應(yīng)用服務(wù)負(fù)責(zé)從 EdgeX 提取、處理、轉(zhuǎn)換和發(fā)送感測(cè)數(shù)據(jù)到用戶選擇的斷點(diǎn)或者流程。EdgeX 現(xiàn)在提供了很多應(yīng)用程序服務(wù)示例以將數(shù)據(jù)發(fā)送到一些主要的云提供商。
- 安全服務(wù)層:保護(hù) EdgeX 管理的設(shè)備、傳感器和其它物聯(lián)網(wǎng)對(duì)象的數(shù)據(jù)以及控制。EdgeX 的安全功能建立在開放接口、可插拔、可更換模塊的基礎(chǔ)之上。
- 管理服務(wù):為外部管理系統(tǒng)提供統(tǒng)一的借口以便于其啟動(dòng)、停止、重啟 Edgex 服務(wù)、獲取服務(wù)的狀態(tài)或者相關(guān)指標(biāo),以便于 EdgeX 服務(wù)可以被監(jiān)控。
拓展 “端” 的能力
根據(jù)上述介紹可以看到,OpenYurt 擅長(zhǎng)以非侵入的方式,實(shí)現(xiàn)云邊資源的統(tǒng)一管理和運(yùn)維,使得邊緣節(jié)點(diǎn)擁有云端相同的能力。但隨著將相關(guān)納管能力拓展至 “ 端 ”這一層時(shí),由于近端設(shè)備異構(gòu)資源支持復(fù)雜、通信方式多樣、分布位置分散等特點(diǎn),會(huì)出現(xiàn)以下問(wèn)題:
- 為了支持各種邊緣設(shè)備,現(xiàn)有的 OpenYurt 框架必須為每個(gè)類別的設(shè)備開發(fā)專用的適配器;
- 在直接納管端設(shè)備的過(guò)程中,現(xiàn)有解決方案要么改變 Kubernetes 架構(gòu),要么顯著修改核心組件,丟失一些上游 Kubernetes 特性的同時(shí),與 OpenYurt 的非侵入式理念相悖。
從 v0.5.0 版本開始,Openyurt 和 EdgeX Foundry 社區(qū)通過(guò)可擴(kuò)展方式深度融合,在邊緣計(jì)算、設(shè)備管理、物模型定義、云原生 IoT 領(lǐng)域進(jìn)一步合作,實(shí)現(xiàn) “云、邊、端” 三者的強(qiáng)力協(xié)同。OpenYurt 通過(guò)集成 EdgeX Foundry 設(shè)備管理平臺(tái),正式支持端設(shè)備的管理能力。用戶可以使用 Yurt-edgex-manager 組件一鍵式部署 Edgex Foundry 實(shí)例,并通過(guò)部署 Yurt-device-controller 組件打通邊緣設(shè)備管理平臺(tái)和云端之間的運(yùn)維管理通道,允許用戶聲明式地管理邊緣設(shè)備,為用戶提供 Kubernetes 原生管理端設(shè)備的體驗(yàn)。
OpenYurt v0.5.0 設(shè)備管理解決方案
1、使用 OpenYurt 編排部署 EdgeX Foundry
在最新 OpenYurt 中引入了一個(gè) Yurt-edgex-controller 的控制器來(lái)管理 EdgeX CR。EdgeX CR 是對(duì) EdgeX Foundy 在 OpenYurt 中部署的一個(gè)抽象,用戶可以操作 CR 的方式來(lái)管理 EdgeX 的部署,更新,刪除。不再需要寫復(fù)雜的 Yaml 文件以及 Helm Chart。
用戶只需要?jiǎng)?chuàng)建一個(gè) EdgeX 的 CR,Yurt-edgex-controller 會(huì)根據(jù) CR 中版本以及對(duì)應(yīng)的 Nodepool 的名字部署 EdgeX。用戶在一個(gè)集群中可以根據(jù) Nodepool 的數(shù)量部署多個(gè) EdgeX,每個(gè) EdgeX 的版本,以及包括的 EdgeX 服務(wù)可以配置。
- EdgeX: 是一套 EdgeX foundy 部署的抽象,包括 EdgeX foundry 的版本,以及需要部署的 Nodepool 的名字。基礎(chǔ)的 EdgeX CR 包括 8 個(gè)基礎(chǔ)的 EdgeX 服務(wù)和部署,此外還提供 AdditionalDeployment 和 Additional Service 的字段,讓用戶可以部署任何所需的 EdgeX 組件和第三方應(yīng)用。
在 OpenYurt 中,EdgeX 的服務(wù)通過(guò)以 Kubernetes 服務(wù)的形式來(lái)對(duì)外提供訪問(wèn),盡管不同的 EdgeX 實(shí)例使用相同 Kubernates 服務(wù)名稱,ServiceToploy 會(huì)確保 EdgeX 組件只能訪問(wèn)屬于同一 EdgeX 實(shí)例的其他組件,而不會(huì)發(fā)生交叉訪問(wèn)的情緒。Yurt-edgex-controller 利用 unitedeployment 的能力,在 Nodepool 中部署 EdgeX 的組件。
2、云原生 IoT 模型
設(shè)備信息抽象
為管理現(xiàn)實(shí)世界中的設(shè)備,需要對(duì)設(shè)備管理相關(guān)的服務(wù)進(jìn)行抽象,Yurt-device-controller 作為連通云和邊緣管理平臺(tái)的組件,抽象出了三個(gè) CRD,用于映射對(duì)應(yīng)設(shè)備管理平臺(tái)上的資源,它們分別是 DeviceProfile、DeviceService 和 Device:
- DeviceProfile:描述了使用相同協(xié)議的一種設(shè)備類型,其中包括一些通用信息,如制造商名稱、設(shè)備描述和設(shè)備型號(hào)。DeviceProfile 還定義了此類設(shè)備提供的資源類型(例如,溫度、濕度)以及如何讀取/寫入這些資源。每個(gè) device 都需要關(guān)聯(lián)一個(gè) DeviceProfile;
- DeviceService:是與設(shè)備交互的邊緣連接器在云端的映射,定義了如何將設(shè)備接入到邊緣設(shè)備管理平臺(tái),包括設(shè)備的通信協(xié)議,通信地址等信息。每個(gè) device 都需要關(guān)聯(lián)一個(gè) DeviceService;
- Device:是現(xiàn)實(shí)世界中端設(shè)備的映射,例如:電器、警報(bào)系統(tǒng)、照明、傳感器等設(shè)備,它給出了特定設(shè)備的詳細(xì)定義,包括關(guān)聯(lián)的 DeviceProfile(屬于哪類設(shè)備)、關(guān)聯(lián)的 DeviceService(使用何種通信方式)以及設(shè)備特有屬性(如照明設(shè)備的開關(guān)狀態(tài)等)。
設(shè)備管理架構(gòu)
通過(guò)抽象出上述三種 CRD,可以反應(yīng)出設(shè)備基本的狀態(tài)信息,再使用對(duì)應(yīng)的 controller 與邊緣設(shè)備管理平臺(tái)進(jìn)行交互,可以將邊側(cè)發(fā)現(xiàn)的端設(shè)備及時(shí)映射至云端;與此同時(shí),Yurt-device-controller 組件將云端針對(duì)設(shè)備屬性的修改(例如:設(shè)置照明設(shè)備的開關(guān)狀態(tài))同步至端設(shè)備上,從而影響真實(shí)世界中的物理設(shè)備。用戶只需要聲明式地修改 CRs 的相應(yīng)字段,以一種云原生的方式即可達(dá)到運(yùn)維、管理復(fù)雜端設(shè)備的目的,下面是組成 Yurt-device-controller 的三個(gè)組件:
- DeviceProfile controller:它可以將邊緣平臺(tái)中的 deviceProfile 對(duì)象抽象為 deviceProfile CR 并同步到云端。在 deviceProfile controller 的支持下,用戶可以在云端查看、創(chuàng)建或刪除邊緣平臺(tái)的 deviceProfile。
- DeviceService controller:它可以將邊緣平臺(tái)中的 deviceService 對(duì)象抽象為 deviceService CR 并同步到云端。在 deviceService controller 的支持下,用戶可以在云端查看、創(chuàng)建或刪除邊緣平臺(tái)的 deviceService 信息。
- Device controller:它可以將邊緣平臺(tái)中的 device 對(duì)象抽象為 device CR 并同步到云端。在 device controller 的支持下,用戶可以通過(guò)聲明式修改云端 device CR 的方式來(lái)管理邊緣平臺(tái)上的設(shè)備信息,如創(chuàng)建設(shè)備、刪除設(shè)備、更新設(shè)備屬性(如設(shè)置燈的開和關(guān)等)。
下面是云邊端三者整體的架構(gòu)模型:
邊緣端設(shè)備的通信范圍往往局限于某一網(wǎng)絡(luò)區(qū)域內(nèi),因此可以將同一網(wǎng)絡(luò)區(qū)域內(nèi)的邊緣節(jié)點(diǎn)劃分為一個(gè)節(jié)點(diǎn)池,在每一個(gè)節(jié)點(diǎn)池內(nèi)部署一個(gè) Edgex Foundry 實(shí)例和一個(gè) yurt-device-controller 組件:
- 在與云端 apiserver 的通信中,Yurt-device-controller 只會(huì)監(jiān)聽屬于該節(jié)點(diǎn)池內(nèi)的設(shè)備對(duì)象,并將更新信息通過(guò) Edgex Foundry 實(shí)例及時(shí)地同步至對(duì)應(yīng)的設(shè)備上;
- 在與 Edgex Foundry 實(shí)例的通信中,復(fù)用 YurtHub、節(jié)點(diǎn)池以及單元化部署等能力,Yurt-device-controller 組件只會(huì)訪問(wèn)本節(jié)點(diǎn)池內(nèi)的 Edgex Foundry 實(shí)例,并將接入該節(jié)點(diǎn)池內(nèi)的設(shè)備信息抽象為 device、deviceService 和 deviceProfile 對(duì)象同步至云端。
社區(qū)合作規(guī)劃
未來(lái),雙方還將面向 IoT 行業(yè)繼續(xù)探索云原生邊緣設(shè)備管理的解決方案,并吸引更多輕量級(jí)邊緣設(shè)備管理平臺(tái)加入 OpenYurt 生態(tài),使端設(shè)備的管理更加便捷、高效以及云原生。
相關(guān)鏈接:
1)Yurt-edgex-manager:
https://github.com/openyurtio/yurt-edgex-manager
2)Yurt-device-controller:
https://github.com/openyurtio/yurt-device-controller
3)OpenYurt 官網(wǎng):
https://openyurt.io/en-us/
4)EdgeX Foundry官網(wǎng):
https://www.edgexfoundry.org/
戳這里,立即了解 OpenYurt 項(xiàng)目!
了解更多相關(guān)信息,請(qǐng)掃描下方二維碼或搜索微信號(hào)(AlibabaCloud888)添加云原生小助手!獲取更多相關(guān)資訊!
總結(jié)
以上是生活随笔為你收集整理的基于 OpenYurt EdgeX Foundry 的云边端一体化解决方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于 Istio 的全链路灰度方案探索和
- 下一篇: 消息队列RocketMQ应对双十一流量洪