绕过 iptables 连接跟踪

对于无法使用 eBPF Host-Routing 并且因此网络数据包仍需要遍历主机命名空间中的常规网络堆栈的情况,iptables 会增加大量成本。这种遍历成本可以通过禁用所有 Pod 流量的连接跟踪要求来最小化,从而绕过 iptables 连接跟踪器。

要求:

内核 >= 4.19.57, >= 5.1.16, >= 5.2
直接路由配置
基于 eBPF 的 kube-proxy 替换
基于 eBPF 的伪装或不伪装

要启用 iptables 连接跟踪绕过:

  1. helm install cilium cilium/cilium -version 1.11.2 \
  2. --namespace kube-system \
  3. --set installNoConntrackIptablesRules=true \
  4. --set kubeProxyReplacement=strict

MTU

最大传输单元 (MTU) 会对配置的网络吞吐量产生重大影响。Cilium 会自动检测底层网络设备的 MTU。因此,如果您的系统配置为使用巨型帧,Cilium 将自动使用它。

要从中受益,请确保您的系统配置为在网络允许的情况下使用巨型帧。

带宽管理器

Cilium 的带宽管理器负责更有效地管理网络流量,目标是提高整体应用程序延迟和吞吐量。
除了原生支持 Kubernetes Pod 带宽注释外,Cilium 1.9 中首次引入的 带宽管理器还在所有面向外部的网络设备上设置公平队列(FQ)队列规则以支持 TCP 堆栈调步(例如来自 EDT/BBR)以及为网络堆栈设置最佳服务器级 sysctl 设置。

要求:

内核 >= 5.1
直接路由配置或隧道
基于 eBPF 的 kube-proxy 替换

要启用带宽管理器:

  1. helm install cilium cilium/cilium --version 1.11.2 \
  2. --namespace kube-system \
  3. --set bandwidthManager=true \
  4. --set kubeProxyReplacement=stric
文档更新时间: 2022-07-01 09:20   作者:张尚