金融、電商、在線教育、游戲等時延敏感型業(yè)務(wù)對算力和網(wǎng)絡(luò)IO提出了極致的性能訴求,要求運行環(huán)境能夠最大限度的提供計算和網(wǎng)絡(luò)資源。業(yè)界通用的第一代裸金屬容器雖然能為業(yè)務(wù)提供充足的CPU資源,但如何提供與算力匹配的高性能、低開銷、快速彈性擴縮的網(wǎng)絡(luò)資源,對現(xiàn)有的容器網(wǎng)絡(luò)技術(shù)提出了一系列挑戰(zhàn)。
近一年多來,主流公有云容器服務(wù)和各家Kubernetes商業(yè)發(fā)行版都在容器網(wǎng)絡(luò)方面加大投入,我們發(fā)現(xiàn),這些商用增強特性和開源創(chuàng)新方案,雖然場景或目標(biāo)有差別,但幾乎都把“卸載”(Offloading)和“加速”(Acceleration)作為技術(shù)主線。
華為云基于擎天架構(gòu)實現(xiàn)的容器網(wǎng)絡(luò),開創(chuàng)性地采用了軟硬協(xié)同、卸載、Kubernetes Service下沉、高密直通等技術(shù),構(gòu)建了業(yè)內(nèi)領(lǐng)先的容器網(wǎng)絡(luò)方案,成為華為云構(gòu)建全球獨家零損耗裸金屬容器的殺手锏之一。
硬件直通 網(wǎng)絡(luò)性能零損耗
要徹底解決容器的互通性問題,必須賦予容器與節(jié)點同等的互通能力,這是容器網(wǎng)絡(luò)的一次重大演進,即把容器網(wǎng)絡(luò)與底層網(wǎng)絡(luò)拉平,被Kubernetes社區(qū)稱為VPC-Native的CNI。
容器網(wǎng)絡(luò)Yangtse就是采用VPC-Native組網(wǎng),這種組網(wǎng)被稱作ENI(Elastic Network Interface)模式,容器直接掛載具有VPC子網(wǎng)地址的ENI,具備完全VPC網(wǎng)絡(luò)互通能力,即容器地址屬于VPC子網(wǎng),容器獨占對應(yīng)的ENI網(wǎng)口,容器實例可以在集群VPC網(wǎng)絡(luò)和與之相連的其他VPC網(wǎng)絡(luò)中進行原生路由,并且可以直接使用VPC原生的網(wǎng)絡(luò)能力如network policy、ELB、EIP、NAT等。
同時基于華為云擎天架構(gòu)的軟硬協(xié)同能力,將管理和轉(zhuǎn)發(fā)邏輯下沉到擎天卡上,實現(xiàn)容器網(wǎng)絡(luò)主機資源0占用。數(shù)據(jù)面轉(zhuǎn)發(fā)能力卸載至擎天卡后,還大大提高包轉(zhuǎn)發(fā)率和降低時延,采用VF直通容器,實現(xiàn)零損耗的網(wǎng)絡(luò)轉(zhuǎn)發(fā)性能,容器內(nèi)網(wǎng)卡與裸金屬服務(wù)器主網(wǎng)卡性能持平
動態(tài)隊列 高算力自動匹配高IO
當(dāng)前容器網(wǎng)絡(luò)方案中,無論是廣泛采用的Calico路由或VPC路由模式的veth/ipvlan組網(wǎng),還是新興的VPC-Native彈性網(wǎng)卡(ENI)組網(wǎng),都沒有針對不同的容器規(guī)格提供差別化的網(wǎng)口規(guī)格。內(nèi)核單隊列虛擬網(wǎng)絡(luò)設(shè)備veth/ipvlan或是固定隊列的ENI網(wǎng)口,轉(zhuǎn)發(fā)能力是受限的,原因在于網(wǎng)絡(luò)報文的轉(zhuǎn)發(fā)邏輯是在內(nèi)核軟中斷中處理的。當(dāng)網(wǎng)絡(luò)設(shè)備的收發(fā)隊列有報文到達需要轉(zhuǎn)發(fā)時,會觸發(fā)相應(yīng)的軟中斷,內(nèi)核通過中斷負載均衡機制將不同網(wǎng)口隊列的中斷分發(fā)給不同的CPU核并行處理,從而提升轉(zhuǎn)發(fā)性能。顯而易見,單隊列或固定隊列網(wǎng)口是無法靈活滿足HPC等計算與IO雙密集的容器負載,使得網(wǎng)絡(luò)IO成為瓶頸點,拉長了工作負載運行時間,提高了客戶成本。而容器網(wǎng)絡(luò)Yangtse支持網(wǎng)口動態(tài)多隊列,能夠根據(jù)容器負載的規(guī)格,比如:16核的容器負載,容器網(wǎng)絡(luò)會自動分配16隊列的直通ENI,實現(xiàn)計算與IO的自動匹配,提供最優(yōu)的整體性能,達成了名副其實的高性能彈性計算。
Service卸載 一跳直達性能倍增
Kubernetes原生的Kube-proxy提供了集群內(nèi)Service負載均衡能力,iptables/netfilter被譽為Linux內(nèi)核的瑞士軍刀,也是Kube-proxy的第一個實現(xiàn)方案。隨著Kubernetes生產(chǎn)集群的規(guī)模越來越大,Service數(shù)量和后端數(shù)量也會同步增長,iptables的規(guī)則數(shù)是服務(wù)數(shù)與后端數(shù)的乘積,當(dāng)規(guī)則數(shù)超過5000后,規(guī)則刷新性能和新建連接速率(線性查表)都會顯著惡化,CPU、內(nèi)存占用會急劇上升。
容器網(wǎng)絡(luò)Yangtse將Kube-proxy下沉至擎天卡,抽象出Internal LB的概念,利用流表的卸載能力實現(xiàn)Service訪問一跳直達,不僅提升了Service性能,而且釋放了裸金屬服務(wù)器的計算資源,減少了資源損耗。
綜上所述,華為云在容器網(wǎng)絡(luò)方面已經(jīng)做出大量創(chuàng)新性的探索,并逐步應(yīng)用到產(chǎn)品中提升產(chǎn)品的商業(yè)價值,或貢獻給社區(qū),以促進云原生技術(shù)發(fā)展。除了文中提到的三點外,容器網(wǎng)絡(luò)Yangtse為支持大規(guī)模容器部署和快速擴容,還提供了更多的黑科技,我們將在下一篇文章中為您詳細介紹。