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