基於 OpenYurt & EdgeX Foundry 的雲邊端一體化解決方案


作者|VMWare 主任工程師:劉武明、浙江大學 SEL 實驗室研究生:陳濤
審核&校對:溪洋、海珠
編輯&排版:雯燕

背景介紹

邊緣計算區別於傳統的中心雲計算模式,並被廣泛地應用於汽車、農業、能源、交通等各行各業。Gartner 將邊緣計算分為 "Cloud" 、"Far Edge" 、"Near Edge" 三部分,分別對應常見的公共雲/私有雲、雲下 IDC/CDN 節點以及設備終端;即常說的 “雲、邊、端” 三層結構。隨着算力和業務的逐級下沉,網絡環境越來越復雜,設備資源越來越受限,設備架構越來越豐富,這些變化給運維管理邊緣節點、設備,提高邊緣應用的可靠性、資源的利用率等方面,都帶來了巨大的挑戰。

近日,OpenYurt 與 EdgeX Foundry 社區合作,完成了集成對接:從 v0.5.0 版本開始,OpenYurt 將正式支持部署和管理 EdgeX Foundry,並以雲原生的方式管理端設備,雙方將共同幫助開發者輕松、高效地解決物聯網邊緣計算場景下端設備管理和運維的挑戰。

1、OpenYurt:非侵入式的邊緣雲原生智能平台

OpenYurt 基於原生 Kubernetes 構建,由阿里雲於 2020 年 5 月開源,並於同年 9 月份入選 CNCF SandBox 項目,是業界首個對 Kubernetes 無侵入的邊緣計算雲原生開源平台。OpenYurt 主打 “雲邊一體化” 的概念,針對邊緣計算場景中的網絡環境復雜、大規模應用交付、運維困難等痛點,提供了邊緣自治、雲邊運維通道、單元化部署、一鍵式集群轉化等能力,通過將雲邊節點統一管理,使得邊緣節點擁有與雲端相同的能力,幫助開發者輕松完成在海量邊緣資源上的大規模應用交付、運維、管控。

圖片 1.png

2、EdgeX Foundry:邊緣物聯網管理平台

EdgeX Foundry 是一款由生態系統提供強力支持的邊緣物聯網即插即用型、開放式軟件平台。它具有高度靈活和可擴展性,可以大大的降低應用與邊緣設備,傳感器等硬件互操作的復雜性。EdgeX Foundy 采用分層和服務的設計,從下至上分別是設備服務,核心服務,支持服務,應用服務以及安全和管理兩個輔助服務。EdgeX Foundry 的分層和服務為邊緣設備/節點和雲/企業應用之間提供了一個雙向轉換引擎。可以將傳感器和節點數據按特定格式傳輸到應用,也可以將應用指令下發到邊緣設備。

圖片 2.png

  • 設備服務層:設備服務將“物”即傳感器和設備連接到 EdgeX 的其余部分。設備服務是與 “物” 交互的邊緣連接器,包括但不限於警報系統、家庭和辦公樓中的供暖和空調系統、灌溉系統、無人機、自動化運輸(例如一些鐵路系統)等等。
  • 核心服務層:核心服務包括核心數據庫,核心元數據,配置和注冊表以及核心命令/控制四個服務。他們是對各類設備的一層抽象,保存和收集傳感器的數據和元數據,以及來自應用的命令/控制以及配置。
  • 支持服務層:主要包括警報服務、通知服務、計划服務,以及規則引擎。
  • 應用服務層:應用服務負責從 EdgeX 提取、處理、轉換和發送感測數據到用戶選擇的斷點或者流程。EdgeX 現在提供了很多應用程序服務示例以將數據發送到一些主要的雲提供商。
  • 安全服務層:保護 EdgeX 管理的設備、傳感器和其它物聯網對象的數據以及控制。EdgeX 的安全功能建立在開放接口、可插拔、可更換模塊的基礎之上。
  • 管理服務:為外部管理系統提供統一的借口以便於其啟動、停止、重啟 Edgex 服務、獲取服務的狀態或者相關指標,以便於 EdgeX 服務可以被監控。

拓展 “端” 的能力

根據上述介紹可以看到,OpenYurt 擅長以非侵入的方式,實現雲邊資源的統一管理和運維,使得邊緣節點擁有雲端相同的能力。但隨着將相關納管能力拓展至 “ 端 ”這一層時,由於近端設備異構資源支持復雜、通信方式多樣、分布位置分散等特點,會出現以下問題:

  • 為了支持各種邊緣設備,現有的 OpenYurt 框架必須為每個類別的設備開發專用的適配器;
  • 在直接納管端設備的過程中,現有解決方案要么改變 Kubernetes 架構,要么顯著修改核心組件,丟失一些上游 Kubernetes 特性的同時,與 OpenYurt 的非侵入式理念相悖。

從 v0.5.0 版本開始,Openyurt 和 EdgeX Foundry 社區通過可擴展方式深度融合,在邊緣計算、設備管理、物模型定義、雲原生 IoT 領域進一步合作,實現 “雲、邊、端” 三者的強力協同。OpenYurt 通過集成 EdgeX Foundry 設備管理平台,正式支持端設備的管理能力。用戶可以使用 Yurt-edgex-manager 組件一鍵式部署 Edgex Foundry 實例,並通過部署 Yurt-device-controller 組件打通邊緣設備管理平台和雲端之間的運維管理通道,允許用戶聲明式地管理邊緣設備,為用戶提供 Kubernetes 原生管理端設備的體驗。

OpenYurt v0.5.0 設備管理解決方案

1、使用 OpenYurt 編排部署 EdgeX Foundry

