OpenELB 項目進入 CNCF Sandbox

11 月 10 日,雲原生計算基金會 (CNCF) 宣佈由青雲科技 KubeSphere 團隊開源的負載均衡器插件 OpenELB 正式進入 CNCF 沙箱(Sandbox)託管。

OpenELB 項目在此前命名爲 PorterLB,是爲物理機(Bare-metal)、邊緣(Edge)和私有化環境設計的負載均衡器插件,可作爲 Kubernetes、K3s、KubeSphere 的 LB 插件對集羣外暴露 “LoadBalancer” 類型的服務,核心功能包括:

  • 基於 BGP 與 Layer 2 模式的負載均衡
  • 基於路由器 ECMP 的負載均衡
  • IP 地址池管理管理
  • 使用 CRD 進行 BGP 配置

架構

爲什麼發起 OpenELB

我們起初在 KubeSphere 社區做了一項針對廣大社區用戶安裝部署 Kubernetes 所使用環境的調研,從 5000 多份 KubeSphere 用戶調研數據中發現有近 36% 的用戶選擇在物理機安裝部署 Kubernetes,佔比高居第一位。並且還有大量客戶是在離線的數據中心或邊緣設備安裝和使用 Kubernetes 或 K3s,導致用戶在私有環境對外暴露 LoadBalancer 服務比較困難。

用戶調研

我們知道,在 Kubernetes 集羣中可以使用 “LoadBalancer” 類型的服務將後端工作負載暴露在外部。雲廠商通常爲 Kubernetes 提供雲上的 LB 插件,但這需要將集羣部署在特定 IaaS 平臺上。然而,許多企業用戶通常都將 Kubernetes 集羣部署在裸機上,尤其是用於生產環境時。而且對於私有化環境特別是物理機或邊緣集羣,Kubernetes 並不提供 LoadBalancer 方案。

OpenELB 解決了在非公有云環境的 Kubernetes 集羣下對外暴露 LoadBalancer 服務的問題,爲私有化環境的用戶提供了易用的 EIP 與 IP Pool 管理能力。

社區情況

目前 OpenELB 已具備生產可用的特性,已有來自本來生活、蘇州電視臺、視源股份、雲智天下、Jollychic、QingCloud、百旺、Rocketbyte 等海內外多家企業採用,早在 2019 年底 OpenELB 的早期版本中就已經在本來生活的生產環境使用,可參考 OpenELB 如何幫助本來生活在 K8s 物理環境暴露集羣服務 瞭解詳情。OpenELB 項目目前有 13 位貢獻者,100 多位社區成員。

與 MetalLB 的對比

MetalLB 在近期也加入了 CNCF Sandbox,該項目在 2017 年底發起,經過 4 年的發展已經在社區被廣泛採用。OpenELB 作爲後起之秀,採用了更加 Kubernetes-native 的實現方式,雖然起步更晚但得益於社區的幫助,已經迭代了 8 個版本並支持了多種路由方式。很多用戶關注 MetalLB 與 OpenELB 的差異性,以下簡單介紹兩者對比。

雲原生架構

在 OpenELB 中,不管是地址管理,還是 BGP 配置管理,你都可以使用 CRD 來配置。對於習慣 Kubectl 的用戶使用 OpenELB 將非常友好。對於想定製 OpenELB 的高級用戶,也可以直接調用 Kubernetes API 來二次開發。在 MetalLB 中,需通過 ConfigMap 來配置, 感知它們的狀態需要通過查看監控或者日誌。

靈活的地址管理

在 OpenELB 中,通過 EIP CRD 來管理地址,它定義子資源 Status 來存儲地址分配狀態,這樣就不會存在分配地址時各副本發生衝突,編程時邏輯也會簡單。

使用 gobgp 發佈路由

不同於 MetalLB 自己實現 BGP 協議, OpenELB 採用標準的 gobgp 來發布路由,這樣做的好處如下:

  • 開發成本低,且有 gobgp 社區支持
  • 可以利用 gobgp 豐富特性
  • 通過 BgpConf/BgpPeer CRD 動態配置 gobgp
  • gobgp 作爲 lib 使用時, 社區提供了基於 protobuf 的 API, OpenELB 在實現 BgpConf/BgpPeer CRD 時也是參照該 API,並保持兼容。

同時,OpenELB 也提供 status 用於查看 BGP neighbor 配置,狀態信息豐富。

架構簡單,資源佔用少

OpenELB 目前只用部署 Deployment 即可,通過多副本實現高可用,非全部副本 Crash 之後並不不會影響正常已建立連接。

BGP 模式下, Deployment 不同副本都會與路由器建立連接用於發佈等價路由,所以正常情況下我們部署兩個副本即可。在 Layer 2 模式下,不同副本之間通過 Kuberenetes 提供的 Leader Election 機制選舉 Leader,進而應答 ARP/NDP。

OpenELB 安裝與使用

目前 OpenELB 可支持部署在任意標準的 Kubernetes、K3s 以及其髮型版,通過 Yaml 文件或 Helm Chart 一條命令完成部署。同時,在 KubeSphere 容器平臺的應用商店和應用倉庫也可以通過界面一鍵部署,可參考文檔 https://openelb.github.io/docs/getting-started/installation/ 進行部署。

未來規劃

得益於 CNCF 爲項目提供了開源和中立的背書,OpenELB 也將真正變成一個由 100% 社區趨動的開源項目。接下來,OpenELB 將開發與實現如下功能,歡迎給社區提交需求與反饋:

  • 基於 Keepalived 實現 VIP 模式的高可用
  • 實現 kube-apiserver 的 LoadBalancer
  • 支持 BGP 策略與配置
  • 支持 VIP Group
  • 支持 IPv6
  • 提供獨立的界面管理與配置 EIP 與 IP Pool
  • 集成至 KubeSphere Console;提供 Prometheus metrics

OpenELB 還將重點開展社區運營並推出一系列社區活動,希望藉助更多開發者和用戶的力量,解決用戶在私有環境下的服務暴露與 IP 管理問題,爲應用在 Kubernetes 上打開一扇大門,使服務對外暴露與管理變得更加輕鬆。

持續開源開放

KubeSphere 團隊秉持 ”Upstream first“ 的原則,今年 7 月份先將 Fluentbit Operator 項目捐給 Fluent 社區成爲 CNCF 子項目,此次又將 OpenELB 加入 CNCF Sandbox。未來 KubeSphere 團隊將繼續保持開源、開放的理念,持續作爲 OpenELB 項目的參與方之一,推動國內和國際開源組織的生態建設,幫助 OpenELB 社區培育一箇中立的開源社區與生態,與更多的容器平臺及上下游生態夥伴進行深度合作,歡迎大家關注、使用 OpenELB 以及參與社區貢獻。

本文由博客一文多發平臺 OpenWrite 發佈!

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