日前,由中國信息通信研究院主辦的云計算開源產(chǎn)業(yè)峰會在京召開。由華為云開源的智能邊緣項目KubeEdge在會上榮獲尖峰開源技術(shù)創(chuàng)新獎,華為云智能邊緣云首席架構(gòu)師張琦出席領(lǐng)獎并發(fā)表了《KubeEdge:云原生的邊緣計算平臺》的主題演講。
早在今年3月,CNCF基金會及技術(shù)委員會全體一致同意開源智能邊緣項目KubeEdge加入CNCF社區(qū),成為CNCF在智能邊緣領(lǐng)域的首個正式項目。KubeEdge旨在推進(jìn)云原生技術(shù)在智能邊緣領(lǐng)域的生態(tài)建設(shè)與普及,與全球廣大云原生社區(qū)伙伴一起共同推動智能邊緣及云原生產(chǎn)業(yè)的發(fā)展。
云原生與邊緣計算的完美結(jié)合
經(jīng)過我們調(diào)研發(fā)現(xiàn),傳統(tǒng)的嵌入式設(shè)備開發(fā)面臨著諸多挑戰(zhàn),嚴(yán)重制約著邊緣設(shè)備上云以及大規(guī)模設(shè)備在云化場景下開發(fā)效率。
(1) 邊云生態(tài)的割裂,物理設(shè)備訪問難度高,與IT技術(shù)割裂,開發(fā)難度高產(chǎn)品上市周期長
(2) 日趨復(fù)雜的邊緣業(yè)務(wù)的部署,對高度分布和大規(guī)模可擴(kuò)展性缺乏考慮
(3) 缺少和云的協(xié)同以及邊緣和邊緣的協(xié)同,構(gòu)建分布式系統(tǒng)難度高
(4) OT和IT世界技術(shù)割裂,協(xié)同門檻高
那么,云原生和邊緣計算相遇,會擦出什么樣激烈的“火花”?現(xiàn)在大多數(shù)的邊緣設(shè)備都與云端配合使用,比如工程師們可以在云端訓(xùn)練機(jī)器學(xué)習(xí)模型,訓(xùn)練好之后將推理模型應(yīng)用于邊緣節(jié)點(diǎn)。無論從邊緣應(yīng)用的分發(fā),邊緣應(yīng)用的可靠性還是邊云協(xié)同的機(jī)制上,云原生邊緣計算有利于讓邊緣也具備像云一樣的“彈性”,讓應(yīng)用可以“順滑”的部署到邊緣,保持應(yīng)用在邊緣與云端的一致性。
KubeEdge通過更優(yōu)的架構(gòu)和技術(shù)實(shí)現(xiàn),能完美應(yīng)對當(dāng)前遇到的挑戰(zhàn),幫助工程師從底層技術(shù)設(shè)施的管理中解放出來,將注意力集中到更高抽象層次的應(yīng)用開發(fā)之中。這樣,“云-邊-端”就像是一個完美的整體,最終用戶無需感知邊緣設(shè)備的復(fù)雜分布。
· 通過將AI能力、大數(shù)據(jù)能力等延伸到邊緣,解決與云上服務(wù)的數(shù)據(jù)協(xié)同、任務(wù)協(xié)同、管理協(xié)同、安全協(xié)同訴求
· 通過數(shù)據(jù)本地化處理、邊緣節(jié)點(diǎn)離線自治,解決了云和邊緣之間的網(wǎng)絡(luò)可靠性和帶寬限制的問題
· 通過大幅優(yōu)化邊緣組件的資源占用(二進(jìn)制大小約46MB,運(yùn)行時內(nèi)存占用約10MB),解決了邊緣資源的約束問題
· 通過在云邊之間構(gòu)建的雙向多路復(fù)用網(wǎng)絡(luò)通道,解決了從云端管理高度分布的海量節(jié)點(diǎn)和設(shè)備難的問題
· 南向支持對接物聯(lián)網(wǎng)主流的通信協(xié)議(MQTT,Bluetooth,Zigbee,BACnet等),解決了異構(gòu)硬件接入難的問題
綜合起來看,傳統(tǒng)的嵌入式本地計算和云原生邊緣計算的差異可以歸納如下:
KubeEdge架構(gòu)
KubeEdge即Kube+Edge,顧名思義就是依托K8S的容器編排和調(diào)度能力,實(shí)現(xiàn)云邊協(xié)同、計算下沉、海量設(shè)備的平滑接入。KubeEdge架構(gòu)上包含兩部分,分別是云端和邊緣側(cè)。云端負(fù)責(zé)應(yīng)用和配置的下發(fā),邊緣側(cè)則負(fù)責(zé)運(yùn)行邊緣應(yīng)用和管理接入設(shè)備。
Edged:管理邊緣的容器化應(yīng)用程序。
EdgeHub:邊緣的通信接口模塊。這是一個 Web 套接字客戶端,負(fù)責(zé)邊緣計算與云服務(wù)的交互。
CloudHub:云端通訊接口模塊。一個 Web 套接字服務(wù)器,負(fù)責(zé)監(jiān)視云端的更改、緩存以及向 EdgeHub 發(fā)送消息。
EdgeController:管理邊緣節(jié)點(diǎn)。它是一個擴(kuò)展的 Kubernetes 控制器,管理邊緣節(jié)點(diǎn)和 pod 元數(shù)據(jù),以便數(shù)據(jù)可以面向特定的邊緣節(jié)點(diǎn)。
EventBus:使用 MQTT 處理內(nèi)部邊緣通信。它是一個 MQTT 客戶機(jī),可以與 MQTT 服務(wù)器(mosquitto)交互,為其他組件提供發(fā)布和訂閱功能。
DeviceTwin:它是處理設(shè)備元數(shù)據(jù)的設(shè)備軟件鏡像。該模塊有助于處理設(shè)備狀態(tài)并將其同步到云上。它還為應(yīng)用程序提供查詢接口,因為它連接到一個輕量級數(shù)據(jù)庫(SQLite)。
MetaManager:它管理邊緣節(jié)點(diǎn)上的元數(shù)據(jù)。這是 Edged 和 Edgehub 之間的消息處理器。它還負(fù)責(zé)在輕量級數(shù)據(jù)庫(SQLite)中存儲 / 檢索元數(shù)據(jù)。
極致優(yōu)化
容器天然的輕量化和可移植性,非常適合邊緣計算的場景,鑒于K8S已經(jīng)成為云原生編排的事實(shí)標(biāo)準(zhǔn),因此攜手K8S進(jìn)入邊緣將很有可能結(jié)束邊緣計算當(dāng)前混沌的狀態(tài),并定義云端和邊緣統(tǒng)一的應(yīng)用部署和管理的標(biāo)準(zhǔn)。
然而,由于邊緣場景通信的不穩(wěn)定性和嚴(yán)苛的資源消耗限制,導(dǎo)致原生的K8S組件無法直接運(yùn)行在邊緣節(jié)點(diǎn)上,例如:工業(yè)網(wǎng)關(guān)等。而受限于K8S本身list/watch機(jī)制帶來的disconnect問題,數(shù)據(jù)面和管理面斷連后,無法做到本地自治。