容器網絡插件那麼多,博云爲什麼基於OVS深度自研?

背景

 

從2015年開始,博雲開始基於Kubernetes和容器幫助客戶交付應用管理平臺。在開始階段,博雲選擇了業界使用度非常廣泛且成熟穩定的calico作爲默認的網絡方案並在calico方面積累了大量生產實踐經驗。隨着容器雲平臺的落地越來越多,關於容器雲平臺網絡部分的建設要求也越來越高,我們和多家客戶進行了深入溝通,雖然需求有所差異,但總結下來主要的訴求包括:

  • 從運維管理角度,更傾向於採用二層網絡模型:在主流的二層組網的數據中心中,受限於硬件能力、運維人員的能力和管理複雜度等需求,大部分客戶不希望引入BGP等三層路由概念,希望採用大部分運維人員比較熟悉的二層網絡方案。

  • 希望容器雲內部網絡與外部網絡互聯互通:業務應用往往會在容器雲平臺內外同時部署,希望平臺內外網絡能夠直接打通,POD與虛擬機/物理機同等地位,也更有利於與已有的雲產品無縫整合。

  • 需要支持Pod固定IP地址:應用互訪跨防火牆的等場景下,需要POD具備固定IP地址。此需求集中出現在應用實例訪問另一個業務分區的防火牆的場景下。

  • 需要管理網絡和業務網絡分離

  • IPV6支持

  • 高性能,低抖動

  • 靈活的網絡隔離:包括強安全性的硬件隔離和靈活的軟件隔離。

  • 希望一套網絡模型同時支持Underlay和Overlay:Underlay性能好,可以內外網互通;Overlay不依賴底層網絡,靈活性強,最好可以同時支持。

  • 希望網絡模型應該儘量簡單,易於運維管理和調試。

  • 其他的高級特性,如雙向限速、DPDK支持等。

 

 

博雲容器雲團隊對市面上主流的CNI插件進行了廣泛的調研後,發現主流的CNI插件對以上需求的支持並不理想,難以同時滿足如上的網絡需求,集中體現在內外網互通、管理業務網絡分離、靈活的網絡隔離機制、易於運維管理和調試等問題上。

我們針對網絡建設的核心需求及社區現狀綜合分析之後,於18年啓動基於OVS深度自研的容器網絡插件BeyondFabric項目,目前該插件已經作爲博雲容器雲平臺重點支持的兩個網絡模型(calico/BeyondFabric)之一,作爲博雲容器網絡的默認插件,支撐了多家企業的生產系統的長時間的穩定運行

 

二層網絡模型技術對比

 

得益於CNI規範的簡單性(相對於IETF的各種RFC),現在CNI插件的各種實現可以說是百花齊放。網絡上對多種CNI的比較也是層出不窮,這裏就不一一列舉了。因爲我們在選型階段主要考慮二層網絡模型(calico已經是非常優秀的三層解決方案了),所以我們主要對二層網絡的基本單元進行了比較,因爲bridge能力過於簡單,所以主要是ovs和macvlan的比較,同時爲了對比方便,也引入了calico進行比照。

 

從表中可以看出,macvlan目前問題較多,可能是由於這個方案比較小衆,很多bug或者增強的PullRequest較少,因此我們在做選型時就選擇基於OVS的方案。在選擇了OVS方案之後,爲了支持上述的多種網絡需求,我們基於OVS進行了深度自研增強,並將此CNI網絡插件命名爲BeyondFabric。

 

BeyondFabric

 

BeyondFabric是博雲基於OVS深度自研的完全滿足CNI標準的kubernetes容器網絡插件,利用etcd作爲其數據存儲單元,內置完善的IPAM能力,能夠很好的滿足第一章節中提到的客戶的核心訴求。

 

1. BeyondFabric示意圖

從fabric的概念圖中可以一目瞭然的看清楚雲平臺的網絡拓撲,不論是網絡管理人員還是業務人員都可以簡單清晰的瞭解到網絡的拓撲情況。而且在這種簡化的部署模型中(同時也是使用度最廣的模型)不包括控制器等複雜邏輯,提供了簡單、高效、穩定的網絡環境。

除了網絡模型之外,圖中出現的分區概念,也是博雲容器雲平臺結合多個客戶的實際使用場景,在大量生產實踐中總結演化出的概念,主要面對企業多種網絡業務分區以及特定業務獨佔Node資源的需求,後續會專門撰文介紹。分區結合網絡模型,更好的體現出了客戶數據中心的網絡隔離的現狀,是對容器雲平臺實際落地的又一個重要支撐

 

2. BeyondFabric主要功能列表

  • 同時支持VLAN(Underlay)和VXLAN(Overlay)模式

  • 支持內外網互通

  • 支持Pod固定IP地址

  • 支持管理網絡和業務網絡分離

  • 支持IPV6

  • 高性能:網絡性能接近物理網絡

  • 支持Kubernetes NetworkPolicy對象,可實現靈活的網絡隔離機制

  • 可以對網絡進行可視化管理

  • 支持網絡雙向限速

  • 支持DPDK(即將發佈)

 

3. BeyondFabric成熟度

 

  • 大量落地案例

博雲容器雲平臺基於BeyondFabric已經有大量的落地案例,BeondFabric在可管理性、穩定性、性能等多個方面運行良好。

 

  • 通過kubernetes社區CNI測試套件測試

BeyondFabric完全滿足CNI協議規範,我們的測試團隊結合社區提供的工具和kubernetes job等網絡測試套件對BeyondFabric進行了長時間的嚴格測試,測試結果證明BeyondFabric具備生產可用能力

  • 多種平臺支持

私有云建設中,容器雲平臺一般運行在物理環境或vmware/openstack等虛擬化環境中。BeyondFabric對於這幾種部署環境均能完善支持。對於網絡環境複雜不易變更的場景下,BeyondFabric基於vxlan可以顯著減少環境依賴。

 

4. BeyondFabric性能

BeyondFabric採用了穩定可靠的OVS作爲其基本單元,所以從原理上講其性能損耗應該是非常小的,我們在物理環境中基於萬兆網絡的性能測試也驗證了這一點。

 

 

圖中綠色的線表示物理節點間的帶寬,可以作爲本次測試的基線。藍色和紅色分別表示POD-POD和POD-NODE之間的帶寬測試,可以看到與基線對比,其性能損失在3%以下。

 

5. 運維管理工具:fabric-admin

考慮到軟硬件層面的異常情況,例如kubelet或beyondFabirc的bug,環境(硬件損壞)等均可能對系統的正常運行造成不同程度的影響,所以博雲提供了一個fabric-admin的工具,位於/opt/cni/bin目錄下,其作用類似於文件系統的FSCK能力,爲BeyondFabric的運行時管理提供了有力保障。同時其命令行格式完全匹配kubectl,對熟悉kubernetes的用戶非常友好。

例如可以查看pod的IP佔用情況(示例輸出已被截斷):

 

同時,fabric-admin還提供了多種運行時管理能力支持,運行--help後可以提示: 

 

如同FSCK是文件系統成熟的重要標誌,fabric-admin是BeyondFabric項目成熟的有力保障!

 

總結

當下,網絡是容器雲平臺落地的主要難點之一,BeyondFabric是博云爲應對這一業界痛點提出的解決方案,它解決了企業類客戶,特別是金融類對監管需求旺盛的客戶在網絡方面的很多痛點。同時BeyondFabric還在持續增強中,爲企業落地容器雲平臺時網絡方面的訴求提供更多的支持。

 

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