Tungsten Fabric如何增強Kubernetes的網絡性能

在混合多雲的世界裏,Kubernetes是如此流行,已經成爲應用統一部署和管理的事實標準,而Tungsten Fabric與Kubernetes的集成,更增強了後者的網絡性能和安全性,幫助實現業務落地。 4月28日,在TF中文社區線上直播活動【 TF Live 】中,社區技術代表楊雨與大家進行了在線交流,看看TF與K8s能碰撞出怎樣的火花。 直播活動由TF中文社區和SDNLAB聯合舉辦。

【pdf文檔下載】https://tungstenfabric.org.cn/assets/uploads/files/kubernetes-sdn-tungsten-fabric.pdf

【高清視頻下載鏈接】https://pan.baidu.com/s/1cnwFJ3pmoY7HPnLCH37hbw
提取碼:guxu

楊雨曾負責多個大型金融雲平臺、企業雲平臺的建設,專注於運維自動化、SDN和分佈式存儲。作爲2016年就接觸Tungsten Fabric的老兵,他在4月28日的直播與互動中輸出了很多硬核乾貨,和大家分享了多年的技術積累和實踐。

TF就是基於BGP MPLS的 V P N

Tungsten Fabric曾用名OpenContrail,2018年3月遷移到Linux基金會。一句話概括TF的核心技術,就是基於BGP MPLS VPN技術。

BGP MPLS VPN技術在運營商的廣域網絡有了20多年的應用歷史,是一個比較成熟的技術。運營商基於BGP MPLS VPN技術,基於同一套網絡基礎架構和線路的基礎上,爲不同的網絡租戶提供了跨廣域網的虛擬專線服務。

BGP MPLS VPN技術的核心就是通過BGP協議作爲控制平面,實現不同站點之間的路由和VPN信息的交互,BGP協議就是一個分佈式的控制器。數據平面就是有MPLS標籤的隧道實現傳輸,做到流量的隔離,同時也可以藉助ECMP等技術來做鏈路的負載均衡。

Tungsten Fabric將廣域網中的BGP MPLS VPN技術運用到了數據中心。在虛擬化的環境中,原來部署在運營商端點的PE,現在變成了部署在每個計算節點上的vRouter。換句話說,vRouter承擔了PE的角色。不同虛擬網絡的虛擬機,接入不同VRF後實現了隔離,通過隧道協議實現數據傳輸。在控制平面上,MAC地址A和B的通信,都是通過BGP協議實現信息的下發和交互。

在多雲互聯、性能和擴展性方面,Tungsten Fabric都將SDN提升到了一個新的水平,在不同的數據中心(包括公有云和私有云)的部署中,輕鬆實現了虛擬機、容器、物理機的統一SDN環境。 在性能上,Tungsten Fabric支持原生Kernel轉發,可以限速跑滿一個萬兆的網卡。通過控制器形成集羣和分佈式數據庫的採用,Tungsten Fabric具有非常好的規模擴展性。在目前的實際部署中,基本都大於200個計算節點,到上千個計算節點。通過不同控制器,還可以建立EBGP鄰居,實現跨多個集羣的虛擬網絡的互聯。
在這裏插入圖片描述
圖:TF功能一覽

Tungsten Fabric對接的負載類型,包含虛擬機、Linux虛擬機、容器、裸機等,這些工作負載都通過TF統一的SDN控制器實現互聯。而上層的雲管平臺,包括OpenStack、K8s、VMware,以及一些公有云平臺,也都可以實現多雲的統一SDN管理。

更重要的是,Tungsten Fabric可以提供豐富的網絡功能。在不同的虛擬網絡(如VS棧的虛擬網絡或GRE的虛擬網絡)上,基於不同的三層列表、二層路由表來實現隔離,同時也提供DHCP、DNS、以及IP地址管理等功能,以及防火牆、安全策略、負載均衡、服務鏈、監控、分析等功能。

這麼多功能怎麼實現的?就是通過Tungsten Fabric的控制器。

控制器基於BGP作爲SDN的控制平面,實現相應的路由條目、二層轉發表的管理,同時支持OVSDB實現對物理設備的配置。物理機可以通過VLAN接入TOR交換機,再轉成VXLAN,和相應的容器或虛擬機、虛擬網絡互通,這些都是通過BGP和OVSDB實現的。

TF如何加持K8s

實際上,Tungsten Fabric一開始主要支持Openstack這樣的虛擬化的集羣,而對於Kubernetes的對接,有些概念還需要進行對應關係的映射。比如Pod的擴展,相當於TF裏面的一個虛擬機,一個Interface,五個Instance-IP。

再比如K8s裏面有很多Service類型,在TF這邊相應地對應於ECMP的負載均衡。怎麼理解?傳統的負載均衡方案,比如F5設備等,是在四層包括七層實現負載均衡,而TF使用BGP路由技術,虛擬IP的下一個,可能就是一個真實物理服務器的IP,可以使用路由裏多個下一跳的條目,來做等價路徑的轉發,在路由層面實現比較高效的負載均衡。

另外,K8s的Ingress,相當於7層的一個負載均衡,使用內置的HAproxy來實現。
在這裏插入圖片描述

(對此,網友也提出很多Tungsten Fabric與K8s的技術問題)

Q:TF是用來替代K8s使用的Calico這種網絡的嗎?
首先,兩者定位是一樣的,Calico核心原理也是基於BGP的。但在功能實現程度上,Calico是基於IP TABLE的,不帶VPN功能,只相當於TF的一個子集。在多雲互聯的場景,包括一些隔離的場景,和TF是有很大差距的。Calico的好處是比較簡單,這種應用IPinIP的模式沒有overlay的開銷,比較適合在雲上部署,因爲雲的網絡已經是overlay網絡了。簡單的總結:Calico是一個簡單可依賴的網絡方案,適合小規模的集羣或部署在雲上的K8S集羣。TF在可擴展性、多雲互聯和網絡隔離能力上會更強。

Q:TF是否是取代K8s內的kube-proxy?
Kube-proxy在TF中只會應用在NodePort的場景。Kube-Proxy會在用戶態監聽相應的端口,轉發給vRouter,由vRouter來實現相關的DNAT功能。

Q:TF使用了BGP,需要讓企業內部的接入交換機、核心交換機都開啓BGP嗎?
TF對於設備的要求可以分幾塊來看:

  1. 出口網關Cloud Gateway,這個是TF Overlay虛擬網絡和物理網絡的主要連接點,需要支持MP-BGP和GRE隧道或者UDP隧道;如果需要TF管理配置下發,也需要支持NetConf;

  2. BMS TOR交換機,用來實現物理機VLAN網絡和TF的虛擬網絡實現二層橋接的設備,需要支持EVPN-VXLAN協議;

  3. Underlay網絡交換機,就是用於連接各個計算節點,控制節點和BMS TOR以及Cloud Gateway的底層網絡。由於TF是在vRouter, BMS TOR, Cloud Gateway實現了隧道的解封包,所以對於Underlay的網絡交換機特性沒有特殊的要求,只要各節點之間三層可達即可。小規模可以用靜態路由,大規模可以用OSPF或者BGP;

TF對於設備是沒有鎖定的,只要支持相應的協議,都可以使用。但是不同廠商的協議的支持程度會有差異。如果不想做大量的測試和適配工作,Juniper的產品是優先選擇,其它品牌的產品就需要在投入生產前做一些測試驗證。

Q:K8s Service天然就有LB功能,這個和您講的ECMP提供的負載均衡有什麼關聯呢?
K8s的LB功能也是由TF來實現了,只不過還是基於路由層面的ECMP來實現均衡,當要控制URL映射的時候,路由層面就做不了了。TF會使用Harpoxy來實現。

(關於TF與K8s的對接,楊雨在直播中進行了Demo演示,展示了Tungsten Fabric基本功能,與Kubernetes的集成對接,以及Service與External IP演示等,感興趣的朋友,點擊下方鏈接觀看)

鏈接:https://pan.baidu.com/s/1cnwFJ3pmoY7HPnLCH37hbw
提取碼:guxu

在兩者的對接方面,Tungsten Fabric提供了標準接口,與K8s的集成還是基於CNI對接的,需要幾個組件之間進行配合。

包括Kube-manager對於K8s Pod相關變動的監聽,並將相應事件轉成動作,調用TF API完成網絡、接口創建等。

擴展起來後,TF的CNI組件負責查詢Pod接口信息,把Pod的veth插入到vRouter裏面去,完成網絡的對接。

Q:TF和K8s的資源映射關係是雙向同步的嗎?
是的,TF資源映射的關係是雙向同步的,以K8s爲準,K8s這邊刪除就刪除,K8s創建就做相應的創建。

Q:namespace的隔離是邏輯隔離、底層網絡還是互通的,VRF是基於網絡的還是什麼?
默認情況下,不做任何指定的話,namespace是沒有隔離的。可以開啓隔離功能,或者指定就要隔離,在安全策略裏,就不允許訪問新創建的namespace,namespace之間就不會通。Tungsten Fabric對於不同網絡接口之間的訪問策略,都是比較靈活的。

Q:TF可以生成環境中的流量展示信息麼?可以看到服務之間的訪問關係,支持root cause分析麼?便於管理員在故障期間分析是哪裏出的問題。
流量分析是支持的,可以抓包,也可以通過service chain做鏡像分析,安全策略等訪問的展示,可視化可以基於Tungsten Fabric的界面去做,也可以接口做二次開發。

以上就是本次TF Live直播的精彩內容,這裏有一些TF+K8s的指導文章,可以作爲參考資料。

往期回顧
TF Live丨KK/建勳:多雲、SDN,還有網工進化論

Tungsten Fabric +K8s集成指南系列
第一篇:部署準備與初始狀態
第二篇:創建虛擬網絡
第三篇:創建安全策略
第四篇:創建隔離命名空間

Tungsten Fabric +K8s輕鬆上手系列
TF Carbide 評估指南–準備篇
通過Kubernetes的服務進行基本應用程序連接
通過Kubernetes Ingress進行高級外部應用程序連接
通過Kubernetes命名空間實現初步的應用程序隔離
通過Kubernetes網絡策略進行應用程序微分段

在這裏插入圖片描述
在這裏插入圖片描述

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