天天看點

手把手教你在 SuperEdge 上用 EdgeX Foundry 接入 IoT 裝置

連泓喬,華南理工計算機科學與技術大三在讀,主要研究容器領域,Kubernetes、容器等雲原生技術愛好者,SuperEdge 優秀貢獻者。

王冬,騰訊雲研發工程師,專注于 Kubernetes、容器等雲原生領域,SuperEdge 核心開發人員,現負責騰訊雲邊緣容器 TKE Edge 私有化相關工作。

李騰飛,騰訊容器技術研發工程師,騰訊雲 TKE 背景研發,SuperEdge 核心開發成員。

随着物聯網的發展,連接配接雲的裝置種類和數量越來越多,2020年全球物聯網裝置已高達126億個,并且還以每年百分之十幾的速度在增長。對衆多的裝置進行統一管控和衆多裝置産生的資料進行處理是無法回避的難題。

EdgeX Foundry 是一個開源的邊緣裝置管理平台,可以部署在網絡邊緣連接配接各裝置和上層元件進行互動,對裝置管理和控制有一套成熟的解決方案。部署 EdgeX Foundry 在邊緣叢集,可以進一步增強邊緣叢集的功能,同相比将 EdgeX Foundry 部署在中心雲叢集,可以利用邊緣叢集的優勢,更大發揮 EdgeX Foundry 的功能。

EdgeX Foundry 運作在邊緣需要一個邊緣計算平台作為支撐,在中間起到承上啟下的作用,上可連接配接到中心雲,下可管控裝置;

邊緣計算平台需要 EdgeX Foundry 通用的裝置管理能力,打通雲邊端,形成雲邊端一體化。二者相輔相成,互相補足,為雲邊端賦能。

為了能讓使用者快速在邊緣叢集使用 EdgeX Foundry 的功能,我們提供了 EdgeX Foundry 在邊緣叢集的一鍵部署。通過配置相關檔案,按層級分類,将指令內建到 edgeadm 的 addon 指令下,并進行了相應測試,減少可能的錯誤。使使用者僅需簡單幾步,就可以輕松的在邊緣叢集上部署和使用 EdgeX Foundry 的功能。

本方案的優點:

完全原生

我們對 EdgeX Foundry 沒有任何修改,也沒有任何封裝,隻是原生的部署。下一期我們會提供新的元件與SuperEdge 及 Kubernetes 和 EdgeX Foundry 的對接,但是我們依然會保持所有元件及能力可選,以插件方式內建,不會強綁定使用者使用任何額外的功能。

元件可選

我們對 EdgeX Foundry 內建目前支援到層級可選,後面我們還會繼續細化,細化到元件可選,讓使用者完全按自己的意願和業務需要去部署需要的元件。層級可選見 EdgeX Foundry 的架構圖:

圖檔來源于EdgeX Foundry官網,有關 EdgeX Foundry 的更多資料可參考其官網,及EdgeX Foundry Github。

所有參數可自定義

我們是以 yaml 模闆方式內建的 EdgeX Foundry, 使用者可修改 yaml 模闆的任何參數,實作自己業務自定義的需求。

執行以下指令下載下傳 edgeadm 靜态安裝包,注意修改"arch=amd64"參數,目前支援[amd64, arm64],下載下傳自己機器對應的體系結構,其他參數不變

安裝一個邊緣叢集可參考:一鍵安裝邊緣獨立 Kubernetes 叢集。

執行以下指令,即可一鍵安裝 EdgeX Foundry 的所有元件

如果得到以下成功提示,說明部署成功

也可以通過以下指令添加所需元件到叢集

可以通過<code>./edgeadm addon edgex --help</code>指令檢視可以使用的flag:

例如隻安裝 core 服務層的相關元件,可運作

其他元件同上安裝,替換 flag 即可。如需同時安裝多個層級元件,可以同時添加多個 flag。

