系列文章
- Cilium 系列文章
前言
將 Kubernetes 的 CNI 從其他組件切換為 Cilium, 已經(jīng)可以有效地提升網(wǎng)絡(luò)的性能. 但是通過對 Cilium 不同模式的切換/功能的啟用, 可以進(jìn)一步提升 Cilium 的網(wǎng)絡(luò)性能. 具體調(diào)優(yōu)項包括不限于:
- 啟用本地路由(Native Routing)
- 完全替換 KubeProxy
- IP 地址偽裝(Masquerading)切換為基于 eBPF 的模式
- Kubernetes NodePort 實現(xiàn)在 DSR(Direct Server Return) 模式下運(yùn)行
- 繞過 iptables 連接跟蹤(Bypass iptables Connection Tracking)
- 主機(jī)路由(Host Routing)切換為基于 BPF 的模式 (需要 Linux Kernel >= 5.10)
- 啟用 IPv6 BIG TCP (需要 Linux Kernel >= 5.19)
禁用 Hubble(但是不建議, 可觀察性比一點點的性能提升更重要)- 修改 MTU 為巨型幀(jumbo frames) (需要網(wǎng)絡(luò)條件允許)
- 啟用帶寬管理器(Bandwidth Manager) (需要 Kernel >= 5.1)
- 啟用 Pod 的 BBR 擁塞控制 (需要 Kernel >= 5.18)
- 啟用 XDP 加速 (需要 支持本地 XDP 驅(qū)動程序)
- (高級用戶可選)調(diào)整 eBPF Map Size
- Linux Kernel 優(yōu)化和升級
CONFIG_PREEMPT_NONE=y
- 其他:
- tuned network-* profiles, 如:
tuned-adm profile network-latency
或network-throughput
- CPU 調(diào)為性能模式
- 停止
irqbalance
,將網(wǎng)卡中斷引腳指向特定 CPU
- tuned network-* profiles, 如:
在網(wǎng)絡(luò)/網(wǎng)卡設(shè)備/OS等條件滿足的情況下, 我們盡可能多地啟用這些調(diào)優(yōu)選項, 相關(guān)優(yōu)化項會在后續(xù)文章逐一更新. 敬請期待.
今天我們來調(diào)優(yōu) Cilium, 啟用 Pod 的 BBR 擁塞控制, 以為互聯(lián)網(wǎng)流量提供更高的帶寬和更低的延遲.
測試環(huán)境
- Cilium 1.13.4
- K3s v1.26.6+k3s1
- OS
- 3 臺 Ubuntu 23.04 VM, Kernel 6.2, x86
BBR 擁塞控制
Cilium 的帶寬管理器提供的圍繞 MQ/FQ 設(shè)置的基礎(chǔ)架構(gòu)還允許對 Pod 使用 TCP BBR 擁塞控制。當(dāng) Pod 被暴露在 Kubernetes 服務(wù)背后,面對來自互聯(lián)網(wǎng)的外部客戶端時,BBR 尤其適用。BBR 可為互聯(lián)網(wǎng)流量提供更高的帶寬和更低的延遲,例如,事實證明,BBR 的吞吐量可比目前最好的基于損耗的擁塞控制高出 2,700 倍,隊列延遲可降低 25 倍。
為了讓 BBR 在 Pod 上可靠運(yùn)行,它需要 5.18 或更高版本的內(nèi)核。
BBR 還需要 eBPF Host-Routing,以保留網(wǎng)絡(luò)數(shù)據(jù)包的套接字關(guān)聯(lián),直到數(shù)據(jù)包進(jìn)入主機(jī)命名空間物理設(shè)備上的 FQ 隊列 discipline。
要求
- 內(nèi)核 >= 5.18
- 帶寬管理器
- eBPF 主機(jī)路由
實施
啟用帶寬管理器和 Pod 的 BBR:
helm upgrade cilium cilium/cilium --version 1.13.4 \
--namespace kube-system \
--reuse-values \
--set bandwidthManager.bbr=true
驗證
要驗證您的安裝是否使用 Pods 的 BBR 運(yùn)行,請在任何 Cilium pod 中運(yùn)行 cilium status
,并查找報告 "BandwidthManager" 狀態(tài)的行,該行應(yīng)顯示 EDT with BPF
以及 [BBR]
。具體如下:
$ kubectl -n kube-system exec ds/cilium -- cilium status | grep BandwidthManager
BandwidthManager: EDT with BPF [BBR] [eth0]
總結(jié)
本文繼續(xù)調(diào)優(yōu) Cilium, 啟用 Pod 的 BBR 擁塞控制, 以為互聯(lián)網(wǎng)流量提供更高的帶寬和更低的延遲. 前提是 Kernel >= 5.18, 并啟用帶寬管理器和基于 eBPF 的主機(jī)路由.
至此,性能調(diào)優(yōu)已完成實戰(zhàn)驗證:文章來源:http://www.zghlxwxcb.cn/news/detail-623602.html
- ?? 啟用本地路由 (Native Routing)
- ?? 完全替換 KubeProxy
- ?? IP 地址偽裝 (Masquerading) 切換為基于 eBPF 的模式
- ?? Kubernetes NodePort 實現(xiàn)在 DSR(Direct Server Return) 模式下運(yùn)行
- ?? 繞過 iptables 連接跟蹤 (Bypass iptables Connection Tracking)
- ?? 主機(jī)路由 (Host Routing) 切換為基于 BPF 的模式 (需要 Linux Kernel >= 5.10)
- ? 啟用 IPv6 BIG TCP (需要 Linux Kernel >= 5.19, 支持的 NICs: mlx4, mlx5)
- 由于沒有支持的網(wǎng)卡, 無法完成驗證
- ? 修改 MTU 為巨型幀 (jumbo frames) (需要網(wǎng)絡(luò)條件允許)
- ?? 啟用帶寬管理器 (Bandwidth Manager) (需要 Kernel >= 5.1)
- ?? 啟用 Pod 的 BBR 擁塞控制 (需要 Kernel >= 5.18)
- 啟用 XDP 加速 (需要 支持本地 XDP 驅(qū)動程序)
???參考文檔
- Bandwidth Manager - Tuning Guide — Cilium 1.13.4 documentation
- Bandwidth Manager - Cilium 1.9: Maglev, Deny Policies, VM Support, OpenShift, Hubble mTLS, Bandwidth Manager, eBPF Node-Local Redirect, Datapath Optimizations, and more
三人行, 必有我?guī)? 知識共享, 天下為公. 本文由東風(fēng)微鳴技術(shù)博客 EWhisper.cn 編寫.文章來源地址http://www.zghlxwxcb.cn/news/detail-623602.html
到了這里,關(guān)于Cilium系列-12-啟用 Pod 的 BBR 擁塞控制的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!