[原創]邊緣計算開源方案對比


通過分析對比EdgeX FoundryK3SKubeEdgeStarlingXOpenEdge五個開源邊緣計算框架的差異,推薦選擇華為開源的KubeEdge邊緣計算集群方案來自建邊緣計算集群。

一、五個邊緣計算開源框架的簡介:

1)EdgeX Foundry      Linux基金組織的開源項目。偏重於端側設備的管理,定位是通用工業IOT邊緣計算通用框架,提供了一些設備接入、邊緣數據傳輸等場景的實現,但不具備雲上對邊緣端的應用和設備的管控、雲邊協同等智能邊緣系統的能力,架構組件之間依賴復雜。
2)K3S                         Rancher Labs的開源產品。K3s是在邊緣運行整個K8s集群的方案,不具備雲邊協同的能力;其次K3s雖然對K8s做了輕量化,但整體資源要求仍然較高,無法運行在IOT Hub、工業網關等小型設備中。
3)KubeEdge              華為開源產品,打通了雲、邊、端的整體流程:
        · 用戶能夠在雲上統一管理邊緣節點上的應用、設備
       · 提供了雲邊協同的能力,能夠同步雲邊的應用、設備的數據
       · 針對復雜多樣的邊緣設備,KubeEdge定義了一套通用的設備管理API(K8s CRD)以及設備協議解耦層,用戶可以方便地使用KubeEdge在雲上管理各種邊緣設備
       · 針對雲邊網絡不穩定的情況,提供了雲邊數據協同的可靠性傳輸、邊緣元數據持久化
       · 針對邊緣資源不足的情況,輕量化裁剪了Kubelet,支持在256MB的小型設備上運行
4)StarlingX               Intel和WindRiver開源的邊緣計算項目。StarlingX是一個軟件棧,他包含了打包,編譯,安裝配置,openstack本身,WindRiver的MTCE平台,以及WindRiver針對電信雲開發的VIM等等。基於OpenStack的大規模邊緣計算方案,集成了OpenStack的核心服務用於實現計算,網絡,存儲等能力。目標是實現邊緣端的無人值守,虛擬機級別的管理。邊緣端組成邊緣雲互相協同,以及和中心雲實現協同。
5)OpenEdge            百度開源的面向端的工業互聯網智能邊緣計算方案,需要和百度的雲端管理套件BIE結合實現雲邊協同。

 

二、架構對比:

1)EdgeX Foundry

EdgeX總架構圖.png

2)K3S

3)KubeEdge

4)StarlingX

5)OpenEdge

 

三、功能對比:

 

EdgeX Foundry

K3S

KubeEdge

StarlingX

OpenEdge

雲邊協同 不支持 不支持 支持 支持 支持
原生支持K8S 不支持 支持 支持 不支持 不支持
邊緣組件資源占用 最小(內存256M) 較大 較大
部署復雜度 復雜 簡單 簡單 復雜 復雜
是否去中心化

是否支持MQTT 支持 支持 支持 支持 支持
容器化編排 不支持 支持 支持 支持 不支持

 

通過以上對各個邊緣計算開源方案的對比,結合我們的業務場景和已有的技術棧(基於K8S平台),KubeEdge和K3S是比較合適我們業務的邊緣計算集群產品。其中KubeEdge的雲邊端協同,支持的功能和性能整體比K3S更加出色。所以推薦使用KubeEdge產品作為我們邊緣計算集群的落地實施對象。下面將詳細介紹一下KubeEdge目前穩定版本(v1.1.0版本,v1.2.0版本將在2019年12月底發布)支持的特性和功能:

1.關於部署:

kubeEdge 包括 cloud 和 edge 部分,在 kubernetes 構建,在 cloud 與  edge 端提供核心的基礎支持,比如網絡,應用,部署以及元數據的同步等。
安裝kubeEdge 需要安裝 kubernetes 集群,cloud 與 edge 部分
cloud side: docker, kubernetes cluster and cloudcore.
edge side:docker, mqtt and edgecore.

2.kubeedge 組件:

Edged:一個運行在 edge 節點的 agent 程序,管理邊緣的容器化應用程序

