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:
- 每个 Pod 启动时,Cilium 根据其标签(如
app=frontend)分配一个 24 位的数字身份。 - 网络策略基于身份编写,而非 IP 地址。
- 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 原生的
NetworkPolicyAPI,同时扩展了CiliumNetworkPolicyCRD,支持 L7、DNS、CIDR 等高级策略。
注意: 当 Cilium 启用
kubeProxyReplacement 时,kube-proxy 组件会被完全替换,所有 Service 流量由 eBPF 直接处理。这是 Cilium 实现高性能的关键配置,也是本课程后续章节优化拉取加速的基础。
1.4 本章小结
- Cilium 以 eBPF 为核心,解决了传统容器网络在性能、安全、可观测性上的三大痛点。
- 其基于身份的安全策略与 Hubble 可观测性,为云原生环境提供了细粒度控制与深度可见性。
- 在 Kubernetes 中,Cilium 作为 CNI 插件,完全兼容原生网络模型,并通过
kubeProxyReplacement实现更高效的 Service 转发。 - 理解 Cilium 的架构与核心特性,是后续章节优化镜像拉取加速、保障 SLO 的基础。