QPS最高提升91% | 騰訊云TKE基于Cilium eBPF提升k8s Service性能

來(lái)源: 騰訊云原生
作者:朱瑜堅(jiān) 張浩
時(shí)間:2021-07-05
16938
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ò)也提出了一些新的需求。

前言

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è)性,serverless類(lèi)產(chǎn)品該需求尤為突出

2.怎么盡可能減少容器引入的網(wǎng)絡(luò)性能損耗

上述需求沖擊了iptables,IPVS等傳統(tǒng)防火墻,負(fù)載均衡器技術(shù)。也促使我們思考容器網(wǎng)絡(luò)訪問(wèn)鏈路能否不依賴(lài)于節(jié)點(diǎn),進(jìn)而縮短容器訪問(wèn)鏈路,提升網(wǎng)絡(luò)性能

eBPF是一項(xiàng)革命性技術(shù),它可以以一種安全的方式在內(nèi)核中許多hook點(diǎn)執(zhí)行程序,該項(xiàng)技術(shù)可編程能力強(qiáng),并且也無(wú)需維護(hù)內(nèi)核模塊,可維護(hù)性好,該項(xiàng)技術(shù)為滿(mǎn)足上述需求提供了可能。Cilium[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 Service方案。TKE致力于提供更高性能、更安全和更易用的容器網(wǎng)絡(luò),也因此會(huì)不斷關(guān)注Cilium等前沿的容器網(wǎng)絡(luò)技術(shù)方案,后續(xù)會(huì)推出更多更完善的Cilium產(chǎn)品化能力。

獨(dú)立網(wǎng)卡Service方案

TKE于去年推出了新一代容器網(wǎng)絡(luò)方案,該方案實(shí)現(xiàn)了一個(gè)Pod獨(dú)占一張彈性網(wǎng)卡,不再經(jīng)過(guò)節(jié)點(diǎn)網(wǎng)絡(luò)協(xié)議棧(default namespace)。而當(dāng)前的kube-proxy實(shí)現(xiàn)ClusterIP的方案都依賴(lài)于在節(jié)點(diǎn)側(cè)的網(wǎng)絡(luò)協(xié)議棧里設(shè)置相應(yīng)的iptables規(guī)則,也因此該方案對(duì)于獨(dú)立網(wǎng)卡方案不再適用。

其中一個(gè)解決方案便是Cilium,Cilium提供了基于eBPF的地址轉(zhuǎn)換能力,從而可支持ClusterIP Service。但其原生方案僅支持veth pair和ipvlan l3的數(shù)據(jù)面,并不支持Pod完全不經(jīng)過(guò)節(jié)點(diǎn)網(wǎng)絡(luò)協(xié)議棧的數(shù)據(jù)面,因此不能原生解決獨(dú)立網(wǎng)卡ClusterIP的訪問(wèn)問(wèn)題。

TKE由此對(duì)Cilium加以改造,使其支持了除原生支持的veth和ipvlan l3的第三種數(shù)據(jù)面方案,如圖(假設(shè)pod訪問(wèn)Service IP為172.16.0.2),數(shù)據(jù)面上,將原本掛載到節(jié)點(diǎn)側(cè)的veth上的bpf程序,掛載到pod內(nèi)的獨(dú)立網(wǎng)卡(同時(shí)也是彈性網(wǎng)卡)上,使得Pod的網(wǎng)絡(luò)報(bào)文在發(fā)出的時(shí)候做DNAT(目的地址轉(zhuǎn)換),而回報(bào)文在網(wǎng)卡接收的時(shí)候做反向DNAT,從而支持ClusterIP的訪問(wèn)。該數(shù)據(jù)面方案可作為一個(gè)通用方案適配Ipvlan l2、SRIOV等數(shù)據(jù)面場(chǎng)景。

1625470298(1).png

而控制面上,將Cilium與TKE的VPC-CNI模式(含共享網(wǎng)卡模式和獨(dú)立網(wǎng)卡模式)深度集成,用戶(hù)無(wú)需對(duì)業(yè)務(wù)代碼邏輯做任何修改,即可使用Cilium的功能特性。

性能對(duì)比

本文使用wrk工具對(duì)Cilium的產(chǎn)品化解決方案進(jìn)行了性能壓測(cè),測(cè)試保證Client Pod和Server Pod分布在不同節(jié)點(diǎn)。

測(cè)試環(huán)境:TKE集群,4個(gè)CVM節(jié)點(diǎn),配置為Server S5.2XLARGE8,Client S5.SMALL2。

測(cè)試數(shù)據(jù)表明,基于Cilium的獨(dú)立網(wǎng)卡ClusterIP訪問(wèn)方案性能最好。在短連接場(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的性能較ipvs性能較好是因?yàn)闇y(cè)試環(huán)境中Service數(shù)量還不夠多,ipvs的優(yōu)勢(shì)在于大量Service的場(chǎng)景。

640.webp (1).jpg

640.webp (2).jpg

產(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ù)面方案將于近日以pr的形式整理提交給Cilium社區(qū)。

獨(dú)立網(wǎng)卡方案下的ClusterIP自訪問(wèn)不通

以上方案其實(shí)不能完全解決ClusterIP訪問(wèn)問(wèn)題,存在一類(lèi)特殊的場(chǎng)景會(huì)訪問(wèn)不通。這類(lèi)場(chǎng)景就是Pod訪問(wèn)的ClusterIP,其后端包括其自身。這類(lèi)場(chǎng)景下,獨(dú)立網(wǎng)卡的Pod發(fā)出的網(wǎng)絡(luò)報(bào)文會(huì)直接到達(dá)IaaS層,不符合預(yù)期。

由于獨(dú)立網(wǎng)卡Pod內(nèi),其實(shí)只有兩個(gè)網(wǎng)絡(luò)設(shè)備:回環(huán)設(shè)備(lo)和彈性網(wǎng)卡,因此一個(gè)簡(jiǎn)單的思路就是在出報(bào)文之前,對(duì)自訪問(wèn)流量,通過(guò)bpf_redirect調(diào)用將報(bào)文直接轉(zhuǎn)發(fā)(redirect)到回環(huán)(lo)設(shè)備?;诖?,TKE團(tuán)隊(duì)修改了cilium的相關(guān)bpf代碼,提供了一個(gè)解決方案。經(jīng)過(guò)測(cè)試,該方案可以解決獨(dú)立網(wǎng)卡方案下的ClusterIP自訪問(wèn)問(wèn)題。

Cilium加載bpf程序的名字缺失

Cilium項(xiàng)目的可調(diào)試性存在一個(gè)問(wèn)題,其bpf程序開(kāi)發(fā)得比較早,底層用了很多老的工具集,例如tc,來(lái)加載bpf代碼。

老的tc基于老的內(nèi)核版本(<4.15)設(shè)計(jì)的,它在加載bpf程序時(shí),將bpf程序的名字忽略了,導(dǎo)致Cilium加載的bpf程序都是無(wú)名字的。這影響了對(duì)代碼的理解,追蹤和調(diào)試。

對(duì)此TKE團(tuán)隊(duì)結(jié)合較新的內(nèi)核對(duì)tc工具進(jìn)行了修正,使得它加載bpf程序時(shí),會(huì)正確的傳入名字。通過(guò)這名字,可以搞清楚實(shí)際運(yùn)行的bpf函數(shù)具體是哪一個(gè),從而提高Cilium的可調(diào)試性。

用法

申請(qǐng)Cilium支持ClusterIP產(chǎn)品化內(nèi)測(cè)開(kāi)通后,創(chuàng)建TKE集群時(shí)高級(jí)設(shè)置中打開(kāi)ClusterIP增強(qiáng)即可:

640.webp (3).jpg

總結(jié)與展望

本文介紹了TKE團(tuán)隊(duì)實(shí)現(xiàn)的基于Cilium和eBPF的獨(dú)立網(wǎng)卡模式下高性能ClusterIP service方案,該方案相比當(dāng)前基于iptables和ipvs的傳統(tǒng)網(wǎng)絡(luò)方案大量的提升了性能(33%-91%)。

顯然,Cilium提供的能力還不止于此,其基于eBPF這項(xiàng)革命性的技術(shù),還提供了安全、可觀測(cè)性、QoS等方面的能力,而提供更高性能、更安全和更易用的容器網(wǎng)絡(luò)正是TKE的服務(wù)目標(biāo),因此,后續(xù)TKE將會(huì)積極參與Cilium社區(qū),與社區(qū)一道共同推出更強(qiáng)大、更完善的容器網(wǎng)絡(luò)能力。

參考資料

[1] Cilium項(xiàng)目官網(wǎng):【https://cilium.io/】

[2] eBPF介紹和參考指南:【https://docs.cilium.io/en/v1.10/bpf/】

[3] Kubernetes Service:【https://kubernetes.io/docs/concepts/services-networking/service/】

[4] 騰訊云容器服務(wù)TKE推出新一代零損耗容器網(wǎng)絡(luò)

立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于騰訊云原生,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
即日起,騰訊云PostgreSQL全面支持PostgreSQL 17.0。所有用戶(hù)可使用大版本升級(jí)能力升級(jí)至最新的PostgreSQL 17.0進(jìn)行體驗(yàn),也可以在產(chǎn)品購(gòu)買(mǎi)頁(yè)直接購(gòu)買(mǎi)。
騰訊云
云服務(wù)
2024-12-152024-12-15
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
互聯(lián)網(wǎng)服務(wù)的可用性問(wèn)題是困擾企業(yè)IT人員的達(dá)摩克利斯之劍:防于未然,體現(xiàn)不出價(jià)值。已然發(fā)生,又面臨P0危機(jī)。就更別提穩(wěn)定性建設(shè)背后顯性的IT預(yù)算問(wèn)題與隱性的人員成本問(wèn)題。
騰訊云
云服務(wù)
2024-11-252024-11-25
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
HBase憑借其高可用性、高擴(kuò)展性和強(qiáng)一致性,以及在廉價(jià)PC服務(wù)器上的低部署成本,廣泛應(yīng)用于大規(guī)模數(shù)據(jù)分析。
騰訊云
云服務(wù)
2024-11-042024-11-04
復(fù)雜查詢(xún)性能弱,只讀分析引擎來(lái)幫忙
復(fù)雜查詢(xún)性能弱,只讀分析引擎來(lái)幫忙
隨著當(dāng)今業(yè)務(wù)的高速發(fā)展,復(fù)雜多表關(guān)聯(lián)的場(chǎng)景越來(lái)越普遍。但基于行式存儲(chǔ)的數(shù)據(jù)庫(kù)在進(jìn)行復(fù)雜查詢(xún)時(shí)性能相對(duì)較弱。
騰訊云
云服務(wù)
2024-11-022024-11-02
掃碼登錄
打開(kāi)掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家