阿里云基于Cilium的高性能云原生網(wǎng)絡(luò),阿里云之類的云服務(wù)器阿里云基于Cilium的高性能云原生網(wǎng)絡(luò)Cilium創(chuàng)始人兼CTO Thomas Graf近日撰文《How Alibaba Clouduses Cilium for HighPerformance CloudNative Computing 》,本文翻譯自作......
Cilium創(chuàng)始人兼CTO Thomas Graf近日撰文《How Alibaba Clouduses Cilium for HighPerformance CloudNative Computing 》,本文翻譯自作者的英文博客。感謝Thomas Graf以及其他更多的客戶,阿里云容器服務(wù)團(tuán)隊(duì)隨時(shí)歡迎聽(tīng)到更多客戶反饋。
近期,阿里云團(tuán)隊(duì)在SIG CloudProviderAlibaba的會(huì)議上介紹了阿里云容器服務(wù)的新的高性能容器網(wǎng)絡(luò)方案并且發(fā)布了一篇博客介紹。你知道嗎,這個(gè)方案基于CiliumeBPF來(lái)實(shí)現(xiàn)。在此之前,Google的GKE和Anthos也宣布基于Cilium+eBPF實(shí)現(xiàn)了新的容器網(wǎng)絡(luò)數(shù)據(jù)面V2方案。但阿里云的方案會(huì)有所不同,阿里云采用Terway IPVLAN+Cilium的eBPF結(jié)合的方式,文章下面我們會(huì)詳細(xì)分析Terway CNI(阿里云的CNI插件)的細(xì)節(jié)實(shí)現(xiàn)以及在博客中的測(cè)試數(shù)據(jù)。
和其他云廠商一樣,阿里云也提供了ENI(彈性網(wǎng)卡)的產(chǎn)品來(lái)暴露底層IAAS層的SDN(軟件定義網(wǎng)絡(luò))的能力。對(duì)于K8S的Pod來(lái)說(shuō),基于它可以實(shí)現(xiàn)云原生的虛擬化網(wǎng)絡(luò),而不需要再對(duì)容器網(wǎng)絡(luò)再做一層虛擬化來(lái)降低性能的損耗以及減少網(wǎng)絡(luò)復(fù)雜度。
云廠商的IAAS層網(wǎng)絡(luò)已經(jīng)具備虛擬化和SDN的能力,如果底層虛擬化網(wǎng)絡(luò)的能力直接給Pods去使用,將能顯著降低性能的損耗。
對(duì)于阿里云,容器網(wǎng)絡(luò)模型如下圖所示:
(源自:https://www.alibabacloud.com/blog/howdoesalibabacloudbuildhighperformancecloudnativepodnetworksinproductionenvironments596590)
為了實(shí)現(xiàn)這個(gè)模型,CNI層面直接與阿里云的API交互來(lái)申請(qǐng)Pod所需的底層ENI網(wǎng)絡(luò)資源。阿里云自研了Terway的CNI插件來(lái)實(shí)現(xiàn)這樣的模型。在阿里云官方的博客中有詳細(xì)的內(nèi)部實(shí)現(xiàn)的介紹和遇到的挑戰(zhàn)。這里我們重點(diǎn)關(guān)注在他們?nèi)绾问褂肐PVLAN和eBPF來(lái)提升Kubernetes的Service和NetworkPolicy的性能和擴(kuò)展性。
使用IPVLAN來(lái)實(shí)現(xiàn)更好的網(wǎng)絡(luò)可擴(kuò)展性和性能
單個(gè)ENI可以給Pod獨(dú)占或者給多個(gè)Pod去共享。當(dāng)ENI被多個(gè)Pod共享時(shí),就需要對(duì)包做一些路由決策來(lái)確保Pod的流量路由到其對(duì)應(yīng)的ENI上面。使用共享ENI的方式,一個(gè)ENI可以虛擬化出1020個(gè)IP,從而可以大大增加節(jié)點(diǎn)上的Pod的部署密度,但是缺點(diǎn)是需要引入bridge或者策略路由帶來(lái)額外的性能開(kāi)銷。后面的性能對(duì)比中就能看到具體的開(kāi)銷。
為了提升共享ENI的性能,IPVLAN就是一個(gè)很好的選擇,IPVLAN可以將ENI很輕量的虛擬化出多個(gè)子接口來(lái)連接多個(gè)Pod到單個(gè)ENI上面。Terway的CNI通過(guò)IPVLAN來(lái)降低共享ENI的開(kāi)銷,并且結(jié)合Cilium在IPVLAN的網(wǎng)絡(luò)模式下提供了高效的NetworkPolicy和Service的實(shí)現(xiàn)。并且將實(shí)現(xiàn)向Cilium官方提了pull request.
(源自:https://www.alibabacloud.com/blog/howdoesalibabacloudbuildhighperformancecloudnativepodnetworksinproductionenvironments596590)
下面是不同模式的性能對(duì)比,其中還包含了基于云原生的ENI網(wǎng)絡(luò)與基于overlay的Flannel的性能優(yōu)勢(shì)。
(源自:https://www.alibabacloud.com/blog/howdoesalibabacloudbuildhighperformancecloudnativepodnetworksinproductionenvironments596590)
你不一定要選擇其中一個(gè)模型,可以根據(jù)需要對(duì)高性能的選擇調(diào)度到獨(dú)占ENI,對(duì)于其他的Pod使用共享ENI的模式。
**使用eBPF來(lái)解決Kubernetes Service和NetworkPolicy的擴(kuò)展性問(wèn)題**很長(zhǎng)一段時(shí)間,Kubernetes的標(biāo)準(zhǔn)的kubeproxy的實(shí)現(xiàn)是采用iptables模式,由于iptables的順序匹配,導(dǎo)致這種解決方案的擴(kuò)展性非常受限。
(源自:https://www.alibabacloud.com/blog/howdoesalibabacloudbuildhighperformancecloudnativepodnetworksinproductionenvironments596590)
可以看到當(dāng)服務(wù)數(shù)量增加到一定閾值后,延遲就會(huì)大幅增加。更嚴(yán)重的是,由于服務(wù)表項(xiàng)在iptables規(guī)則鏈中匹配的順序不同,會(huì)導(dǎo)致服務(wù)訪問(wèn)的首包的延遲會(huì)隨機(jī)的變差。
基于這些原因,所以阿里云才會(huì)基于eBPF來(lái)優(yōu)化Kubernetes的可擴(kuò)展性。
效果怎么樣呢下面是阿里云團(tuán)隊(duì)測(cè)試的性能對(duì)比?;趀BPF的方案的網(wǎng)絡(luò)的性能和可擴(kuò)展性優(yōu)于kubeproxy的iptables和IPVS模式:
(源自:https://www.alibabacloud.com/blog/howdoesalibabacloudbuildhighperformancecloudnativepodnetworksinproductionenvironments596590)
通過(guò)eBPF簡(jiǎn)化鏈路,性能顯著提升,相對(duì)iptables模式提升了32%,相對(duì)IPVS模式提升62%。
與Kubernetes Server類似,基于eBPF同樣可以優(yōu)化Kubernetes的NetworkPolicy。
(源自:https://www.alibabacloud.com/blog/howdoesalibabacloudbuildhighperformancecloudnativepodnetworksinproductionenvironments596590)
框框中的BPFagent就是獨(dú)立于Terway CNI之外運(yùn)行的Cilium的agent,用于提供Kubernetes的Service和NetworkPolicy實(shí)現(xiàn):
我們使用Cilium作為節(jié)點(diǎn)上的BPFagent去配置容器網(wǎng)卡的BPF規(guī)則,已貢獻(xiàn)Terway相關(guān)適配:https://github.com/cilium/cilium/pull/10251
(源自:https://www.alibabacloud.com/blog/howdoesalibabacloudbuildhighperformancecloudnativepodnetworksinproductionenvironments596590)
遺憾的是,在這一篇文章中阿里云沒(méi)有提供最終的優(yōu)化的對(duì)比。Cilium團(tuán)隊(duì)早期做過(guò)Cilium在IPVLAN和veth模式的對(duì)比博客,可以作為粗略的參考??偨Y(jié)我們非常高興和歡迎阿里云加入和貢獻(xiàn)到Cilium社區(qū),如果需要了解更多可以參考如下內(nèi)容:Cilium Overview Cilium GitHub How Does Alibaba Cloud Build HighPerformance CloudNative Pod Networks in Production EnvironmentsWhat is eBPF
作者:Thomas Graf Cilium的聯(lián)合創(chuàng)始人和CTO以及Isovalent(Cilium背后的公司)的聯(lián)合創(chuàng)始人。在此之前,他在Red Hat和思科從事Linux內(nèi)核和中斷開(kāi)源項(xiàng)目的研發(fā)工作。
特別聲明:以上文章內(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ī)入駐更便捷
返回頂部