北美KubeCon新風,正把K8S魔力帶向邊緣計算

雲容器大師發表於2018-12-25

作者:DJ

審校:Kevin·Wang

1. 容器生態圈新的創新方向

2018年容器技術圈的年終盛典北美KubeCon終於在西雅圖落下了帷幕。這次北美KubeCon總共吸引了8000多觀眾參會,創下歷史新高。先放一張圖來感受下現場的火爆程度。

關注Kubernetes的小夥伴應該已經感覺到了,與觀眾參會熱情形成鮮明對比的是,這屆KubeCon傳遞出了一個訊號:針對Kubernetes本身的變化越來越少,我們也越來越難看到那些激動人心的大特性。Kubernetes正變得“無聊”已經成了一個既定的事實。

對Kubernetes核心來說,“無聊”並不見得是件壞事,這是一個專案成熟的標誌。現如今Kubernetes已經日益成為公有云/企業IT系統的基礎設施,並且朝著大規模,複雜場景的方向延伸,與AI、大資料、IoT、以及垂直行業等領域的結合越來越緊密。近來,越來越多圍繞Kubernetes生態圈的創新,正在這些領域發生著。比如,這次在北美KubeCon亮相的由華為開源的KubeEdge專案,就給人一種眼前一亮的驚喜,讓人不由地驚呼 “哦,原來Kubernetes還能在邊緣計算上玩!” 在感嘆Kubernetes的強大魅力同時,也不得不佩服華為工程師們的創造力——要知道,邊緣計算與雲端計算的場景有很大的區別,用K8S跑邊緣計算,之前更多還只是停留在討論階段,實踐過程中的坑不勝列舉,華為居然做到了,而且還開源了!

 

2. K8S IoT Edge Working Group

 

2018年既是容器和Kubernetes收穫普遍讚譽的一年,也是邊緣計算加速行業落地和應用的一年。邊緣計算的“邊緣”是指我們日常生活中無處不在、影響著我們衣食住行的各式各樣的端點裝置,比如:手機、攝像頭、路由器、自動駕駛汽車,工業機器人等。與集中式的計算模型相比,邊緣計算可以為企業/使用者提供低延遲,高效能的服務,保證資料的本地化和安全,解決本地資料人工智慧等問題。然而,物聯網世界的異構性和工業系統資產的長生命週期等特點給邊緣裝置的管理帶來了嚴峻的挑戰。Gartner直接把邊緣計算列為下一個十年的關鍵技術方向。

 

Kubernetes引領的以容器為中心的IT基礎設施變革方興未艾,就已經有人在謀劃下一個“十年”了。既然Kubernetes已經成為了容器化編排的事實標準,並且持續在雲端持續發揮著魔力,那麼一個直覺的想法就是能否讓Kubernetes把這種魔力帶到邊緣計算的場景呢?

然而,當Kubernetes真正涉及到邊緣側部署時,仍然存在不少挑戰,例如:

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

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

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

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

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

為了解決這些挑戰,華為,谷歌,紅帽,VMWare共同在Kubernetes社群發起成立了一個新的工作組:IoT Edge Working Group,目的就是為了提高Kubernetes在邊緣場景下的部署能力。

KubeCon進行到第三天的時候,四位分別來自華為,紅帽,思科和Oort公司的工程師們進行了一次圓桌會議,會議主題就邊緣計算面臨的技術挑戰和未來發展趨勢。 

來自華為的架構師Cindy Xing(Kubernetes社群IoT Edge工作組的co-chair)在圓桌會議中談到了雲端計算、容器和邊緣計算的關係——不同於雲端計算,邊緣計算意味著幾十萬分佈在不同地理位置的邊緣節點和百萬甚至上億的末端裝置。邊緣計算規模和地域跨度遠遠超過資料中心。雲所能提供的頻寬將無法滿足邊緣的需求。同時邊緣和雲之間的連線是不穩定的。邊緣側需要實現在和雲斷網的情形下實現自治,同時又需要和雲連線實現集中的管理和批量的應用部署管理。如果對著幾十萬的邊緣節點去分別部署更新應用,這個消耗是無法想象的。另外邊緣計算中,裝置極其多樣,裝置的通訊協議也很不同。裝置可以是128MB、1CPU的Raspberry-Pi,也可以是多核,GB記憶體的伺服器。裝置通訊協議既可以是Http/Amqp/Mqtt,還可以是Bluetooth,Zigbee等等。邊緣計算將比雲端計算複雜的多。對於開發者來說,一個應用在辦公室開發驗證後,將希望應用直接部署在邊緣,無需焦慮功能問題。容器的可移植性正好滿足了這個需要。

