FabEdge V0.5.0 新特性:支持跨集羣服務訪問

3 月 21 日,FabEdge 正式發佈了 V0.5 版本,該版本在 V0.4 的基礎上,針對集羣間訪問的需求,新增了 FabDNS 組件,實現了對跨集羣服務訪問功能的支持。

 

FabEdge 一款基於 Kubernetes 構建的專注於邊緣計算場景的容器網絡方案,支持 KubeEdge / SuperEdge / OpenYurt 等主流邊緣計算框架。旨在解決邊緣計算場景下容器網絡配置管理複雜,網絡割裂互不通信,缺少拓撲感知能力,無法提供就近訪問等問題。2022 年 3 月 8 日,FabEdge 被接納爲 CNCF 沙箱級項目,成爲 CNCF 沙箱中首個邊緣容器網絡項目。


1. 跨集羣需求產生的背景

 

FabEdge 在 V0.4.0 時已經支持多邊緣集羣通信,但集羣間的相互訪問只能通過 IP 來訪問,即便訪問目標是一個服務也會如此,這與日常中使用 Kubernetes 的習慣極不相符。事實上,自多集羣通信的需求存在以來,跨集羣的服務發現和訪問的需求就一直存在,開源社區也一直在努力解決這個問題:

 

既然已經存在這些解決方案,爲什麼 FabEdge 要提出自己的解決方案呢?有如下原因:

  • mcs-api 只是一套 API,需要其他實現者解決各個集羣間服務信息的導出導入。

  • Lighthouse 依賴於 submariner,而 submariner 並不是面向邊緣場景的。

  • Cilium 是一套整體解決方案,不能跟其他 CNI 共存,此外它也不是面向邊緣場景。

 

2. FabDNS - FabEdge 的專屬方案

 

爲 FabEdge 提供跨集羣服務訪問的組件叫 FabDNS  (https://github.com/FabEdge/fab-dns ),它嘗試達成以下目標:

  • 它允許一個集羣訪問其他集羣提供的服務,服務類型僅限於 ClusterIP,Headless 兩種。

  • 一個服務可以部署於一個集羣內部,也可以分散在多個集羣裏。

  • 提供一定的具備拓撲感知的 DNS 解析,訪問者可以就近訪問最近的服務節點。

 

FabDNS 有兩個組件: service-hub 與 fab-dns。還提供了一個 CRD: GlobalService。一個集羣若想將一個服務提供給其他集羣,首先要將該服務標註爲全局服務。service-hub 負責各個集羣間全局服務的導出與導入,fab-dns 負責在集羣內部提供全局服務的地址解析。每個集羣部署時 FabDNS 時要標註拓撲信息,即 region 和 zone 信息,FabDNS 的拓撲感知就是基於這些拓撲信息來進行的。

 

3. 新特性實例講解

 

 

以上圖爲例,共有三個集羣,北京集羣是主集羣,上海集羣和蘇州集羣的 service-hub 都要通過北京集羣的 service-hub 交換全局服務信息。北京和上海集羣同時暴露了一個 nginx 服務和一個 mysql 服務,假設這些服務都是在 default 命名空間下。如果蘇州集羣的 pod 去訪問 nginx.default.global,那麼它會被上海集羣的 nginx 背後的 pod 響應,爲什麼呢?因爲蘇州和上海的 region 都是 south,而它自己本身並沒有提供 nginx 服務或者沒有暴露這個服務; 如果上海或北京的一個 pod 去訪問 nginx.default.global,那麼響應的 pod 只會是各自集羣的 pod,因爲 zone 是匹配的。

 

以上即是 FabEdge V0.5.0 的新特性,歡迎大家體驗和提出寶貴的意見。


 

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