作者:清弦
阿里雲技術專家,主要負責 ACK 容器網絡設計與研發,阿里雲開源 CNI 項目 Terway 主要維護者,Cilium Alibaba IPAM 負責人
背景
近期 Cilium 社區發佈了 Cilium 1.10 正式版本,在這個版本中正式支持阿里雲 ENI 模式,阿里雲也是國內首家支持 Cilium 的雲廠商。
Cilium 是一個基於 eBPF 的高性能容器網絡項目,提供網絡、可觀測性、安全三方面的解決方案。
Cilium 本身支持 Overlay 網絡模式部署在各種雲平臺或者自建的集群上,但是這種非雲原生的網絡模式會帶來不小的性能損耗。阿里巴巴雲原生容器服務團隊向 Cilium 社區貢獻了阿里雲 ENI 模式,使得在阿里雲上可以以雲原生方式運行 Cilium 。
雲原生容器服務團隊貢獻 PR
https://github.com/cilium/cilium/pull/15160
https://github.com/cilium/cilium/pull/15512
架構
AlibabaCloud Operator 是集群內的網絡資源控制器,承擔對網絡資源(ENI、ENIIP)統一管理、分配工作。
Cilium agent 通過 list-watch 機制、CNI 請求對 Operator 分配的地址資源進行配置、管理。
這種架構將所有阿里雲 OpenAPI 調用集中到 Operator 中,可以有效的進行 API 請求管理,避免大規模集群下 API 流控問題。
基於 Cilium 1.10 + 阿里雲 ENI 的高性能雲原生網絡
Cilium 使用了 EBPF 內核技術對傳統數據鏈路進行了優化,繞過了Conntrack 模塊,對容器場景下網絡性能有了非常大的提高。在阿里雲上使用 Cilium 1.10 + 阿里雲 ENI 模式有多種按照方式,請閱讀 Cilium 社區的安裝文檔[1]。
為了使雲上用戶享受到更加出色的網絡性能,阿里雲自研的開源 CNI 插件 Terway [2] 與 Cilium 實現了更好的結合。Terway 支持使用阿里雲的彈性網卡來實現的容器網絡。使得容器網絡和虛擬機網絡在同一個網絡平面,在不同主機之間容器網絡通信時不會有封包等損失,不依賴於分佈式路由也能讓集群規模不受限於路由條目限制。目前,Terway IPvlan 模式已經深度集成 Cilium 。
使用 Terway IPvlan
使用 Terway 模式非常簡單,在阿里雲容器服務控制檯,創建集群中選擇網絡插件 Terway ,並勾選 IPvlan 即可啟用。
IPvlan + eBPF 性能對比:
測試環境:
- 2 節點 ecs . g5ne . 4xlarge 機型
- 對比測試
Terway 獨佔 ENI ( ipvs )
Terway 共享 ENI IPvlan ( ebpf )
Terway 共享 ENI veth ( ipvs )
Flanne l vxlan ( ipvs )
Netperf 性能對比 TCP_CRR
測試場景:使用 netperf 測試 Pod 間通訊
上圖數字越大性能越好
通過測試,可以看到基於 IPvlan 的 Pod 網絡延遲較低,在 TCP_CRR 的測試中性能指標和獨佔 ENI 模式相當。
wrk + nginx 性能對比
測試場景:採用 wrk 壓測 nginx 的 Service 的方式,採用 100 字節的小頁面模擬常見的集群中微服務通信。
上圖數字越小性能越好
上圖數字越大性能越好
Terway IPvlan 模式在 wrk- nginx 的短連接測試中相對於傳統的 Terway veth 策略路由方式:
- ClusterIP 吞吐增加 277% , 延遲降低 50%。
總結
隨著 Kubernetes 已經成為容器調度的事實標準,企業上雲的首選。容器網絡做為應用的底層基礎資源,得到越來越多的關注。
在阿里雲上我們默認提供高性能的 Terway 網絡插件 [3] 幫助用戶充分使用雲原生的網絡資源。Cilium 作為社區新興的容器網絡方案,在可觀測性、安全性上有許多出色的特性,本次增加的阿里雲ENI模式,可以幫助 Cilium 的用戶充分使用阿里雲上的網絡資源。我們也將繼續與社區同行,推動高性能的雲原生網絡實現規模化落地。
安裝文檔:_https://docs.cilium.io/en/v1.10/gettingstarted/alibabacloud-eni/#k8s-alibabacloud-eni_
Terway: https://www.alibabacloud.com/help/zh/doc-detail/97467.htm
Terway 網絡插件:_ https://help.aliyun.com/document_detail/86500.html_