來源:中國(guó)電商物流網(wǎng) 發(fā)布時(shí)間:2019-7-8 10:18
日前,由中國(guó)信息通信研究院主辦的云計(jì)算開源產(chǎn)業(yè)峰會(huì)在京召開。由華為云開源的智能邊緣項(xiàng)目KubeEdge在會(huì)上榮獲尖峰開源技術(shù)創(chuàng)新獎(jiǎng),華為云智能邊緣云首席架構(gòu)師張琦出席領(lǐng)獎(jiǎng)并發(fā)表了《KubeEdge:云原生的邊緣計(jì)算平臺(tái)》的主題演講。
早在今年3月,CNCF基金會(huì)及技術(shù)委員會(huì)全體一致同意開源智能邊緣項(xiàng)目KubeEdge加入CNCF社區(qū),成為CNCF在智能邊緣領(lǐng)域的首個(gè)正式項(xiàng)目。KubeEdge旨在推進(jìn)云原生技術(shù)在智能邊緣領(lǐng)域的生態(tài)建設(shè)與普及,與全球廣大云原生社區(qū)伙伴一起共同推動(dòng)智能邊緣及云原生產(chǎn)業(yè)的發(fā)展。
云原生與邊緣計(jì)算的完美結(jié)合
經(jīng)過我們調(diào)研發(fā)現(xiàn),傳統(tǒng)的嵌入式設(shè)備開發(fā)面臨著諸多挑戰(zhàn),嚴(yán)重制約著邊緣設(shè)備上云以及大規(guī)模設(shè)備在云化場(chǎng)景下開發(fā)效率。
(1) 邊云生態(tài)的割裂,物理設(shè)備訪問難度高,與IT技術(shù)割裂,開發(fā)難度高產(chǎn)品上市周期長(zhǎng)
(2) 日趨復(fù)雜的邊緣業(yè)務(wù)的部署,對(duì)高度分布和大規(guī)模可擴(kuò)展性缺乏考慮
(3) 缺少和云的協(xié)同以及邊緣和邊緣的協(xié)同,構(gòu)建分布式系統(tǒng)難度高
(4) OT和IT世界技術(shù)割裂,協(xié)同門檻高
那么,云原生和邊緣計(jì)算相遇,會(huì)擦出什么樣激烈的“火花”?現(xiàn)在大多數(shù)的邊緣設(shè)備都與云端配合使用,比如工程師們可以在云端訓(xùn)練機(jī)器學(xué)習(xí)模型,訓(xùn)練好之后將推理模型應(yīng)用于邊緣節(jié)點(diǎn)。無論從邊緣應(yīng)用的分發(fā),邊緣應(yīng)用的可靠性還是邊云協(xié)同的機(jī)制上,云原生邊緣計(jì)算有利于讓邊緣也具備像云一樣的“彈性”,讓應(yīng)用可以“順滑”的部署到邊緣,保持應(yīng)用在邊緣與云端的一致性。
KubeEdge通過更優(yōu)的架構(gòu)和技術(shù)實(shí)現(xiàn),能完美應(yīng)對(duì)當(dāng)前遇到的挑戰(zhàn),幫助工程師從底層技術(shù)設(shè)施的管理中解放出來,將注意力集中到更高抽象層次的應(yīng)用開發(fā)之中。這樣,“云-邊-端”就像是一個(gè)完美的整體,最終用戶無需感知邊緣設(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)行時(shí)內(nèi)存占用約10MB),解決了邊緣資源的約束問題
· 通過在云邊之間構(gòu)建的雙向多路復(fù)用網(wǎng)絡(luò)通道,解決了從云端管理高度分布的海量節(jié)點(diǎn)和設(shè)備難的問題
· 南向支持對(duì)接物聯(lián)網(wǎng)主流的通信協(xié)議(MQTT,Bluetooth,Zigbee,BACnet等),解決了異構(gòu)硬件接入難的問題
綜合起來看,傳統(tǒng)的嵌入式本地計(jì)算和云原生邊緣計(jì)算的差異可以歸納如下:
KubeEdge架構(gòu)
KubeEdge即Kube+Edge,顧名思義就是依托K8S的容器編排和調(diào)度能力,實(shí)現(xiàn)云邊協(xié)同、計(jì)算下沉、海量設(shè)備的平滑接入。KubeEdge架構(gòu)上包含兩部分,分別是云端和邊緣側(cè)。云端負(fù)責(zé)應(yīng)用和配置的下發(fā),邊緣側(cè)則負(fù)責(zé)運(yùn)行邊緣應(yīng)用和管理接入設(shè)備。
Edged:管理邊緣的容器化應(yīng)用程序。
EdgeHub:邊緣的通信接口模塊。這是一個(gè) Web 套接字客戶端,負(fù)責(zé)邊緣計(jì)算與云服務(wù)的交互。
CloudHub:云端通訊接口模塊。一個(gè) Web 套接字服務(wù)器,負(fù)責(zé)監(jiān)視云端的更改、緩存以及向 EdgeHub 發(fā)送消息。
EdgeController:管理邊緣節(jié)點(diǎn)。它是一個(gè)擴(kuò)展的 Kubernetes 控制器,管理邊緣節(jié)點(diǎn)和 pod 元數(shù)據(jù),以便數(shù)據(jù)可以面向特定的邊緣節(jié)點(diǎn)。
EventBus:使用 MQTT 處理內(nèi)部邊緣通信。它是一個(gè) MQTT 客戶機(jī),可以與 MQTT 服務(wù)器(mosquitto)交互,為其他組件提供發(fā)布和訂閱功能。
DeviceTwin:它是處理設(shè)備元數(shù)據(jù)的設(shè)備軟件鏡像。該模塊有助于處理設(shè)備狀態(tài)并將其同步到云上。它還為應(yīng)用程序提供查詢接口,因?yàn)樗B接到一個(gè)輕量級(jí)數(shù)據(jù)庫(kù)(SQLite)。
MetaManager:它管理邊緣節(jié)點(diǎn)上的元數(shù)據(jù)。這是 Edged 和 Edgehub 之間的消息處理器。它還負(fù)責(zé)在輕量級(jí)數(shù)據(jù)庫(kù)(SQLite)中存儲(chǔ) / 檢索元數(shù)據(jù)。
極致優(yōu)化
容器天然的輕量化和可移植性,非常適合邊緣計(jì)算的場(chǎng)景,鑒于K8S已經(jīng)成為云原生編排的事實(shí)標(biāo)準(zhǔn),因此攜手K8S進(jìn)入邊緣將很有可能結(jié)束邊緣計(jì)算當(dāng)前混沌的狀態(tài),并定義云端和邊緣統(tǒng)一的應(yīng)用部署和管理的標(biāo)準(zhǔn)。
然而,由于邊緣場(chǎng)景通信的不穩(wěn)定性和嚴(yán)苛的資源消耗限制,導(dǎo)致原生的K8S組件無法直接運(yùn)行在邊緣節(jié)點(diǎn)上,例如:工業(yè)網(wǎng)關(guān)等。而受限于K8S本身list/watch機(jī)制帶來的disconnect問題,數(shù)據(jù)面和管理面斷連后,無法做到本地自治。
KubeEdge選擇的是“輕邊緣”架構(gòu),即邊緣側(cè)的容器引擎和設(shè)備管理agent盡量輕量化,管理面運(yùn)行在云端,且構(gòu)建在K8S的調(diào)度能力之上,100%兼容K8S原生API。KubeEdge all in K8S的設(shè)計(jì)理念使得用戶可以圍繞K8S的標(biāo)準(zhǔn)API定制需求或者輕松集成云原生生態(tài)中的成熟項(xiàng)目。
從ServiceMesh到EdgeMesh
在過去的一年中,服務(wù)網(wǎng)格(Service Mesh)已經(jīng)演變成為云原生堆棧的重要組成部分。像 Paypal,Lyft,Ticketmaster 和 CreditKarma 這樣的高流量公司都已經(jīng)為其生產(chǎn)應(yīng)用添加了 ServiceMesh。ServiceMesh與云原生應(yīng)用的興起有關(guān)。在云原生模型中,單個(gè)應(yīng)用程序可能包含數(shù)百個(gè)服務(wù),每個(gè)服務(wù)可能有數(shù)千個(gè)實(shí)例,并且這些實(shí)例中的每一個(gè)都可能處于不斷變化的狀態(tài),合理管理使用 ServiceMesh,對(duì)于確保端到端的性能和可靠性至關(guān)重要。
隨著信通院《云計(jì)算與邊緣計(jì)算協(xié)同九大應(yīng)用場(chǎng)景(2019年)》的發(fā)布,“云邊協(xié)同是邊緣計(jì)算發(fā)展的重要驅(qū)動(dòng)力和不可分割的需求”已經(jīng)逐漸成為業(yè)界共識(shí)。當(dāng)純粹的計(jì)算在邊緣轉(zhuǎn)向云邊協(xié)同,如何以云原生的方式構(gòu)建一個(gè)跨越了邊緣和云端的分布式系統(tǒng)就成為了一個(gè)至關(guān)重要的問題:
(1)邊緣應(yīng)用需要有完善的微服務(wù)治理能力,以滿足日趨復(fù)雜的邊緣業(yè)務(wù)模型;
(2)邊云、邊邊的協(xié)同成為邊緣應(yīng)用的基本要求,以滿足海量邊緣數(shù)據(jù)的處理。
使用EdgeMesh可以支持跨越邊界的微服務(wù)訪問,EdgeMesh特性基于標(biāo)準(zhǔn)的istio進(jìn)行服務(wù)治理控制,引入EdgeMesh-proxy負(fù)責(zé)邊緣側(cè)流量轉(zhuǎn)發(fā)以及P2P技術(shù)跨子網(wǎng)通信,提供云-邊、邊-邊通信,最終實(shí)現(xiàn)跨越邊云的一致的服務(wù)發(fā)現(xiàn)和訪問體驗(yàn)。
a)邊邊協(xié)同
b) 邊云協(xié)同
邊緣設(shè)備管理:設(shè)備訪問微服務(wù)化
Kubernetes提供的設(shè)備插件(device plugin)框架, 旨在通過Kubelet管理“綁定”在節(jié)點(diǎn)上的硬件(加速器),例如:GPU、FPGAs、InfiniBand等,為Pod中的容器應(yīng)用提供更強(qiáng)的計(jì)算和網(wǎng)絡(luò)性能。
而KubeEdge的設(shè)備管理關(guān)注的是與邊緣通信的外部設(shè)備,例如:藍(lán)牙終端、智能傳感器、工業(yè)設(shè)備等。KubeEdge對(duì)設(shè)備管理的實(shí)現(xiàn)采用的是Kubernetes官方推薦的Operator方式,并實(shí)現(xiàn)了設(shè)備孿生(device twin)。設(shè)備管理Operator的核心是Device CRD和Device Controller,其中Device CRD用來描述設(shè)備的狀態(tài)等元數(shù)據(jù),Device Controller運(yùn)行在云上,負(fù)責(zé)在云和邊之間同步設(shè)備狀態(tài)的更新(包括設(shè)備實(shí)際狀態(tài)和用戶設(shè)定的期望狀態(tài))。
KubeEdge設(shè)備管理的工作流程如下圖所示:
Device Controller會(huì)把用戶設(shè)定的設(shè)備孿生期望狀態(tài)和配置下發(fā)到邊緣,而在邊緣的組件則要接收并處理這些信息。為了避免edge_core引入量處理邊緣設(shè)備通信的代碼,同時(shí)保持整個(gè)項(xiàng)目良好的易定制性,KubeEdge設(shè)計(jì)了一個(gè)邊緣設(shè)備驅(qū)動(dòng)統(tǒng)一管理引擎Mapper。
Mapper之于KubeEdge的作用如同CRI之于Kubernetes,只是CRI作為Kubernetes定義的容器接口與底層容器引擎打交道,而Mapper作為一個(gè)開放接口方便不同的設(shè)備協(xié)議接入KubeEdge這個(gè)邊緣計(jì)算平臺(tái)。
KubeEdge v1.0中內(nèi)置支持的設(shè)備協(xié)議是藍(lán)牙,后續(xù)版本將逐步增加對(duì)OPC-UA和Modbus的支持。有了Mapper的解耦層,用戶可以方便地根據(jù)實(shí)際需要開發(fā)自己的Mapper來實(shí)現(xiàn)與特定設(shè)備的通信,同時(shí)社區(qū)也歡迎廣大開發(fā)者貢獻(xiàn)更多的協(xié)議實(shí)現(xiàn)。
Mapper的架構(gòu)如下圖所示:
歡迎加入KubeEdge大家庭
KubeEdge橫跨云原生和智能邊緣兩大版圖,擁有非常大的想象力空間,足夠給國(guó)內(nèi)的優(yōu)秀工程師們提供施展才華的平臺(tái)。我們希望借助KubeEdge開放的架構(gòu)設(shè)計(jì)吸收更多全球開發(fā)者參與CNCF云原生社區(qū),共同繁榮CNCF云原生和智能邊緣生態(tài),協(xié)力一起將KubeEdge打造為中國(guó)在全球CNCF云原生社區(qū)以及智能邊緣領(lǐng)域生態(tài)的名片。
值得一提的是,KubeEdge項(xiàng)目來源于華為云上的明星服務(wù)智能邊緣平臺(tái)(IEF),當(dāng)前IEF正處于公測(cè)階段,大家可以免費(fèi)去體驗(yàn)。