ToB企服应用市场:ToB评测及商务社交产业平台

标题: Cilium系列-11-启用带宽管理器 [打印本页]

作者: 灌篮少年    时间: 2023-8-3 11:07
标题: Cilium系列-11-启用带宽管理器
系列文章

前言

将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, 可以进一步提升 Cilium 的网络性能. 具体调优项包括不限于:
在网络/网卡设备/OS等条件满足的情况下, 我们尽可能多地启用这些调优选项, 相关优化项会在后续文章逐一更新. 敬请期待.
今天我们来调优 Cilium, 启用带宽管理器, 以更有效地管理网络流量,改善整体应用的延迟和吞吐量。
测试环境

带宽管理器

Cilium 的带宽管理器(Bandwidth Manager)负责更有效地管理网络流量,目的是改善整体应用的延迟和吞吐量。
除了原生支持 Kubernetes Pod bandwidth annotations 外,带宽管理器(首次在 Cilium 1.9 中引入)还在所有面向外部的网络设备上设置公平队列(FQ)队列规则,以支持 TCP 堆栈步调(例如 EDT/BBR),并为网络堆栈设置最佳的服务器级 sysctl 设置。
带宽管理器的功能主要集中在两个方面,即从上层协议和从队列规范的角度。
带宽管理器启用后,默认情况下会将 TCP 拥塞控制算法切换为 BBR,从而实现更高的带宽和更低的延迟,尤其是面向互联网的流量。它将内核网络堆栈配置为更面向服务器的 sysctl 设置,这些设置已在生产环境中证明是有益的。它还重新配置了流量控制队列规则(Qdisc)层,以便在 Cilium 使用的所有面向外部的网络设备上使用多队列 Qdiscs 和公平队列(FQ)。切换到公平队列后,带宽管理器还在 eBPF 的帮助下实现了对最早出发时间 Earliest Departure Time(EDT)速率限制的支持,并且现在原生支持 kubernetes.io/egress-bandwidth Pod 注释。
这也消除了对带宽 CNI 插件链的需求,因为该插件使用了 TBF(Token Bucket Filter, 令牌桶过滤器),在可扩展性方面受到限制。通过基于 EDT 的模型,可以避免 Qdisc 层的全局锁定,尤其是在多队列网卡的情况下。Cilium 的 eBPF 数据路径会将网络流量分类到每个节点的聚合中,然后在将数据包传递到 FQ leaf Qdiscs 前不久,通过在出口的网络数据包上设置最早离开时间戳,执行用户定义的  kubernetes.io/egress-bandwidth 速率。Qdiscs 维护每个流的状态,并根据数据包的时间戳来安排数据包的离开时间,确保数据包不会在时间戳规定的时间之前被发送出去。通过 eBPF 的灵活性,对 Pod 聚合体的分类不仅适用于直接路由,也适用于隧道或使用 L7 代理的情况。

与 eBPF 和 FQ 相比,在使用 HTB(Hierarchical Token Bucket, 分层令牌桶)进行速率限制的情况下,对应用延迟进行的评估表明,在改善传输延迟的同时,CPU 利用率也能显著降低。当 eBPF 和 FQ 结合使用时,第 95 百分位的延迟降低了约 20 倍,第 99 百分位的延迟降低了约 10 倍。
需求

实战: 启用带宽管理器

要启用带宽管理器:
  1. helm upgrade cilium cilium/cilium --version 1.13.4 \
  2.   --namespace kube-system \
  3.   --reuse-values \
  4.   --set bandwidthManager.enabled=true
复制代码
验证

状态验证

要验证您的安装是否与带宽管理器一起运行,请在任何 Cilium pod 中运行 cilium status,并查找报告 "BandwidthManager"状态的行,该行应显示 "EDT with BPF"。
具体如下:
  1. $ kubectl -n kube-system exec ds/cilium -- cilium status | grep BandwidthManager
  2. BandwidthManager:           EDT with BPF [CUBIC] [eth0]
复制代码
带宽管理器功能验证

下面是一个应用 Pod 的部署示例,由于使用了 kubernetes.io/egress-bandwidth 注释,其出口带宽被限制为 50 Mbit/s:
[code]cat




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4