尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Cilium 1.21.0-pre.0 解读:delta-split xDS 让网络策略走增量同步

Cilium 1.21.0-pre.0 解读:delta-split xDS 让网络策略走增量同步 在 Kubernetes 集群里用 Cilium 做 L7 网络策略的人多半遇到过这样的现象策略越多、Endpoint 越多每一次kubectl apply一个 CiliumNetworkPolicy 之后节点上 cilium-agent 内嵌的 Envoy 都要抖一下。根因之一是 Cilium 向 Envoy 下发配置走的 xDS 通道在 1.21 之前网络策略相关资源默认以 State-of-the-WorldSOTW全量方式推送每次变更都要把当前全量策略重新喂一遍给 Envoy。策略规模一大CPU 抖动和策略生效延迟都会被放大。2026 年 8 月 3 日发布的 Ciliumv1.21.0-pre.0预发布版里出现了一条值得注意的主特性Major ChangeEnvoy 资源Listeners、Network Policies 等现在可以增量同步并通过新选项--envoy-xds-modedelta-splitHelm 值envoy.xdsModedelta-split开启。本文基于该版本的官方发布说明与对应的 GitHub PR拆解 delta-split xDS 到底改了什么、怎么开、以及它目前还不是生产默认的几个诚实限制。范围与证据本文所有结论均可追溯到以下公开来源写作时核对日期为 2026-08-05Ciliumv1.21.0-pre.0发布说明与 Release 页面GitHub。实现 delta-split xDS 的 PR#45288及其 GitHub API 元数据合并状态、合并时间、合并 commit。Cilium 仓库主页 API 返回的项目元信息描述、语言、许可证。需要先说清楚一件事v1.21.0-pre.0是预发布版Pre-release不是稳定版delta-split xDS 在该版本中是opt-in需显式开启的能力并未成为默认。我没有在本地跑基准测试文中不会出现快了 X%CPU 降了 Y%这类没有证据支撑的数字。涉及性能收益的描述均会标注为 PR 作者的目标性陈述而非实测值。说明GitHub 仓库的 star 数等动态统计在本文写作时通过 API 读取到的快照与 releases 时间线不一致疑似代理缓存为避免写入不可核实的数据本文与配图均不引用 star 数。一条事实表先立在这里事实取值来源项目cilium/ciliumeBPF-based Networking, Security, and Observabilityhttps://github.com/cilium/cilium主语言 / 许可证Go / Apache-2.0GitHub 仓库元信息本次版本v1.21.0-pre.0Pre-releaseRelease 1.21.0-pre.0 · cilium/cilium · GitHub发布时间2026-08-03发布页面显示 03 Aug 19:58同上 Release 页面发布者cilium-release-bot同上起始 commite864986同上核心特性Envoy 资源可增量同步新增--envoy-xds-modedelta-split/ Helmenvoy.xdsModedelta-splitRelease 页面 Major Changes实现来源 PR#45288Envoy: Implement Delta xDS作者 jrajahalmehttps://github.com/cilium/cilium/pull/45288PR 合并状态已合并closed/merged2026-07-14merge_commitedcb780b065e502df1bf6ed46f1fa9da2d51e1a5GitHub Pulls API性能描述措辞reducing CPU load and policy update latencyPR 作者目标性陈述非本文实测Release 页面 / PR 描述SOTW vs delta-split先把概念说清楚Envoy 的 xDS 协议有两类推送方式SOTWState-of-the-World全量和 Incremental增量。SOTW 每次把当前世界的完整状态整体发给 EnvoyIncremental 只发送本次新增/更新/删除的差异。Cilium 在 cilium-agent 内运行了一个 xDS server把 CiliumNetworkPolicy 等资源翻译成 Envoy 能消费的 xDS 资源再推送给同 Pod 内的 Envoy。PR#45288的描述把 delta-split 做的事讲得很直接把 selectors 与 policies 分开同步并对 selectors 和 Network Policies即 NetworkPolicyResources实现 Delta xDS 更新从而使一次增量策略更新只包含新增/更新/删除的 selectorsshould be much faster than a full State-of-the-World policy update。注意这句much faster是 PR 作者的目标性陈述不是本文的实测结论。可以确定的、有证据支撑的事实只有两点第一delta-split 把推送模型从全量改成了增量第二它把 selectors 与 policies 拆成了两条独立的同步通道这正是 split 的含义。图 1SOTW 与 delta-split 两种 xDS 推送模型的数据流对比概念示意图不代表实测数据。左图为 1.21 之前的全量推送每次策略变更都把全量策略重发给 Envoy右图为 delta-splitselectors 与 policies 拆分仅推送差异。在 1.21.0-pre.0 里 delta-split 长什么样落到可配置的形态上发布说明给出了两个对等的开关cilium-agent 命令行选项--envoy-xds-modedelta-splitHelm 值envoy.xdsModedelta-split也就是说如果你已经在用 Cilium 的 Helm Chart升级到 1.21.0-pre.0 后只需在 values 里加一行即可在测试集群里开启该模式。一个最小化的 values 片段如下# values.yaml仅 delta-split 相关字段其余沿用默认 envoy: enabled: true # 1.21 默认仍以 L4 为主L7/Envoy 需显式启用 xdsMode: delta-split # 1.21.0-pre.0 新增不设置则沿用旧行为对应的安装/升级命令# 拉取 1.21.0-pre.0 的 Helm Chart 并启用 delta-split helm upgrade --install cilium cilium/cilium \ --version 1.21.0-pre.0 \ --namespace kube-system \ -f values.yaml安装完成后确认 agent 实际生效的选项值这一步用于自检不依赖任何外部指标# 查看 cilium-agent 启动参数确认 envoy-xds-mode 已生效 kubectl -n kube-system get pods -l app.kubernetes.io/namecilium-agent \ -o name | head -n1 | xargs -I{} kubectl -n kube-system exec {} -- \ cilium-agent --help | grep -A1 envoy-xds-mode# 或者直接看 agent 进程的运行参数 kubectl -n kube-system get pods -l app.kubernetes.io/namecilium-agent -o name \ | head -n1 | xargs -I{} kubectl -n kube-system exec {} -- \ sh -c cat /proc/1/cmdline | tr \0 | grep -o -- --envoy-xds-mode[^ ]*需要强调xdsMode只在启用了 EnvoyL7 能力的前提下才有意义。如果你的集群只用 Cilium 做 L3/L4 网络没有开 L7 策略delta-split 不会带来可感知的变化。一次策略变更推送内容有什么不同这是理解 delta-split 价值的关键。假设你只新增了一条 CiliumNetworkPolicy 规则旧行为SOTWcilium-agent 重新计算当前全量策略集合把所有 Listeners、所有 NetworkPolicy 资源整体重新下发一遍给 Envoy。策略越多单次变更的推送体积越大与本次到底改了什么无关。delta-split 行为cilium-agent 只把本次新增/更新/删除的 selectors 和受影响的 NetworkPolicy 资源作为差异下发。推送体积与本次变更量成正比而不是与全量策略规模成正比。这对策略规模大、变更频繁的集群例如多租户、CI 环境频繁 apply 策略意义更明显。但再次提醒这只是模型层面的分析具体收益取决于你集群的策略规模与变更频率需要自行实测。图 2delta-split xDS 从 PR 到预发布的关键时间线。三个节点均来自公开来源PR#45288于 2026-04-10 开启初始标题 Envoy: Delta NPDS PoC状态 Draft同 PR 于 2026-07-14 合并标题已更新为 Envoy: Implement Delta xDSmerge_commitedcb780v1.21.0-pre.0于 2026-08-03 发布。本图数据另存于 data/release-timeline.json。1.21.0-pre.0 里其他值得留意的变化除了 delta-split这个预发布版还有几条与运维直接相关的变更均来自发布说明弃用 WireGuard 节点加密PR#47219Minor Changes。如果你在用 WireGuard Node Encryption需要提前规划迁移路径后续版本会进一步移除。iptables 从 1.8.8 升到 1.8.11PR#47623。属于构建依赖升级对运行时行为通常无感但升级时若遇到 iptables 相关的兼容性问题可以对照这条排查。clustermesh 静态 IP 变更不再重启 PodPR#47190。当远端 clustermesh-apiserver 的 IP 以静态方式不带 DNS 名变更时不再触发 Pod 重启对多集群运维是减少抖动的小改进。CT map 自适应 GC 间隔计算改进PR#46796。影响连接跟踪表的垃圾回收节奏属内部优化。新增 agent 侧 baseline network driver 与 dummy device managerPR#47254Major Changes。这是为后续网络驱动扩展打地基的内部基础设施普通用户暂无直接可观测行为。Bugfixenvoy 恢复 http-idle-timeout 作为 route idle timeout 的来源PR#47583。如果你踩过 L7 超时配置不生效的问题这条值得关注。完整变更列表请以官方 Release 页面为准本文只挑了与运维相关性较高的几条。限制与诚实说明预发布版不要用于生产。v1.21.0-pre.0明确标注为 Pre-release特性集合在正式 1.21 版本前仍可能调整。delta-split 是 opt-in 预览能力非默认。开启前请在测试环境验证它是否进入 1.21 稳定版的默认行为以官方最终发布说明为准。不提供性能基准。本文没有跑 benchmarkreducing CPU load and policy update latency 是发布说明与 PR 作者的目标性陈述不是本文实测。如果你需要量化收益应在你自己的集群、你自己的策略规模下实测。依赖上游 Envoy。PR 早期描述中提到该特性与 Envoy 的开发构建相关delta-split 的最终行为依赖 Cilium 所打包的 Envoy 版本升级时请一并核对 cilium-envoy 镜像版本。命令以 Linux shell 为准。文中kubectl ... | xargs命令在 Linux/macOS 直接可用Windows 下请在 WSL 或 Git Bash 中执行PowerShell 的管道语义不同。结论与项目链接v1.21.0-pre.0最值得关注的是把 Envoy xDS 从全量推送推向增量同步的 delta-split 模式它把网络策略的同步粒度从整个世界细化到了本次差异。对策略规模大、变更频繁的集群这是一个方向性的改进但它是预发布、opt-in、未默认启用离生产可用还有距离具体收益需自行实测。如果你的集群在用 Cilium 的 L7 能力且策略量较大值得在测试环境用envoy.xdsModedelta-split开起来观察行为并跟踪 1.21 稳定版的后续说明。项目地址https://github.com/cilium/cilium 本次发布页面https://github.com/cilium/cilium/releases/tag/v1.21.0-pre.0 核心实现 PRhttps://github.com/cilium/cilium/pull/45288 。
返回列表