天天看點

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

導讀

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

然而,成千上萬的邊緣節點散布于各地,例如銀行網點、車載節點等,節點數量甚至可能是幾萬到十幾萬,這就會對節點的承載能力造成巨大沖擊。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,作為邏輯上的叢集擴充以提高中心雲對邊緣節點的承載能力。

繼續閱讀