Cilium镜像拉取SLO违约监控与网络恢复 - 第1节

1.1 Cilium 项目背景

Cilium 是一个基于 eBPF(extended Berkeley Packet Filter)的开源网络、安全与可观测性项目,专为云原生环境(尤其是 Kubernetes)设计。其诞生源于传统容器网络方案(如 Calico、Flannel)在微服务规模增长后暴露出的性能瓶颈与安全粒度不足问题。

维度 传统方案痛点 Cilium 解决思路
网络转发 iptables 规则链随 Pod 数量线性膨胀,转发延迟抖动 eBPF 直接在内核态完成转发,规则 O(1) 复杂度
安全策略 基于 IP 的粗粒度隔离,Pod 重建后 IP 变化导致策略失效 基于身份(Identity)的 L3/L4/L7 策略,与 IP 解耦
可观测性 依赖 Sidecar 或代理抓包,资源开销大 eBPF 零侵入采集网络与应用层指标,开销极低
关键里程碑: Cilium 于 2021 年加入 CNCF 孵化,2023 年正式毕业,已成为 Kubernetes 网络插件中 eBPF 路线的首选方案。

1.2 核心特性:eBPF、可观测性、安全

1.2.1 eBPF 技术基石

eBPF 允许用户在 Linux 内核中安全地运行沙箱程序,无需修改内核源码或加载内核模块。Cilium 利用 eBPF 实现数据平面与控制平面的深度融合:

  • 网络转发: 通过 eBPF 的 TC(Traffic Control)和 XDP(eXpress Data Path)挂载点,在数据包到达内核协议栈前完成路由、封装、策略检查。
  • 服务负载均衡: 使用 eBPF 的 BPF_MAP_TYPE_SOCKHASH 实现高效的 ClusterIP 转发,避免 iptables DNAT 开销。
  • 可观测性: 通过 eBPF 的 kprobe/tracepoint 捕获系统调用、网络事件,生成 Hubble 可观测性数据。
性能对比: 在同等 1000 条网络策略场景下,Cilium 的 eBPF 转发延迟比 iptables 模式降低约 60%,CPU 占用减少 40%。

1.2.2 可观测性(Hubble)

Hubble 是 Cilium 的可观测性层,基于 eBPF 提供集群网络流量的实时可视化:

  • L3/L4 流日志: 记录源 IP、目的 IP、端口、协议、Verdict(允许/丢弃)。
  • L7 协议解析: 支持 HTTP、gRPC、Kafka 等协议,提取请求路径、方法、延迟、状态码。
  • 服务拓扑: 自动生成 Pod、Service、Ingress 之间的依赖关系图。
# 使用 hubble CLI 查看实时流量
hubble observe --from-pod default/my-app --to-pod default/backend --verdict DROPPED

1.2.3 安全(基于身份的策略)

Cilium 的安全模型摒弃了传统基于 IP 的策略,转而使用 Security Identity:

  1. 每个 Pod 启动时,Cilium 根据其标签(如 app=frontend)分配一个 24 位的数字身份。
  2. 网络策略基于身份编写,而非 IP 地址。
  3. eBPF 程序在数据路径上直接检查身份,策略生效时间从秒级降至微秒级。
策略类型 作用范围 示例
L3/L4 策略 IP + 端口 允许 app=frontend 访问 app=backend 的 8080 端口
L7 策略 HTTP 方法/路径 仅允许 GET /api/v1/orders 请求通过
DNS 策略 域名解析 仅允许 Pod 解析 *.internal.example.com

1.3 Cilium 与 Kubernetes 网络的关系

Cilium 在 Kubernetes 中承担 CNI(Container Network Interface) 插件的角色,负责 Pod 网络的创建、IP 分配、路由与策略实施。它与 Kubernetes 网络模型的对应关系如下:

  • Pod 网络: Cilium 通过 eBPF 为每个 Pod 分配 IP,并维护一个全局的 Endpoint 对象,记录 Pod 的身份、IP、MAC 与策略。
  • Service 抽象: Cilium 使用 eBPF 的 BPF_MAP_TYPE_SOCKHASH 实现 ClusterIP、NodePort、LoadBalancer 类型的 Service,无需 kube-proxy。
  • 网络策略: Cilium 完全兼容 Kubernetes 原生的 NetworkPolicy API,同时扩展了 CiliumNetworkPolicy CRD,支持 L7、DNS、CIDR 等高级策略。
注意: 当 Cilium 启用 kubeProxyReplacement 时,kube-proxy 组件会被完全替换,所有 Service 流量由 eBPF 直接处理。这是 Cilium 实现高性能的关键配置,也是本课程后续章节优化拉取加速的基础。
Cilium 在 Kubernetes 中的核心架构 Kubernetes 集群 Kubernetes API Server Pod / Service / Endpoint NetworkPolicy 对象 CiliumNetworkPolicy CRD Cilium Operator 身份分配 (Security Identity) KVStore 同步 (etcd) CNI 配置管理 数据平面 (每个 Node 上运行) Cilium Agent eBPF 程序加载 Endpoint 管理 eBPF 内核程序 TC / XDP 挂载点 策略执行引擎 Hubble 流日志 指标 Cilium 通过 eBPF 将网络策略执行下沉到内核,实现高性能与高安全

1.4 本章小结

  • Cilium 以 eBPF 为核心,解决了传统容器网络在性能、安全、可观测性上的三大痛点。
  • 其基于身份的安全策略与 Hubble 可观测性,为云原生环境提供了细粒度控制与深度可见性。
  • 在 Kubernetes 中,Cilium 作为 CNI 插件,完全兼容原生网络模型,并通过 kubeProxyReplacement 实现更高效的 Service 转发。
  • 理解 Cilium 的架构与核心特性,是后续章节优化镜像拉取加速、保障 SLO 的基础。