KubeCon深度洞察 | KubeEdge開源首秀

雲容器大師發表於2018-11-21

以下內容根據華為雲DJ在KubeCon Shanghai Demo Session演講實錄整理而成。

KubeEdge Demo Show

11月15日上午Huawei宣佈了KubeEdge專案開源,接下來我將公佈KubeEdge這個開源專案的地址,並演示基於KubeEdge管理攝像頭的一個智慧考勤系統的例子。

在此之前,先簡單介紹下KubeEdge這個專案背景。當前,越來越多的計算正在從雲端往邊緣側轉移。

 

 

我們身邊隨處可見邊緣計算的場景,例如:

  1. 智慧園區,可以在邊緣側完成提取視訊、圖片的摘要,影象識別放在雲端。

  2. 工業機器人,需要在邊緣側進行訊息預處理與模式匹配。

  3. 車聯網等等,需要在邊緣側進行ML模型預測等。

 

在我看來,5大現實場景下的“客觀因素”推動計算從雲端走向邊緣:

  1. 低延時要求。AR/VR的時延要求是ms級,工業控制的時延更是在us級。

  2. 高可靠性。具體表現為:>99.999%的可用性,響應時間可預測,響應結果可重複等。

  3. 本地自治。要求邊緣側可適應偶爾斷網,或者直接本地自治。

  4. 海量資料和有限頻寬的矛盾。裝置側將產生海量資料,而以目前的頻寬還無法承載這資料量。另外一個事實就是,很多資料沒有全域性價值,沒有必要浪費頻寬上傳到雲端。

  5. 資訊保安。考慮到商業密碼和個人隱私,很多機構和個人並不願意把資料傳輸到雲端。

 

中心雲無法很好地解決以上問題,引入邊緣計算可以解決這些問題。那麼如何在邊緣側部署應用呢?我們很自然地想到了Kubernetes。雖然Kubernetes已經成為事實上容器編排的標準,但是當涉到在邊緣側部署時,仍然存在不少挑戰。

 

例如:

  1. 邊緣側可能沒有足夠的資源執行一個完整的Kubelet;

  2. 當邊緣節點和雲端的網路不穩定時甚至完全不通時,能否實現本地自治;

  3. 邊緣側節點之間通訊;

  4. 如何在雲端管理多租戶的邊緣資源,包括裝置;

  5. 邊緣側沒有serverless的支援,比如:函式。

 

為了解決Kubernetes在IoT Edge場景下的問題,Kubernetes社群最近成立了一個新的工作組:IoT Edge WG。

 

 

該工作組由Huawei,紅帽,Google和VMWare共同領導。這個工作組的目標是:

  1. 定義邊緣計算的常用術語;

  2. 梳理和解釋常見用例的架構;

  3. 在當前這些常見用例中梳理出可使用Kubernetes進行部署的用例及其面臨的挑戰;

  4. 提供一個能夠適應多種IoT Edge場景下的參考的架構。

 

因此,我們開源了KubeEdge,一個Kubernetes Native的邊緣計算管理框架,他的設計初衷就是:讓雲邊協同,計算下沉,讓雲端更加容易地管理邊緣節點和裝置。

 

 

KubeEdge有以下幾個特點:

  1. KubeEdge構建在Kubernetes之上,100%相容K8S API,可以使用K8S API原語管理邊緣節點和裝置;

  2. 為了讓K8S應用能夠跑在邊緣上,深度定製和優化了runtime;

  3. 為了應對邊緣側的網路不穩定因素,設計了可靠的訊息通道;

  4. 邊緣適應本地自治;

  5. 豐富的應用和協議支援;

  6. 大大簡化了裝置的接入複雜度;

 

現在,我公佈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統一管理、配置邊緣裝置(如視訊攝像頭),並提供一套介面供邊緣應用使用,簡化應用配置;

  • 園區管理員通過智慧視訊分析服務,部署邊緣人臉識別演算法,在邊緣側完成實時視訊的人臉摳圖,然後在雲端完成人臉識別。

 

相關文章