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

作者:DJ
審校:Kevin·Wang

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

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

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

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

  1. 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支持邊緣計算的一個參考範例。

  1. 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的用戶來說,無疑是個福音。

  1. 未來工作

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將會打造一個新的生態。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章