天天看點

深度解讀 OpenYurt :邊緣自治能力設計解析OpenYurt介紹邊緣自治特性後續展開課程推薦

深度解讀 OpenYurt :邊緣自治能力設計解析OpenYurt介紹邊緣自治特性後續展開課程推薦

作者 | 新勝 阿裡雲技術專家

導讀:OpenYurt 開源兩周以來,以非侵入式的架構設計融合雲原生和邊緣計算兩大領域,引起了不少行業内同學的關注。阿裡雲推出開源項目 OpenYurt,一方面是把阿裡雲在雲原生邊緣計算領域的經驗回饋給開源社群,另一方面也希望加速雲計算向邊緣延伸的程序,并和社群共同探讨未來雲原生邊緣計算架構的統一标準。為了更好地向社群和使用者介紹 OpenYurt,我們特地推出【深度解讀OpenYurt】系列文章,本文為系列文章的第二篇,詳細介紹了 OpenYurt 的邊緣自治能力的設計細節。

系列文章推薦:

OpenYurt介紹

5 月 29 号 OpenYurt 正式開源了。OpenYurt 作為公共雲服務 ACK@Edge 的核心架構,已經應用于 CDN、音視訊直播、物聯網、物流、工業大腦、城市大腦等實際應用場景中,并服務于阿裡雲 LinkEdge、盒馬、優酷、視訊雲等多個業務或項目中。目前開源的能力包括:

  • 邊緣自治能力
  • 原生 K8s 叢集一鍵式轉換為邊緣叢集

項目位址:

OpenYurt

, 歡迎大家一起來參與開源!

邊緣自治特性

1. 特性介紹

将 Kubernetes 系統延展到邊緣計算場景,邊緣節點将通過公網和雲端連接配接,從公網的不穩定性以及成本等因素考慮,邊緣要求斷網狀态或者弱網狀态下邊緣業務可以持續運作。我們從 Gartner 的邊緣計算報告中提到的邊緣計算訴求中,邊緣自治也是主要訴求之一:

深度解讀 OpenYurt :邊緣自治能力設計解析OpenYurt介紹邊緣自治特性後續展開課程推薦

而從 Kubernetes 系統架構來看,主要因為 Slave Agent(Kubelet) 中的容器資訊儲存在記憶體中,斷網狀态下因為無法從雲端擷取業務資料,如果節點或者 Kubelet 重新開機,将無法進行業務容器恢複。如下圖:

深度解讀 OpenYurt :邊緣自治能力設計解析OpenYurt介紹邊緣自治特性後續展開課程推薦

2. 邊緣自治需要解決的問題

是以邊緣自治在 Kubernetes 系統裡,需要解決下面的問題:

  • 問題 1: 節點異常或重新開機時,記憶體資料丢失,網絡斷連時業務容器無法恢複;
  • 問題 2: 網絡長時間斷連,雲端控制器對業務容器進行驅逐;
  • 問題 3: 長時間斷連後網絡恢複時,邊緣和雲端資料的一緻性保障。

1)問題 1 的解決方案

解決方案 1:

重構 kubelet 元件,複用或者參考 kubelet 的 checkpoint 功能,持久化容器業務資料到本地磁盤,網絡斷連狀态下利用本地緩存資料實作業務恢複。

深度解讀 OpenYurt :邊緣自治能力設計解析OpenYurt介紹邊緣自治特性後續展開課程推薦

該方案經過重構 kubelet,成功解決邊緣自治的需求,具備如下優點:

  1. 通過重構 kubelet,友善在 kubelet 中內建對端裝置的管理能力;
  2. 通過重構 kubelet,可以對 kubelet 進行輕量化改造。此優點但是也意味着原生 kubelet 功能缺失的問題。

但是也有如下不足:

  1. 可維護性差: 侵入式修改 kubelet core,跟随社群版本更新非常困難,熟悉kubelet的同學都會有同感,kubelet 元件由于直接負責跟計算,存儲,網絡互動,是以其代碼結構和邏輯異常複雜。是以持續維護一個深度修改過的 kubelet 的工作量可想而知;
  2. 可擴充性差: 因為自治能力直接做到重構的 kubelet 元件中,這樣邊緣節點如果其他元件(如網絡元件)想複用邊緣自治能力将面臨重複造輪子的境地;
  3. 場景耦合更深: 例如在 kubelet 重構中增加了 IOT 裝置管理,将可能使 kubelet 和 IOT 場景深度耦合。

解決方案 2 (

OpenYurt使用方案

):

在邊緣節點上增加 web 緩存及請求代理 hub(取名為 YurtHub,商業産品中名為 edge-hub),邊緣側元件(kubelet)和雲端通信将經由該元件。YurtHub 相當于帶有資料緩存功能的”透明網關“,和雲端網絡斷連狀态下,如果節點或者 kubelet 重新開機,将從 YurtHub 中擷取到業務容器相關資料,有效解決邊緣自治的問題。

深度解讀 OpenYurt :邊緣自治能力設計解析OpenYurt介紹邊緣自治特性後續展開課程推薦

相比解決方案 1,有如下優勢:

  • kubelet 零修改,意味原生 kubelet 能力天然具備,同時跟随 Kubernetes 版本更新零負擔;
  • 可擴充性強,節點其他元件輕松複用 YurtHub;
  • 與 Kubernetes 設計理念契合,YurtHub 非常容易擴充出更多的能力。

當然 OpenYurt 的解決方案,也會面臨如下的問題:原生 kubelet 比較 high-weight,在資源緊張場景下應用會比較挑戰。目前商業産品中節點規格推薦 2U4G 起步。

2)問題 2 和 3 的解決方案

問題 2 和問題 3 的解決方案相比比較簡單,是以不展開做過多的方案說明和比較。

  • 問題 2:原生雲端元件 kube-controller-manager 對 Pod 驅逐解決

該問題正是通過開源元件 yurt-controller-manager 中的 Node Controller 來解決的。如 github 首頁介紹所示:

深度解讀 OpenYurt :邊緣自治能力設計解析OpenYurt介紹邊緣自治特性後續展開課程推薦
  • 問題 3: 網絡恢複時,邊緣和雲端網絡一緻性

Kubernetes 系統中,使用者是通過雲端對邊緣進行管控的(如應用部署,更新,擴縮容等),是以當邊緣和雲端網絡斷聯時,邊緣節點将不會從雲端同步使用者對節點的管控操作,是以斷網期間,隻要 YurtHub 保持本地緩存資料和斷網時刻一緻(即斷網期間邊緣緩存資料不更新),而網絡恢複時,再從雲端同步最新資料即可。

後續展開

OpenYurt 剛剛開源,也意味這塊工作剛剛開始,相信我們更貼近雲原生的架構設計,會支援 OpenYurt 走的更遠。同時 OpenYurt 設計理念:

Extending your native Kubernetes to edge

,相信也會讓雲原生愛好者更為接受。

參考連結

  1. gartner 報告連結

OpenYurt 項目位址:

https://github.com/alibaba/openyurt

,歡迎大家參與共建!有疑問可加入釘釘交流群:31993519

課程推薦

為了更多開發者能夠享受到 Serverless 帶來的紅利,這一次,我們集結了 10+ 位阿裡巴巴 Serverless 領域技術專家,打造出最适合開發者入門的 Serverless 公開課,讓你即學即用,輕松擁抱雲計算的新範式——Serverless。

點選即可免費觀看課程:

https://developer.aliyun.com/learning/roadmap/serverless
阿裡巴巴雲原生 關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的公衆号。”

繼續閱讀