在最新 OpenYurt 中引入了一個 Yurt-edgex-controller 的控制器來管理 EdgeX CR。EdgeX CR 是對 EdgeX Foundy 在 OpenYurt 中部署的一個抽象,用戶可以操作 CR 的方式來管理 EdgeX 的部署,更新,刪除。不再需要寫復雜的 Yaml 文件以及 Helm Chart。

用戶只需要創建一個 EdgeX 的 CR,Yurt-edgex-controller 會根據 CR 中版本以及對應的 Nodepool 的名字部署 EdgeX。用戶在一個集群中可以根據 Nodepool 的數量部署多個 EdgeX,每個 EdgeX 的版本,以及包括的 EdgeX 服務可以配置。

圖片 3.png

  • EdgeX: 是一套 EdgeX foundy 部署的抽象,包括 EdgeX foundry 的版本,以及需要部署的 Nodepool 的名字。基礎的 EdgeX CR 包括 8 個基礎的 EdgeX 服務和部署,此外還提供 AdditionalDeployment 和 Additional Service 的字段,讓用戶可以部署任何所需的 EdgeX 組件和第三方應用。

在 OpenYurt 中,EdgeX 的服務通過以 Kubernetes 服務的形式來對外提供訪問,盡管不同的 EdgeX 實例使用相同 Kubernates 服務名稱,ServiceToploy 會確保 EdgeX 組件只能訪問屬於同一 EdgeX 實例的其他組件,而不會發生交叉訪問的情緒。Yurt-edgex-controller 利用 unitedeployment 的能力,在 Nodepool 中部署 EdgeX 的組件。

2、雲原生 IoT 模型

設備信息抽象

為管理現實世界中的設備,需要對設備管理相關的服務進行抽象,Yurt-device-controller 作為連通雲和邊緣管理平台的組件,抽象出了三個 CRD,用於映射對應設備管理平台上的資源,它們分別是 DeviceProfile、DeviceService 和 Device:

  • DeviceProfile:描述了使用相同協議的一種設備類型,其中包括一些通用信息,如制造商名稱、設備描述和設備型號。DeviceProfile 還定義了此類設備提供的資源類型(例如,溫度、濕度)以及如何讀取/寫入這些資源。每個 device 都需要關聯一個 DeviceProfile;
  • DeviceService:是與設備交互的邊緣連接器在雲端的映射,定義了如何將設備接入到邊緣設備管理平台,包括設備的通信協議,通信地址等信息。每個 device 都需要關聯一個 DeviceService;
  • Device:是現實世界中端設備的映射,例如:電器、警報系統、照明、傳感器等設備,它給出了特定設備的詳細定義,包括關聯的 DeviceProfile(屬於哪類設備)、關聯的 DeviceService(使用何種通信方式)以及設備特有屬性(如照明設備的開關狀態等)。

設備管理架構

通過抽象出上述三種 CRD,可以反應出設備基本的狀態信息,再使用對應的 controller 與邊緣設備管理平台進行交互,可以將邊側發現的端設備及時映射至雲端;與此同時,Yurt-device-controller 組件將雲端針對設備屬性的修改(例如:設置照明設備的開關狀態)同步至端設備上,從而影響真實世界中的物理設備。用戶只需要聲明式地修改 CRs 的相應字段,以一種雲原生的方式即可達到運維、管理復雜端設備的目的,下面是組成 Yurt-device-controller 的三個組件:

  • DeviceProfile controller:它可以將邊緣平台中的 deviceProfile 對象抽象為 deviceProfile CR 並同步到雲端。在 deviceProfile controller 的支持下,用戶可以在雲端查看、創建或刪除邊緣平台的 deviceProfile。
  • DeviceService controller:它可以將邊緣平台中的 deviceService 對象抽象為 deviceService CR 並同步到雲端。在 deviceService controller 的支持下,用戶可以在雲端查看、創建或刪除邊緣平台的 deviceService 信息。
  • Device controller:它可以將邊緣平台中的 device 對象抽象為 device CR 並同步到雲端。在 device controller 的支持下,用戶可以通過聲明式修改雲端 device CR 的方式來管理邊緣平台上的設備信息,如創建設備、刪除設備、更新設備屬性(如設置燈的開和關等)。

下面是雲邊端三者整體的架構模型:

圖片 4.png

邊緣端設備的通信范圍往往局限於某一網絡區域內,因此可以將同一網絡區域內的邊緣節點划分為一個節點池,在每一個節點池內部署一個 Edgex Foundry 實例和一個 yurt-device-controller 組件:

  • 在與雲端 apiserver 的通信中,Yurt-device-controller 只會監聽屬於該節點池內的設備對象,並將更新信息通過 Edgex Foundry 實例及時地同步至對應的設備上;
  • 在與 Edgex Foundry 實例的通信中,復用 YurtHub、節點池以及單元化部署等能力,Yurt-device-controller 組件只會訪問本節點池內的 Edgex Foundry 實例,並將接入該節點池內的設備信息抽象為 device、deviceService 和 deviceProfile 對象同步至雲端。

社區合作規划

圖片 5.png

未來,雙方還將面向 IoT 行業繼續探索雲原生邊緣設備管理的解決方案,並吸引更多輕量級邊緣設備管理平台加入 OpenYurt 生態,使端設備的管理更加便捷、高效以及雲原生。

相關鏈接:

1)Yurt-edgex-manager:
https://github.com/openyurtio/yurt-edgex-manager
2)Yurt-device-controller:
https://github.com/openyurtio/yurt-device-controller
3)OpenYurt 官網:
https://openyurt.io/en-us/
4)EdgeX Foundry官網:
https://www.edgexfoundry.org/

這里,立即了解 OpenYurt 項目!

了解更多相關信息,請掃描下方二維碼或搜索微信號(AlibabaCloud888)添加雲原生小助手!獲取更多相關資訊!

二維碼.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM