QPS最高提升91% 騰訊云TKE基于Cilium eBPF提升k8s Service性能,騰訊云tke 容器實戰(zhàn)QPS高達91% 騰訊云TKE基于纖毛eBPF提升k8s服務性能前言Kubernetes已經(jīng)成為集裝箱管理領域事實上的標準,網(wǎng)絡系統(tǒng)是Kubernetes的核心部分。隨著越來越多的業(yè)務部署在Kuberne......
前言
Kubernetes已經(jīng)成為集裝箱管理領域事實上的標準,網(wǎng)絡系統(tǒng)是Kubernetes的核心部分。隨著越來越多的業(yè)務部署在Kubernetes,對集裝箱網(wǎng)絡提出了一些新的要求。
1.如何提高網(wǎng)絡的可觀測性,無服務器產(chǎn)品的需求尤為突出。
2.如何最大限度地減少容器對網(wǎng)絡性能的損失
上述需求沖擊引入了傳統(tǒng)的防火墻和負載平衡器技術,如iptables和IPVS。這也促使我們考慮容器網(wǎng)絡訪問鏈路是否可以獨立于節(jié)點,從而縮短容器訪問鏈路,提高網(wǎng)絡性能。
EBPF是一項革命性的技術,它可以安全地在內(nèi)核的許多鉤子點執(zhí)行程序。該技術可編程性強,無需維護內(nèi)核模塊,可維護性好。這項技術為滿足上述要求提供了可能性。ciu[1]是基于eBPF技術的容器網(wǎng)絡開源項目,提供網(wǎng)絡互操作、服務負載均衡、安全性和可觀測性等解決方案。
因此,騰訊云容器服務TKE基于Cilium和eBPF實現(xiàn)了獨立網(wǎng)卡模式下的高性能ClusterIP服務方案。TKE致力于提供更高性能、更安全和更易于使用的集裝箱網(wǎng)絡。因此,TKE將持續(xù)關注纖毛等前沿的集裝箱網(wǎng)絡技術解決方案,未來將推出更多更完善的纖毛產(chǎn)品化能力。
獨立網(wǎng)卡服務方案
TKE去年推出了新一代的容器網(wǎng)絡方案,實現(xiàn)了一個Pod獨占一個彈性網(wǎng)卡,無需經(jīng)過節(jié)點網(wǎng)絡協(xié)議棧(默認命名空間)。但是目前針對ClusterIP的kubeproxy解決方案都依賴于在節(jié)點側(cè)的網(wǎng)絡協(xié)議棧中設置相應的iptables規(guī)則,所以這種解決方案不再適用于獨立網(wǎng)卡解決方案。
解決方案之一是Cilium,它提供基于eBPF的地址翻譯能力,從而支持ClusterIP服務。但其原生解決方案只支持veth pair和ipvlan l3的數(shù)據(jù)平面,完全不支持Pod不通過節(jié)點網(wǎng)絡協(xié)議棧的數(shù)據(jù)平面,因此無法原生解決獨立網(wǎng)卡ClusterIP的接入問題。
TKE由此改造了Cilium,使其支持除了原生支持的veth和ipvlan l3之外的第三種數(shù)據(jù)平面方案,如圖所示(假設pod接入服務IP為172.16.0.2)。在數(shù)據(jù)平面上,原本掛載在節(jié)點側(cè)veth上的bpf程序掛載在pod中的獨立網(wǎng)卡(也是彈性網(wǎng)卡)上。它使得Pod的網(wǎng)絡報文在發(fā)出的時候做DNAT(目的地址轉(zhuǎn)換),返回的報文在網(wǎng)卡收到的時候做反向DNAT,從而支持ClusterIP訪問。該數(shù)據(jù)平面方案可以用作通用方案,以適應Ipvlan l2、SRIOV和其他數(shù)據(jù)平面場景。
在控制端,Cilium與TKE的VPCCNI模式(包括共享網(wǎng)卡模式和獨立網(wǎng)卡模式)深度融合,用戶無需對業(yè)務代碼邏輯做任何修改,即可使用Cilium的功能特性。
性能比較
本文使用wrk工具對Cilium的產(chǎn)品化解決方案進行性能測試,測試確??蛻舳薖od和服務器Pod分布在不同的節(jié)點。
測試環(huán)境:TKE集群,4個CVM節(jié)點,配置為服務器5.2個大8,客戶端5.2個小2
測試結(jié)果表明,基于纖毛的ClusterIP接入方案性能最佳。在短連接場景下,其QPS比共享網(wǎng)卡的iptables和ipvs方案分別提高了48%和74%,比全局路由的iptables和ipvs方案分別提高了62%和91%。在長連接場景下,其QPS比共享網(wǎng)卡的iptables和ipvs方案分別提高了33%和57%,比全局路由的iptables和ipvs方案分別提高了49%和66%。iptables的性能優(yōu)于ipvs是因為測試環(huán)境中沒有足夠的服務,而ipvs的優(yōu)勢在于大量服務的場景。
產(chǎn)品化過程中的相關問題
TKE團隊在實現(xiàn)Cilium產(chǎn)品化解決方案的過程中也發(fā)現(xiàn)了Cilium項目中的一些問題,相應的解決方案和Cilium支持新數(shù)據(jù)平面計劃將于近日以pr的形式提交給Cilium社區(qū)。
ClusterIP自訪問在獨立網(wǎng)卡方案下被阻止
事實上,上述解決方案并不能完全解決ClusterIP訪問的問題,有一種特殊的場景會阻止訪問。這種場景就是Pod訪問的ClusterIP,它的后端包括它自己。在這種場景下,獨立網(wǎng)卡的Pod發(fā)快遞的網(wǎng)絡消息會直接到達IaaS層,不符合預期。
由于獨立網(wǎng)卡Pod中實際上只有兩個網(wǎng)絡設備:loopback device (lo)和elastic網(wǎng)卡,一個簡單的思路就是在發(fā)快遞消息之前,通過bpfredirect調(diào)用直接將自接入流量重定向到loopback device?;诖?,TKE團隊修改了纖毛的相關bpf代碼并提供了解決方案。經(jīng)過測試,該方案可以解決獨立網(wǎng)卡方案下的ClusterIP自訪問問題。
缺少加載bpf程序的纖毛的名稱
Cilium項目的調(diào)試中存在問題。它的bpf程序開發(fā)的比較早,很多老的工具集,比如tc,都是用在底層加載bpf代碼。
老tc基于老內(nèi)核版本(lt;4.15)設計上,它在加載bpf程序時忽略了bpf程序的名稱,導致所有由Cilium加載的bpf程序都是無名的。這會影響對代碼的理解、跟蹤和調(diào)試。
為此,TKE團隊結(jié)合更新的內(nèi)核修改了tc工具,這樣當它加載bpf程序時,它將正確地傳入名字。通過這個名字,我們可以發(fā)現(xiàn)實際運行的是哪個bpf函數(shù),從而提高Cilium的調(diào)試。
用法
申請Cilium支持開啟ClusterIP產(chǎn)品化內(nèi)測后,創(chuàng)建TKE集群時,在高級設置中開啟ClusterIP增強:
總結(jié)和展望
介紹了TKE團隊實現(xiàn)的基于Cilium和eBPF的獨立網(wǎng)卡模式下的高性能ClusterIP服務方案,與目前基于iptables和ipv的傳統(tǒng)網(wǎng)絡方案相比,性能大幅提升(33%91%)。
顯然,Cilium提供的功能不止于此。基于eBPF這一革命性技術,它還提供了安全性、可觀察性、QoS等能力。,而提供更高性能、更安全和更易用的集裝箱網(wǎng)絡是TKE的服務目標。因此,后續(xù)TKE將積極參與纖毛社區(qū),與社區(qū)共同推出更強更好的容器網(wǎng)絡能力。
參考數(shù)據(jù)
[1]纖毛工程官網(wǎng):[https://cilium.io/]
[2] eBPF介紹和參考指南:[https://docs.cilium.io/en/v1.10/bpf/]
[3] Kubernetes服務:【https://Kubernetes . io/docs/concepts/servicesnetworking/Service/】
[4]騰訊云容器服務TKE推出新一代零損耗容器網(wǎng)絡。
特別聲明:以上文章內(nèi)容僅代表作者本人觀點,不代表ESG跨境電商觀點或立場。如有關于作品內(nèi)容、版權或其它問題請于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號密碼登錄
平臺顧問
微信掃一掃
馬上聯(lián)系在線顧問
小程序
ESG跨境小程序
手機入駐更便捷
返回頂部