以下內容根據華為雲DJ在KubeCon Shanghai Demo Session演講實錄整理而成。
KubeEdge Demo Show
11月15日上午Huawei宣佈了KubeEdge專案開源,接下來我將公佈KubeEdge這個開源專案的地址,並演示基於KubeEdge管理攝像頭的一個智慧考勤系統的例子。
在此之前,先簡單介紹下KubeEdge這個專案背景。當前,越來越多的計算正在從雲端往邊緣側轉移。
我們身邊隨處可見邊緣計算的場景,例如:
-
智慧園區,可以在邊緣側完成提取視訊、圖片的摘要,影象識別放在雲端。
-
工業機器人,需要在邊緣側進行訊息預處理與模式匹配。
-
車聯網等等,需要在邊緣側進行ML模型預測等。
在我看來,5大現實場景下的“客觀因素”推動計算從雲端走向邊緣:
-
低延時要求。AR/VR的時延要求是ms級,工業控制的時延更是在us級。
-
高可靠性。具體表現為:>99.999%的可用性,響應時間可預測,響應結果可重複等。
-
本地自治。要求邊緣側可適應偶爾斷網,或者直接本地自治。
-
海量資料和有限頻寬的矛盾。裝置側將產生海量資料,而以目前的頻寬還無法承載這資料量。另外一個事實就是,很多資料沒有全域性價值,沒有必要浪費頻寬上傳到雲端。
-
資訊保安。考慮到商業密碼和個人隱私,很多機構和個人並不願意把資料傳輸到雲端。
中心雲無法很好地解決以上問題,引入邊緣計算可以解決這些問題。那麼如何在邊緣側部署應用呢?我們很自然地想到了Kubernetes。雖然Kubernetes已經成為事實上容器編排的標準,但是當涉到在邊緣側部署時,仍然存在不少挑戰。
例如:
-
邊緣側可能沒有足夠的資源執行一個完整的Kubelet;
-
當邊緣節點和雲端的網路不穩定時甚至完全不通時,能否實現本地自治;
-
邊緣側節點之間通訊;
-
如何在雲端管理多租戶的邊緣資源,包括裝置;
-
邊緣側沒有serverless的支援,比如:函式。
為了解決Kubernetes在IoT Edge場景下的問題,Kubernetes社群最近成立了一個新的工作組:IoT Edge WG。
該工作組由Huawei,紅帽,Google和VMWare共同領導。這個工作組的目標是:
-
定義邊緣計算的常用術語;
-
梳理和解釋常見用例的架構;
-
在當前這些常見用例中梳理出可使用Kubernetes進行部署的用例及其面臨的挑戰;
-
提供一個能夠適應多種IoT Edge場景下的參考的架構。
因此,我們開源了KubeEdge,一個Kubernetes Native的邊緣計算管理框架,他的設計初衷就是:讓雲邊協同,計算下沉,讓雲端更加容易地管理邊緣節點和裝置。
KubeEdge有以下幾個特點:
-
KubeEdge構建在Kubernetes之上,100%相容K8S API,可以使用K8S API原語管理邊緣節點和裝置;
-
為了讓K8S應用能夠跑在邊緣上,深度定製和優化了runtime;
-
為了應對邊緣側的網路不穩定因素,設計了可靠的訊息通道;
-
邊緣適應本地自治;
-
豐富的應用和協議支援;
-
大大簡化了裝置的接入複雜度;
現在,我公佈KubeEdge專案開源地址:
https://github.com/kubeedge/
KubeEdge是個開放的社群,歡迎開發者積極貢獻程式碼,在使用過程中有任何問題也歡迎提issue討論。
KubeEdge從功能上看,是打通了從底層裝置到裝置驅動/SDK,再到邊緣側Runtime,雲端控制器以及雲上應用整個軟硬體全棧。
從架構看,又分為雲端和邊緣側。邊緣側是單程式部署,採用了模組化設計,由edged,metamanager,devicetwin,eventbus,edgehub這五個模組構成,模組之間通過golang的channel進行通訊。
edged就是為邊緣計算深度定製的精簡runtime,雖然這是一個精簡的runtime,但它支援K8S的API原語,比如:Pod,Volume,Configmap等,同時也支援Pod探針和Event上報;
edgehub是一個web socket的client,負責和雲端的訊息通訊,包括:向邊緣側同步雲端資源更新,向雲端報告邊緣側節點和裝置狀態更新;
metamanager則是一個訊息處理器,是架在edged和edgehub之間的橋樑,同時也和後端data store互動,讀寫一些後設資料;
EventBus則是邊緣節點和裝置的之間的紐帶,他既可以從MQTT Broker處訂閱裝置狀態更新事件,並向其他感興趣的元件釋出,也可以向MQTT Broker傳送對裝置的操作指令,同時雲上app和使用者自己部署在edge的應用通訊,也走eventbus;
DeviceTwin則負責儲存裝置後設資料到data store以及和雲端同步裝置狀態,使用者可以從雲端下發的對裝置操作指令釋出給DeviceTwin。裝置目前可以通過MQTT Broker註冊進來,也就是eclipse的mosquitto。未來,我們將支援更多的裝置協議,例如:AMQP,BlueTooth,ZigBee等。
接下來我們將用一個智慧園區人臉考勤系統為例,展示KubeEdge協同管理雲,邊和裝置的能力。
整個過程分為以下三個步驟:
-
園區管理員通過KubeEdge納管邊緣計算節點,節點納管後,管理員可以通過介面對邊緣節點進行管理和業務發放;
-
園區管理員通過KubeEdge統一管理、配置邊緣裝置(如視訊攝像頭),並提供一套介面供邊緣應用使用,簡化應用配置;
-
園區管理員通過智慧視訊分析服務,部署邊緣人臉識別演算法,在邊緣側完成實時視訊的人臉摳圖,然後在雲端完成人臉識別。