EdgeHub:邊緣的通信接口模塊。這是一個 Web 套接字客戶端,負責邊緣計算與雲服務的交互。包括同步雲端資源到邊緣端,以及報告邊緣端 host 和 device 狀態到雲端

CloudHub:雲端通訊接口模塊。一個 Web 套接字服務器,負責監視雲端的更改、緩存以及向EdgeHub 發送消息

EdgeController:管理邊緣節點。它是一個擴展的 Kubernetes 控制器,管理邊緣節點和 pod 元數據,以便數據可以面向特定的邊緣節點

EventBus:使用 MQTT 處理內部邊緣通信。MQTT 客戶端與 MQTT 服務器(mosquitto)交互,為其他組件提供發布和訂閱功能

DeviceTwin:處理設備元數據的設備軟件鏡像。該模塊有助於處理設備狀態並將其同步到雲上。它還為應用程序提供查詢接口,它連接到一個輕量級數據庫(SQLite)

MetaManager:管理邊緣節點上的元數據。這是 Edged 和 Edgehub 之間的消息處理器。負責在輕量級數據庫(SQLite)中存儲 / 檢索元數據

3.支持的特性:

• Replace data exchange format between cloud and edge from json to protobuf.

• Support reliable message delivery from cloud to edge.
• Evaluate gRPC for cloud to edge communication.
• Support CSI for persistent storage (using PV/PVC/StorageClass) at edge.

• Support ingress at edge.
• Add admission-webhook based validation for device CRDs.
• Enhance performance and reliability of KubeEdge infrastructure.
• Upgrade Kubernetes dependencies in vendor to v1.15.
• Migrate to Go module for dependency management.
• Improve contributor experience by defining project governance policies, release process, membership rules etc.

• Improve the performance and e2e tests with more metrics and scenarios.

4.未來版本將支持的特性:

• Support edge-cloud communication using edgemesh.

• Add Layer 4 proxy support in edgemesh.

• Istio-based service mesh across Edge and Cloud where micro-services can communicate freely in the mesh.

• Enable function as a service at the Edge.
• Support more types of device protocols such as OPC-UA, Zigbee.
• Evaluate and enable much larger scale Edge clusters with thousands of Edge nodes and millions of devices.

• Enable intelligent scheduling of applications to large scale Edge clusters.

• Data management with support for ingestion of telemetry data and analytics at the edge.

• Security at the edge.
• Support for monitoring at the edge.

5.功能原理介紹:

1)KubeEdge的雲邊協同通信測試過包括Grpc、WebSocket、Quic,最后發現WebSocket是性能最好的,所以默認采用了WebSocket。Quic作為備選項,在網絡頻繁斷開等很不穩定場景有優勢。KubeEdge雲邊消息傳遞是通過EdgeHub跟CloudHub間的Websocket或Quic協議的長連接傳遞的。

2)KubeEdge會將邊緣收到的應用、設備元數據都進行本地持久化。相比Kubelet在內存中緩存對象的方式,可以有效保證節點離線、故障恢復時的業務自治和快速自愈。

3)edgemesh組件實現邊緣節點之間的pod通信和邊緣pod到雲端pod的通信,但是目前還不支持雲端pod到邊緣側pod的通信。

6.嘗鮮結果:

通過kubeedge源碼自帶的一鍵部署腳本部署kubeedge集群,並熟悉組件的配置,得知在已有K8S集群平台上部署集成KubeEdge比較容易,阻礙不會很大。目前體驗了在雲端編排部署容器后,在邊緣側離線自治和故障自愈的功能。通過停止cloudcore和edgecore組件來模擬斷開雲邊的連接和邊緣節點故障重啟,容器在斷開和雲端的連接后仍然正常運行,在節點重啟后能自動拉起容器運行正常。目前發現大部分功能和阿里雲的邊緣集群差不多,可以考慮取代阿里雲的邊緣集群實現自建邊緣計算集群。

另外:K3S是輕量化的K8S集群,在邊緣側部署一個完成的集群,完全的在邊緣側實現編排管理。如果不考慮雲邊協同的場景也可以使用,如:海外場景。不過KubeEdge的EdgeSite組件也是側重於邊緣側的編排管理而生的,也具備這樣的能力,只是目前版本還不成熟和完善。

 

其他功能在測試中。。。

 


免責聲明!

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



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