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