邊緣計算,如何啃下叢集管理這塊硬骨頭?

博雲技術社群發表於2020-09-08

導讀

邊緣計算平臺,旨在將邊緣端靠近資料來源的計算單元納入到中心雲,實現集中管理,將雲服務部署其上,及時響應終端請求。

然而,成千上萬的邊緣節點散佈於各地,例如銀行網點、車載節點等,節點數量甚至可能是幾萬到十幾萬,這就會對節點的承載能力造成巨大沖擊。Kubernetes 官方資料是可以支援納管 5000 節點,如果想要納管更多的邊緣節點,該如何設計邊緣計算平臺架構呢?

本文針對以上問題,提供一些博雲的解決思路。

多叢集管理

多叢集可以有效地擴充套件納管節點的規模,而對 kubernetes 多叢集的管理,各廠商的實現方式各有不同,不同的 API,不同的特性,因此市場上很難形成標準的解決方案。

 

現有的官方 kubernetes 多叢集管理解決方案是 kubefed(Federation V2),即  kubernetes 聯邦 。Federation V1早在 kubernetes 1.6 版本就開始提供服務,但由於V1架構的限制,無法靈活支援更新的 k8s API 介面,加上其他很多問題影響叢集管理的效率,因此 Federation V1 在 kubernetes 1.11 版本正式被棄用,現在提供服務的是 Federation V2。

 

由架構圖實現可以看出,Federation V2 在 k8s 之上定義了一些資源,用 cluster configuration 記錄叢集的 endpoint,secret 等認證資訊,type configuration 來定義需要用 Federation 託管的資源型別,提供了排程器來平衡各個叢集的負載,以及多叢集的 DNS 功能。

 

這種 controller 級別的叢集管理,提供了豐富的叢集間互動功能,更適用於 異地多中心 的叢集災備 等場景。在邊緣場景,一個邊緣端可能就是一個小叢集(存在多個計算單元可以組成叢集),這樣會使得叢集數量不斷增多,進而對 Federation 的執行效率、API 的響應時間都會有較為明顯的影響。那麼,該如何削弱叢集數量的不確定性所帶來的影響呢?

 

下面為大家展示,我們在 KubeEdge 架構下如何解決多節點的問題。

 

Cloudcore 橫向擴充套件

KubeEdge 架構下的雲邊協同通訊採用 websocket 方式,quic 作為備選。其中 websocket 效能最好,quic 在弱網路(頻繁斷開)情況下優勢較大,通訊的服務端都是由 cloudcore 來實現。

 

這裡我們引入一個邏輯叢集的概念,即每個 cloudcore 可以看做是一個叢集,橫向擴充套件多個 cloudcore 對接下層數量較大的邊緣節點,向上只依託在一個 kubernetes 叢集即可,架構如下所示:

 

這樣設計有如下幾點優勢:

  • 解決單個 cloudcore 訊息轉發/接收等處理的效能瓶頸;

  • 應用/裝置的釋出請求在 api-server 會被 cloudcore 監聽捕獲到,轉而由對應的 cloudcore 來處理請求到邊端,這樣緩解了 k8s 叢集的壓力;

  • 中心雲只需要一套 k8s 叢集,呼叫鏈簡單清晰,易於管理。

 

測試實現

環境資訊:

測試叢集單 master 節點,管理一個 node1 工作節點,cloudcore 執行在 maser 節點上,並已接入 edge1 邊緣節點。

現在測試 node1 上建立 cloudcore 服務,將新的邊緣節點 edge2 接入,節點組圖如下:

 

叢集下已有 cloudcore 和 edgecore,node1 是 k8s 的 x86 普通節點,現在該節點上執行 cloudcore 提供服務。

 

 - 複製 cloudcore 二進位制檔案

 - 重新生成證照

 - 生成 cloudcore.yaml 配置檔案

 - 複製 k8s 叢集的 kubeconfig 並將路徑配置到 cloudcore.yaml

 - 啟動 cloudcore

 

edge2 是作為待接入叢集的邊緣節點,在該節點上執行 edgecore, server 指向 node1,啟動服務。

 

可以看到 edge2 已經註冊到 node1 上的 cloudcore 並同步節點資訊到 k8s,測試釋出服務到 edge1 上:

總結

本文透過討論多叢集的方式來擴充套件納管邊緣節點的規模,分析了以 kubefed 聯邦進行多叢集管理機制,對比不同場景下的特點,介紹了 KubeEdge 中利用橫向擴充套件 cloudcore 的解決方案,並在測試環境部署實踐。

 

在實際生產環境中, 博雲 BeyondEdge 邊緣計算平臺依託於博雲 BeyondContainer 容器雲平臺 ,提供雲上服務的編排、治理、DevOps 等雲原生能力,利用 KubeEdge 將這些能力延伸到邊緣節點,並將邊緣裝置抽象到雲端 BeyondContainer容器雲中,作為孿生裝置資源,統一訪問入口。

 

並且, 執行在雲端的邊緣平臺元件 cloudcore 作為應用服務部署在BeyondContainer容器雲中 ,充分利用容器雲的產品能力,將 cloudcore 以高可用方式部署在 kubernetes 中心雲,透過 ingress 暴露服務介面提供給邊緣節點的元件 edgecore 訪問,可以根據邊緣節點實際接入量動態擴充套件 cloudcore,作為邏輯上的叢集擴充套件以提高中心雲對邊緣節點的承載能力。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69923336/viewspace-2718054/,如需轉載,請註明出處,否則將追究法律責任。

相關文章