正是看到了K8S和邊緣計算存在的天然契合點,華為開發並開源了KubeEdge——業界首個基於Kubernetes的多租、可擴充套件、相容K8S API的容器應用的邊緣計算平臺。KubeEdge也是K8S IoT Edge Working Group輸出的使用Kubernetes支援邊緣計算的一個參考範例。

 

3. KubeEdge:K8S與邊緣計算的結合

 

KubeCon第四天的時候,華為為CNCF IOT/Edge的社群會員組織了一次小型聚會。

在這次輕鬆隨意的聚會上,K8S/CNCF社群成員坐下來,聊聊天,分享各自對邊緣計算的場景需求和技術理解。華為的工程師演示了華為雲的邊緣計算產品IEF。在隨後的KubeCon CNCF IOT/Edge Deep Dive,co-chair Cindy Xing深度介紹了IEF的開源實現KubeEdge的架構,功能和未來發展路標。

針對邊緣計算場景下的痛點,KubeEdge為使用者提供了基礎的網路設施,使用KubeBus可以實現邊緣和雲,邊緣和邊緣的網路路由通訊。藉助雲和邊的MetaStore以及之間的同步,KubeEdge解決了雲邊斷網,頻寬的問題並實現邊緣側自治。在KubeEdge裡,AppEngine是個輕量化的代理, ~10MB的執行時記憶體消耗意味著它幾乎可以跑在任何裝置上。AppEngine保持K8S的資料模型和通訊協議,通過和容器引擎互動,管理容器應用的生命週期,反饋容器應用的執行狀態。

從功能上看,KubeEdge打通了從底層裝置到裝置驅動/SDK,再到邊緣側Runtime,雲端控制器以及雲上應用整個軟硬體全棧,它為IOT廠商,開發者和IOT應用企業帶來了一個解決方案和平臺。

從架構看,KubeEdge包括雲端和邊緣側兩套元件。邊緣側對裝置支援MQTT協議,採用了模組化設計,由Edged,MetaManager,DeviceTwin,EventBus,EdgeHub這五個模組構成,模組之間通過golang的channel進行通訊。

 Edged就是為邊緣計算深度定製的精簡AppEngine。雖然精簡,但這個AppEngine支援K8S的API原語,比如:Pod,Volume,Configmap等,同時也支援Pod探針和Event上報。

 EdgeHub是一個web socket的client,負責和雲端的訊息通訊,包括:向邊緣側同步雲端資源更新,向雲端報告邊緣側節點和裝置狀態更新,這條資料通道也就是上文提到的KubeBus。

 MetaManager則是一個訊息處理器,是架在edged和edgehub之間的橋樑,同時也和後端data store互動,讀寫一些後設資料;

 EventBus則是邊緣節點和裝置的之間的紐帶,他既可以從MQTT Broker處訂閱裝置狀態更新事件,並向其他感興趣的元件釋出,也可以向MQTT Broker傳送對裝置的操作指令,同時雲上app和使用者自己部署在edge的應用通訊,也走EventBus。

 DeviceTwin則負責儲存裝置後設資料到data store以及和雲端同步裝置狀態,使用者可以從雲端下發的對裝置操作指令釋出給DeviceTwin。KubeEdge在邊緣側對裝置支援MQTT協議,並且提供裝置影子服務。裝置目前可以通過MQTT Broker(mosquitto)註冊進來。

在Cindy看來,KubeEdge的架構做到了雲、邊鬆耦合,邊緣可以在斷網條件下自治,並在網路恢復後和雲側進行同步。KubeEdge引入了K8S強大的容器編能力,客戶可以像管理雲上K8S叢集一樣方便地管理邊緣節點和部署應用,這對熟悉K8S的使用者來說,無疑是個福音。

 

4. 未來工作

 

KubeEdge目前已包含了邊緣側的完整實現,雲側的開源工作正在緊鑼密鼓地籌劃中,相信很快也會開源,詳見專案地址:https://github.com/kubeedge/kubeedge。

KubeEdge自11月KubeCon China宣佈開源以來,引起了廣泛關注,一度登上Github trending榜單。目前star 220+,fork 50+,slack使用者和開發者群成員50+,並且吸收了多名外部程式碼貢獻者。

未來,華為將繼續完善KubeEdge,包括但不限於:

  • 支援更多的裝置接入協議:AMQP,藍芽,ZigBee等;

  • 支援超大規模節點和裝置管理;

  • 和Istio結合構建服務網格能力;

  • 在邊緣側提供函式服務;

  • 支援裝置通過MQTT協議直連雲端;

  • 邊緣節點使用UDP hop來通訊;

  • 引入智慧排程功能。

華為也歡迎參任何感興趣的廠商和開發者參與KubeEdge社群,共同推動邊緣計算的創新。我們預計今後一到兩年邊緣計算會有突飛猛進的發展,我們完全有理由相信取得先發優勢的KubeEdge將會打造一個新的生態。

 

相關文章