簡介: 雲計算的出現促使物聯網實現爆炸式增長。在設備規模和業務復雜度不斷攀升的趨勢之下,邊緣計算因其能夠將計算能力更靠近網絡邊緣和設備,從而帶來雲性能成本的降低,也在這波浪潮之下得到快速發展。
作者 | OpenYurt 社區
雲計算的出現促使物聯網實現爆炸式增長。在設備規模和業務復雜度不斷攀升的趨勢之下,邊緣計算因其能夠將計算能力更靠近網絡邊緣和設備,從而帶來雲性能成本的降低,也在這波浪潮之下得到快速發展。
誠然,物聯網邊緣計算尚處發展初期,有許多挑戰需要被解決。比如在大量軟件及通信協議極為復雜的設備異構環境下,需要具備快速處理業務數據,並對異常情況作出快速響應的能力;另外,在大多數情況下,出於安全或其他考慮,邊緣節點在物理上無法從雲節點直接訪問,使部署變得困難,也無法實現雲到邊緣的管理。這些問題都使業務的連續性、穩定性和可用性遭受威脅。
現在,企業和開發者通過開源社區就能夠找到應對以上問題的解決方案。近日,OpenYurt 與開源項目 eKuiper 正式達成合作,完成了集成對接:從 v0.4.0 版本開始,OpenYurt 將正式支持部署和管理 eKuiper ,雙方將共同幫助開發者輕松、高效地解決物聯網邊緣計算場景下流式數據處理和運維挑戰。
eKuiper:輕量級 IoT 數據分析和流處理開源軟件
物聯網邊緣計算很多場景下需要流式數據處理能力。所謂流數據是指一組順序、大量、快速、連續到達的數據序列。一般情況下,流數據可被視為一個隨時間延續而無限增長的動態數據集合,它可以幫助用戶實時了解系統設備的狀態,並對異常情況做出快速響應。
在邊緣端,計算資源(CPU,內存等)不像在雲端一般豐富,因此傳統的流式數據處理框架類似於 Apache Spark 或者 Apache Flink 等,由於其安裝包過大,或者部署結構與過程過於復雜、運行時的高消耗等原因,並不適合於在這些資源受限的邊緣設備(工控機、網關,或者配置不高的 X86 或者 ARM 服務器等設備)上運行。而 eKuiper 就是為了解決在物聯網邊緣設備上的這些問題而設計開發。
eKuiper 的前身是由開源物聯網數據基礎設施軟件供應商 EMQ 於 2019 年正式開源的 Kuiper 項目。2021 年 6 月,Kuiper 項目加入 LF Edge 基金會並更名為 eKuiper,開始作為獨立的項目運營。eKuiper 的本質是一個輕量級物聯網數據分析和流處理軟件,可以運行在各類資源受限的邊緣設備上,希望使邊緣端的流式數據處理擁有如 Spark 與 Flink 的能力。
如下圖所示,eKuiper 整體架構大致分為三部分:
- 左側為 Sources,代表數據來源的位置,數據來源可能是 OpenYurt 里部署邊緣端的 MQTT Broker,也可能是消息隊列、文件和數據庫等;
- 右側為 Sinks,代表數據處理完成后所要存儲的位置,也就是目標系統,目標可以是 MQTT,可以將其存到文件、數據庫里面,也可以調用 HTTP 服務;
- 中間部分為 eKuiper 的運行時,最上層為數據業務邏輯處理,這個層面提供了 SQL 與規則解析器,SQL 處理器進行處理后並將其轉化成 SQL 執行計划;下面層為流運行時和 SQL 運行時, 運行最終執行出來的執行計划;最底層為存儲,存儲在運行過程中需要持久化的一些信息。
在 eKuiper 中,用戶可通過管理儀表板來管理一個或多個 eKuiper 實例。通常,這些儀表板部署在雲節點中,用於管理跨多個邊緣節點的 eKuiper 實例。正如前文所述,由於大多數情況下邊緣節點在物理上無法從雲節點訪問, 使得部署變得困難,無法進行高效的 eKuiper 雲邊管理。
OpenYurt 則改變了這種情況。
OpenYurt:非侵入式的邊緣雲原生智能平台
雲原生技術已經無處不在,並被應用於“新的應用負載” ,“新的計算形態”和“新的物理邊界”。作為雲原生的技術基石,容器和 Kubernetes 正在通過越來越多的計算形態承載,豐富的形態也開始從傳統的中心雲走向邊緣計算、走向終端。
通常來說,邊緣場景下計算規模龐大、業務復雜,采取原生 Kubernetes 的 workload 管理模型遠不能滿足現實中雲原生邊緣計算的落地需求;並且雲邊網絡通過公網相連,網絡連接有很大不可控因素,可能帶來邊緣業務運行的不穩定因素,而且由於邊緣節點一般位於用戶網絡的防火牆內部,會造成雲邊網絡只能單向連通的客觀條件,給原生的 Kubernetes 運維監控帶來很大挑戰;最后,無可避免地要面對邊緣資源種類的多樣、異構,使邊緣標准化支持面臨困難。
OpenYurt 基於原生 Kubernetes 構建,是業界首個對 Kubernetes 無侵入的邊緣計算雲原生開源平台。OpenYurt 是阿里雲容器服務產品 ACK@Edge 的核心框架,由阿里雲於 2020 年 5 月以開源的方式反哺業界,並通過捐贈給 CNCF,實現更加中立、開放的社區環境,成為生態兼容場景下邊緣雲原生平台首選項目。
如下圖所示,OpenYurt 的架構設計非常簡潔,是一個典型的“中心-邊緣”模式。在雲端(K8s Master)上通過增加 Yurt Controller Manager, Yurt App Manager 以及 Tunnel Server 組件。而在邊緣端(K8s Worker)上增加了 YurtHub 和 Tunnel Agent 組件:
這樣的架構設計給邊緣場景下的原生 Kubernetes 能力獲得以下增強:
- 邊緣單元化:通過 Yurt App Manager 組件,從單元化的視角,管理分散在不同地域的邊緣資源,並對各地域單元內的業務提供獨立的生命周期管理、升級、擴縮容、流量閉環等能力;且業務無需進行任何適配或改造
- 邊緣自治: 因為每個邊緣節點增加了具備緩存能力的透明代理 YurtHub,從而可以保障雲邊網絡斷開,如果節點或者業務重啟時,可以利用本地緩存數據恢復業務
- 雲邊協同(運維監控):通過 Tunnel Server/Tunnel Agent 的配合,為位於防火牆內部的邊緣節點提供安全的雲邊雙向認證的加密通道,即使邊到雲網絡單向連通的邊緣計算場景下,用戶仍可運行原生 kubernetes 運維命令(如 kubectl proxy/logs/exec/port-forward/attach 等)。同時中心式的運維監控系統(如 prometheus, metrics-server 等)也可以通過雲邊通道獲取到邊緣的監控數據
- 雲原生生態兼容:所有功能均是通過 Add-on 或者 controller 形式來增強 Kubernetes,因此保證對 Kubernetes 以及雲原生社區生態的 100% 兼容;另外,OpenYurt 還提供了一個 YurtCtl 工具,可以用於原生 Kubernetes 和 OpenYurt 集群的一鍵式轉換
簡而言之,OpenYurt 使用戶能夠管理在邊緣基礎設施中運行的應用程序,就像它們在雲基礎設施中運行一樣。
使用 OpenYurt 部署和管理 eKuiper
從 v0.4.0 版本開始,OpenYurt 項目正式支持部署 eKuiper 及其儀表板,用戶可以利用 yurt- tunnel雲邊隧道,通過 eKuiper 的 Web 管理控制台實現對 eKuiper 實例進行配置管理,實現高效、輕量的 IoT 邊緣流處理能力。
eKuiper 和 eKuiper Dashboard 組件采用原生 Helm Chart 直接部署,其中eKuiper 組件整個運行在邊緣端,而 ekuiper Dashboard 運行在雲端(管控端)。同時 OpenYurt 的 Yurt-Tunnel 組件通過 dns 和 iptables dnat 等機制,會自動攔截雲邊網絡通信。因此 eKuiper 組件可以在對雲邊隧道無感知狀態下完成雲端對邊緣端的指令下發。
基於以上方式,用戶可以直接在 OpenYurt 平台上通過儀表板,在邊緣場景下輕松管理 eKuiper,並且在瀏覽器中通過儀表板來及時查看服務是否健康:
社區合作規划
未來,雙方還將面向 IoT 行業繼續探索高效的雲原生邊緣中間件解決方案,並吸引更多輕量級 IoT 相關中間件加入 OpenYurt 生態,使邊緣中間件真正以雲原生的方式獲得部署支持。此外,作為 eKuiper 的貢獻者,EMQ 也將繼阿里雲、VMWare、Intel 后,正式成為由 OpenYurt 發起的雲原生 IoT SIG 企業成員。
希望更多開發者支持並加入 OpenYurt 和 eKuiper 社區,共建面向雲原生 IoT 開源生態。
原文鏈接
本文為阿里雲原創內容,未經允許不得轉載。






