2. Cilium基础回顾:Cilium架构组件、eBPF数据路径与CiliumEndpoint概念

在深入多租户控制面架构之前,必须重新校准对Cilium核心组件的理解。本章聚焦三个基础支柱:控制面组件(Agent & Operator)、数据面引擎(eBPF)以及关键抽象(CiliumEndpoint)。这些概念是后续所有策略配置工程的基石。

2.1 Cilium架构组件:Agent与Operator的分工

Cilium采用去中心化的控制面设计,每个Kubernetes节点上运行一个Cilium Agent,而集群范围内仅运行一个或少数几个Cilium Operator。这种分工决定了策略下发与状态管理的路径。

组件 部署模式 核心职责 与多租户的关系
Cilium Agent DaemonSet(每节点一个) 管理本地eBPF程序、监听Kubernetes资源、维护本地Endpoint状态、执行网络策略 每个Agent独立处理本节点租户Pod的策略计算,是策略执行的最后一公里
Cilium Operator Deployment(通常2副本) 处理集群级任务:IPAM分配、Service倒换、CiliumNetworkPolicy状态聚合、节点故障检测 Operator不参与数据面转发,但负责多租户IP池的分配与回收
CNI Plugin 二进制插件(由kubelet调用) 在Pod创建时调用Cilium Agent分配IP、配置网络命名空间、挂载eBPF程序 CNI是租户Pod进入Cilium网络的第一道关口
关键理解: Agent是“本地策略执行者”,Operator是“集群状态协调者”。在多租户场景中,Agent负责实时计算租户隔离策略,Operator负责确保租户IP资源不冲突。

2.2 eBPF数据路径:从Pod到网络的完整链路

Cilium的数据面完全构建在eBPF之上,绕过了传统的iptables/IPVS路径。eBPF程序被挂载在网络栈的多个钩子点,实现高性能转发与策略执行。

eBPF数据路径:Pod出站流量钩子点 Pod (租户A) veth Pair TC Ingress钩子 策略匹配引擎 XDP (早期过滤) L3/L4转发 L7代理 (可选) TC Egress钩子 数据路径说明: 1. Pod发出的数据包首先经过veth pair到达宿主机网络栈。 2. TC Ingress钩子(从宿主机视角)捕获数据包,执行身份与策略查找。 3. 策略匹配引擎根据CiliumEndpoint身份决定允许/拒绝/重定向到L7代理。 4. 通过TC Egress钩子后,数据包进入真正的网络接口。 5. XDP钩子在驱动层提供更早的过滤能力,适用于DDoS防护场景。
性能优势: eBPF数据路径避免了内核态与用户态的频繁切换。Cilium Agent仅在策略变更时更新eBPF map,数据面转发完全在内核eBPF虚拟机中完成,延迟通常在微秒级。

2.3 CiliumEndpoint:身份与策略的绑定点

CiliumEndpoint(CEP)是Cilium中最重要的抽象之一。每个Kubernetes Pod在Cilium网络中都对应一个CEP资源,它记录了该Pod的网络身份(Security Identity)、IP地址、所属节点以及当前策略状态。

CEP是策略引擎进行决策的核心依据。当Cilium Agent收到一个数据包时,它通过查找源和目标CEP的身份标签,快速匹配对应的CiliumNetworkPolicy规则。

CiliumEndpoint:身份与策略的绑定关系 Pod app=frontend CiliumEndpoint Identity: 12345 IP: 10.0.1.5 Labels: app=frontend CiliumNetworkPolicy fromEndpoints: matchLabels: app=backend CEP在多租户中的关键作用: 1. 每个租户Pod拥有独立的CEP,身份标签(Identity)由Cilium根据Pod标签自动分配。 2. 策略规则通过 matchLabels 或 matchExpressions 匹配CEP的身份标签,而非直接匹配IP。 3. 当Pod重启或迁移时,CEP的IP可能变化,但身份标签保持不变,策略无需更新。 4. 多租户隔离策略通常基于“租户标签”匹配CEP,实现租户级别的网络隔离。 5. CEP的状态字段(如 policy-ingress/egress)实时反映策略应用结果,便于排障。

2.4 核心概念总结

概念 作用域 与多租户策略的关联
Cilium Agent 节点级 本地策略执行,负责本节点租户Pod的eBPF程序加载与更新
Cilium Operator 集群级 租户IP池管理、集群策略状态聚合
eBPF数据路径 内核级 高性能策略匹配,支持L3/L4/L7的租户隔离
CiliumEndpoint Pod级 身份标签绑定,策略匹配的核心对象,支持动态迁移
常见误区: 不要将CiliumEndpoint与Kubernetes Endpoint混淆。Kubernetes Endpoint是Service的后端Pod IP列表,而CiliumEndpoint是Cilium内部用于策略决策的身份对象。在多租户场景中,CEP的身份标签是策略隔离的第一道防线。