目前預設安裝的 EdgeX Foundry v1.3 版本,如需安裝其他版本的元件,可自行定制 EdgeX Foundry元件的版本。 以上安裝不包含 Security 層相關元件和配置,後期版本可能添加相關功能,也可在項目源檔案中自行配置。

部署成功後,可以通過以下指令檢視 Pod 和 Service 的部署情況

注意: 如果出現同一層級的元件部分安裝成功,部分安裝失敗,可直接重新執行安裝指令進行更新和安裝。如果已安裝的元件出現異常無法運作,可以使用<code>./edgeadm detach edgex [flag]</code>對特定層級的元件進行解除安裝重裝。解除安裝操作具體參考 下文中【 EdgeX Foundry 的解除安裝】。

從網頁通路 core-consul 的服務的端口可以檢視各元件的部署情況,其中<code>30850</code>是 core-consul 服務暴露的端口号。

如果顯示紅色叉号,說明元件安裝失敗,如果重新整理仍然無效,可檢視元件相應日志,排查失敗情況,或者重新安裝相應元件。

從網頁通過通路 UI 服務的端口同樣可以檢視各元件是否正常部署,其中<code>30040</code>是 UI 服務暴露的端口号

如果部署成功,則各項會有相應的條目生成。

通過以下指令啟動一個虛拟裝置。

該指令會啟動一個随機整數生成器的虛拟裝置連接配接到 EdgeX Foundry,該裝置會向 core-data 發送随機數,同時接收 core-command 的指令控制。

通過以下指令從網頁通路 core-data 的服務的端口檢視上一步啟動的随機數裝置向 core 服務發送的最近10條資料,其中<code>30080</code>是 core-data 服務的端口号,<code>Random-Integer-Generator01</code>是以上檔案安裝的虛拟裝置。

手把手教你在 SuperEdge 上用 EdgeX Foundry 接入 IoT 裝置

網頁通路 core-command 服務可檢視對虛拟裝置進行的指令,包括 Put 指令和 Get 指令,其中 Put 用于下發指令,Get 用于擷取指令,其中<code>30082</code>是 core-command 服務的端口号。

手把手教你在 SuperEdge 上用 EdgeX Foundry 接入 IoT 裝置

執行 Put 指令可以對虛拟裝置進行控制,這裡我們修改其産生随機數的範圍,從網頁中找到 Put 指令的 url,并執行以下指令:

這裡将虛拟裝置的生成數範圍改為0到10,并執行 Put 指令。

此處僅為例子,具體 url 由顯示的 Put指令的 url 得到,請記得将<code>edgex-core-command:48082</code>字段改為<code>localhost:30082</code>,将<code>{}</code>内的内容改為可用的參數,可修改的參數由之前查詢指令的顯示中得到。其中<code>30082</code>是 core-command 服務的端口号。

從上面的網頁内容中可以得到 Get 指令的 url,使用 Get 的 url 可以擷取随機數裝置發來的資料。

此處僅為例子,具體 url 根據顯示擷取,請記得将<code>edgex-core-command:48082</code>字段改為<code>localhost:30082</code>, 其中<code>30082</code>是 core-command 服務的端口号
手把手教你在 SuperEdge 上用 EdgeX Foundry 接入 IoT 裝置

可以看到随機數裝置産生的随機數已經變成了<code>[0,10]</code>範圍。

執行以下指令部署一個将 EdgeX Foundry 的資料導出至雲端的元件

啟動該元件,該元件可以将 core-data 中的資料導出到 HiveMQ 的公開的 MQTT Broker 上。可以通過網頁通路該代理檢視資料是否成功導出到雲端。通路以下網址進入網頁

手把手教你在 SuperEdge 上用 EdgeX Foundry 接入 IoT 裝置

點選 connect 進行連接配接,填寫主題為 EdgeXEvents

手把手教你在 SuperEdge 上用 EdgeX Foundry 接入 IoT 裝置

即可看到 message 一欄出現虛拟裝置向 EdgeX Foundry 發送的資料

