4、升级前的环境评估:Cilium版本兼容性矩阵、Kubernetes版本依赖、内核版本与eBPF特性要求

Cilium 升级并非简单的二进制替换,其核心依赖链涉及 Kubernetes API 版本、内核 eBPF 特性 以及 Cilium 自身组件间的兼容性。跳过环境评估直接升级,极易导致 CNI 插件失效、节点 NotReady 或租户网络策略丢失。本节提供完整的评估清单与兼容性矩阵。

4.1 Cilium 版本兼容性矩阵

Cilium 遵循语义化版本控制,但跨大版本升级(如 1.12 → 1.14)时,CRD 结构、Agent 与 Operator 通信协议、Hubble 数据模型均可能发生不兼容变更。下表列出主流版本的升级路径与关键约束:

源版本 目标版本 升级方式 CRD 迁移 API 兼容性
1.12.x 1.13.x 原地升级 自动 完全兼容
1.13.x 1.14.x 原地升级 自动(需注意 CiliumNetworkPolicy 字段弃用) 向后兼容
1.14.x 1.15.x 原地升级 自动 完全兼容
1.12.x 1.14.x 逐步升级(先升 1.13) 需手动确认 CRD 版本 不直接兼容
1.13.x 1.15.x 逐步升级(先升 1.14) 需手动确认 CRD 版本 不直接兼容
⚠️ 关键风险: 跨两个大版本升级时,Cilium Agent 可能无法解析新 CRD 字段,导致 CiliumNetworkPolicy 规则丢失。务必遵循 N-1 → N 的逐步升级策略。

4.2 Kubernetes 版本依赖

Cilium 利用 Kubernetes 的 EndpointSlice、NetworkPolicy、Service 等 API 资源。不同 Cilium 版本对 Kubernetes 版本有明确的最低要求:

  • Cilium 1.12+:要求 Kubernetes ≥ 1.16(支持 EndpointSlice v1)。
  • Cilium 1.14+:要求 Kubernetes ≥ 1.20(支持 Service Topology 与 NodePort 优化)。
  • Cilium 1.15+:要求 Kubernetes ≥ 1.24(移除 Dockershim 后的稳定 API)。
  • Cilium 1.16+:要求 Kubernetes ≥ 1.26(支持 KubeProxy 替代模式与 Alpha API)。
📌 租户隔离场景提示: 如果集群运行 Kubernetes 1.22 且使用 Cilium 1.12,直接升级到 Cilium 1.16 将导致 Agent 无法启动,因为 1.16 依赖 Kubernetes 1.26 的 API。必须先升级 Kubernetes 控制面。

4.3 内核版本与 eBPF 特性要求

Cilium 的核心能力(如 XDP 加速、Bandwidth Manager、SRv6)依赖特定内核版本的 eBPF 特性。升级前必须确认节点内核是否满足目标 Cilium 版本的最低要求。

eBPF 特性 最低内核版本 依赖的 Cilium 功能 租户隔离影响
BPF 辅助函数(bpf_skb_change_tail) 4.19 基础 CNI 连通性 无
BPF 映射类型(BPF_MAP_TYPE_PERCPU_HASH) 5.1 网络策略性能优化 高并发租户策略可能降级
BPF 原子操作(BPF_XCHG) 5.10 Bandwidth Manager 带宽隔离失效
BPF 迭代器(bpf_iter) 5.15 Hubble 网络可观测性 租户流量监控中断
BPF 链接(BPF_LINK_TYPE_NETKIT) 6.3 KubeProxy 替代模式 Service 隔离策略失效
💡 最佳实践: 对于生产环境,建议内核版本至少为 5.10 LTS(支持 Bandwidth Manager 与稳定 eBPF 特性)。如果计划启用 KubeProxy 替代模式,内核必须 ≥ 6.3。

4.4 升级前环境评估流程图

以下 SVG 图展示了从收集集群信息到确认升级路径的完整评估流程:

升级前环境评估流程图 升级前环境评估流程 收集集群信息 检查 Kubernetes 版本 检查内核版本 验证 eBPF 特性 匹配兼容性矩阵 确认升级路径 说明:每个检查点不通过时,需回退至对应步骤修复后再继续

4.5 内核特性检测命令清单

在升级前,建议在每个节点上执行以下命令,确认内核是否支持目标 Cilium 版本所需的 eBPF 特性:

# 检查内核版本
uname -r

# 检查 BPF 辅助函数支持
bpftool feature probe | grep -E "bpf_skb_change_tail|bpf_xdp_adjust_head"

# 检查 BPF 映射类型
bpftool feature probe | grep -E "BPF_MAP_TYPE_PERCPU_HASH|BPF_MAP_TYPE_LRU_HASH"

# 检查 BPF 原子操作
bpftool feature probe | grep "BPF_XCHG"

# 检查 BPF 迭代器
bpftool feature probe | grep "bpf_iter"

# 检查 BPF 链接类型
bpftool feature probe | grep "BPF_LINK_TYPE_NETKIT"
📋 自动化检查脚本: 建议将上述命令封装为 preflight-check.sh,在集群所有节点并行执行,输出结果汇总到评估报告。如果某个特性缺失,需评估该特性对租户隔离功能的影响程度。

4.6 租户隔离场景的特殊评估项

对于多租户集群,升级前还需额外验证以下三项:

  • CiliumNetworkPolicy CRD 版本:确认目标 Cilium 版本是否支持当前使用的策略字段(如 toFQDN、http 规则)。
  • Hubble 数据保留策略:升级 Hubble 可能导致历史流日志丢失,需提前导出租户流量审计数据。
  • ClusterMesh 跨集群策略:如果使用 ClusterMesh 实现跨集群租户隔离,升级前必须确保所有集群的 Cilium 版本一致。
⚠️ 租户隔离风险: 如果内核版本低于 5.10,升级后 Bandwidth Manager 将无法启用,租户间的带宽隔离策略会降级为无 QoS 保障的默认模式。务必在升级前完成内核升级。