1. Cilium 架构概述:组件、角色与平面关系
Cilium 是一个基于 eBPF(extended Berkeley Packet Filter)的云原生网络、安全与可观测性项目。理解其架构是诊断证书轮换失败与连通性故障的前提。本节从组件构成、Agent 与 Operator 的分工、数据平面与控制平面的交互三个维度展开。
1.1 核心组件一览
Cilium 部署在 Kubernetes 集群中,主要由以下组件构成:
| 组件 | 部署形态 | 核心职责 |
|---|---|---|
| Cilium Agent | DaemonSet(每节点一个 Pod) | 管理节点 eBPF 程序、分配 IP、处理网络策略、维护证书与 TLS 连接 |
| Cilium Operator | Deployment(通常 1~2 副本) | 集群级协调:IPAM 池管理、端点清理、证书签发与轮换协调 |
| Cilium CNI 插件 | 二进制文件(由 kubelet 调用) | 将 Pod 接入 Cilium 网络,触发 Agent 进行端点配置 |
| KV Store(可选) | etcd 或 Kubernetes CRD 后端 | 存储集群状态、服务映射、身份标识(Identity) |
| Hubble(可选) | DaemonSet + Deployment | 可观测性层:流量抓取、服务拓扑、网络策略审计 |
关键认知: 在证书轮换场景中,Cilium Agent 是证书的实际使用者与持有者,Cilium Operator 负责触发轮换逻辑。两者之间的通信依赖 mTLS,一旦证书过期或轮换失败,Agent 与 Operator 的控制通道将中断,进而引发连通性故障。
1.2 Agent 与 Operator 的角色分工
Agent 和 Operator 虽然同属 Cilium 控制面组件,但职责边界清晰:
- Cilium Agent(节点级)
- 运行在每个 Kubernetes 节点上,直接操作该节点的 eBPF 程序。
- 监听本地 Pod 的创建/删除事件,通过 eBPF 实现网络转发与策略执行。
- 维护与 API Server 的 Watch 连接,同步 Endpoint、NetworkPolicy 等资源。
- 持有 TLS 证书,用于与 Operator、KV Store 及其他 Agent 之间的 mTLS 通信。
- Cilium Operator(集群级)
- 负责全局协调,不直接操作 eBPF。
- 管理 IP 地址池(IPAM)的分配与回收。
- 清理孤儿端点(Orphan Endpoint)。
- 协调证书轮换:监控证书过期时间,向 Agent 下发轮换指令或重新签发。
故障关联: 证书轮换失败通常表现为 Agent 无法与 Operator 建立 mTLS 连接,或 Agent 持有的证书已被 Operator 吊销但未及时更新。此时,Agent 会进入“证书错误”状态,拒绝处理网络策略更新,导致 Pod 间连通性中断。
1.3 数据平面与控制平面关系
Cilium 采用典型的数据平面与控制平面分离架构,两者通过 eBPF 和 gRPC 通道交互:
- 控制平面(Control Plane)
- 包含 Cilium Agent 的控制逻辑、Cilium Operator、KV Store 以及与 Kubernetes API Server 的交互。
- 负责策略解析、身份管理、服务发现、证书签发与轮换。
- 控制平面组件之间通过 gRPC over mTLS 通信,证书是信任的基石。
- 数据平面(Data Plane)
- 完全运行在 Linux 内核的 eBPF 程序中,由 Cilium Agent 编译并加载。
- 负责实际的网络包转发、负载均衡、网络策略过滤、加密(WireGuard/IPsec)。
- 数据平面不直接参与证书轮换,但依赖控制平面提供的正确身份标识(Identity)和策略规则。
下图展示了 Cilium 的组件拓扑与控制/数据平面的交互关系:
1.4 证书在架构中的位置
证书是 Cilium 控制平面信任链的核心。在证书轮换故障场景中,以下组件间的通信会直接受到影响:
- Agent ↔ Operator:gRPC 双向 mTLS,用于端点同步、身份分配、证书轮换指令。
- Agent ↔ KV Store:如果使用 etcd 后端,Agent 通过 mTLS 读写集群状态。
- Agent ↔ Agent:跨节点通信(如 NodePort、ClusterIP)依赖证书验证身份。
- Agent ↔ API Server:Watch 连接通常使用 ServiceAccount ,但部分高级特性也依赖证书。
常见故障模式: 当 Agent 证书过期且轮换失败时,Agent 会持续重试 mTLS 握手,消耗 CPU 并产生大量错误日志。同时,Operator 会将该 Agent 标记为“不可达”,停止下发新的网络策略,导致该节点上的 Pod 无法与集群其他部分正常通信。这是本课程后续章节重点修复的场景。
1.5 架构总结
理解 Cilium 架构是诊断证书轮换问题的第一步。核心要点归纳如下:
| 维度 | 关键结论 |
|---|---|
| 组件关系 | Agent 是节点级执行者,Operator 是集群级协调者,两者缺一不可 |
| 平面分离 | 控制平面负责策略与证书,数据平面负责转发与加密 |
| 证书角色 | 证书是控制平面 mTLS 通信的信任锚点,轮换失败直接导致控制通道中断 |
| 故障影响 | 证书问题 → 控制平面中断 → 策略无法更新 → 数据平面连通性故障 |