手把手教你在 SuperEdge 上用 EdgeX Foundry 接入 IoT 裝置

但是,由于這是公有的 Broker,多方多次上傳的資料都會保留并共存在相應的主題下,是以即使 message 一欄有資料顯示,可能是之前導出操作遺留的資料,要想真正驗證是否導出成功,可以在 connect 後嘗試建立一個新主題,該主題尚無 message 顯示,再修改 mqtt.yaml 中<code>env</code>下的<code>Writable_Pipeline_Functions_MQTTSend_Addressable_Topic</code>的值為該主題,部署後檢視 Broker 網頁中是否有資料出現,若有,說明真正導出成功。

注意:如果上述操作中出現網頁無法通路等異常,請重新檢視 Pod 情況,必要時進行解除安裝重裝。

如果是執行<code>./edgeadm addon edgex</code>安裝了所有元件或者自定義安裝了所有層級元件的,可以執行以下指令将所有 EdgeX Foundry 解除安裝,同時解除安裝在主機上産生的挂載資料。如果隻是安裝了部分層級或者有部分元件缺失的,請根據後文中的通過添加 flag 的方式逐個層級解除安裝。

出現以下成功顯示,說明解除安裝完成。

也可執行<code>./edgeadm detach edgex [flag]</code>對 EdgeX Foundry 進行解除安裝,可以通過<code>./edgeadm detach edgex –-help</code>指令檢視可以使用的 flag:

如需解除安裝 core 服務的相關元件,可運作

其他元件删除操作同上,替換 flag 即可,支援多個 flag 同時删除多個層級的元件。

可以通過以下指令檢視所有 pod 是否已删除。

注意: 如果删除中出現錯誤,導緻某一層級的元件部分已删除,部分未删除,則對該層級重新執行删除操作将失敗,需用 addon 對該層級所有元件重裝,再進行删除。 <code>./edgeadm detach edgex</code>僅适用于所有層元件都存在的情況,如僅存部分元件,請手動進行删除。

目前我們實作了和 EdgeX Foundry 內建的第一步,我們的目标如下面這張圖:

手把手教你在 SuperEdge 上用 EdgeX Foundry 接入 IoT 裝置

是徹底打通雲邊端,形成雲邊端完全的一體化。EdgeX Foundry 也不是我們裝置管理方案唯一的選擇,我們後續還會和更多的邊緣裝置平台進行內建和抽象,為更通用的多平台邊緣裝置無縫接入而奮鬥。

如果在使用中遇到相關問題或有改進意見,可關注【騰訊雲原生】公衆号,或者在SuperEdge社群提Issues。

SuperEdge 相關文章:

使用TKE Edge部署EdgeX Foundry

騰訊雲聯合多家生态夥伴,重磅開源 SuperEdge 邊緣容器項目

【TKE 邊緣容器系列】SuperEdge易學易用 【6個短頻教學合集】

【TKE 邊緣容器系列】從0到N了解 SuperEdge【18篇幹貨合集】

【TKE 邊緣容器系列】一文讀懂 SuperEdge 邊緣容器架構與原理

【TKE 邊緣容器系列】用 edgeadm 一鍵安裝邊緣 K8s 叢集和原生 K8s 叢集

【TKE 邊緣容器系列】Addon SuperEdge 讓原生 K8s 叢集可管理邊緣應用和節點

【TKE 邊緣容器系列】打破内網壁壘,從雲端一次添加成百上千的邊緣節點

【TKE 邊緣容器系列】SuperEdge 雲邊隧道新特性:從雲端SSH運維邊緣節點

【TKE 邊緣容器系列】SuperEdge 高可用雲邊隧道有哪些特點?

落地案例相關資料:

騰訊WeMake工業網際網路平台的邊緣容器化實踐:打造更高效的工業網際網路

完爆!用邊緣容器,竟能秒級實作團隊七八人一周的工作量

基于邊緣容器技術的工業網際網路平台建設

繼續閱讀