Cilium / eBPF 数据面内核:从 Identity 到包路径
内容提要
该文章深入解析Cilium eBPF数据面,聚焦东西向包路径、Endpoint/Identity、BPF Map及kube-proxy替代等核心问题。系列共16篇,涵盖策略编译、Hubble观测、加密与选型对比,提供阅读路径和排障坐标系,帮助网络工程师定位延迟与失败层,并明确何时选择Cilium而非Calico或sidecar方案。
延伸解读
阅读路径设计
文章将16篇内容按依赖关系组织成流程图,并给出多条推荐路径。例如,快速建立坐标系可读1→2→5→6→7→13,而关注BPF原语则读3→4→5。这种设计帮助读者根据自身目标选择阅读顺序,避免盲目通读,提高学习效率。
排障坐标系的价值
文章提出用五轴坐标系(丢包、Policy denied、identity漂移、Service黑洞、加密失败)来定位Cilium数据面故障。每个轴都对应具体的status/Hubble/map层,强调一次只验证一个轴,避免混淆。这种系统化方法有助于网络工程师快速归因问题,而非盲目排查。
版本锚定的重要性
文章明确将内容锚定在Cilium v1.20.0,并指出第三方升版需显式标注。这提醒读者,Cilium功能和行为可能随版本变化,阅读时需注意版本差异,避免将旧版本经验套用到新环境。
Q&A
Cilium eBPF 数据面中,东西向包路径主要涉及哪些关键组件?
东西向包路径主要涉及 Endpoint/Identity、BPF 挂载点(TC/XDP/cgroup)、关键 BPF Map(如 policy、service、CT)以及 kube-proxy 替代等组件。
Cilium 的 Identity 机制相比传统 IP 策略有什么优势?
Cilium 使用数字身份(Numeric Identity)替代 IP 地址进行策略控制,消除了对 IP 的依赖,使得策略在容器迁移或 IP 变化时依然有效,同时支持基于标签的选择,简化了策略管理。
Cilium 如何替代 kube-proxy?相比 iptables 有什么优势?
Cilium 通过 eBPF 实现 kube-proxy 的功能,支持 ClusterIP、NodePort 等服务的负载均衡,相比 iptables 具有更高的性能和可扩展性,且能提供更细粒度的可观测性。
Cilium 的 Hubble 组件提供哪些信号?如何帮助排障?
Hubble 提供流级别的可观测性,包括 flow 字段(如源/目的 IP、端口、身份、策略结果等)和 metrics,帮助定位丢包、策略拒绝等问题,并可与 cilium status、bpftool 等工具结合进行排障。
在什么情况下应该选择 Cilium 而不是 Calico 或 sidecar 方案?
当需要高性能的数据面、细粒度的安全策略(基于身份)、以及深度可观测性时,Cilium 是更好的选择;而 Calico 更简单,sidecar 方案(如 Istio)适合需要 L7 处理的场景。具体选型需根据业务需求权衡。
Cilium 的 BPF Map 有哪些关键类型?它们各自的作用是什么?
关键 BPF Map 包括 policy map(存储安全策略)、service map(服务负载均衡规则)、CT map(连接跟踪)等,它们分别负责策略执行、服务发现和连接状态跟踪,是数据面路径的核心状态存储。
Cilium 的透明加密(WireGuard/IPsec)有哪些路径税和失败模式?
透明加密会增加 CPU 开销和延迟,失败模式包括密钥配置错误、加密隧道建立失败等,可能导致丢包或连接中断。需要监控加密状态和性能指标。
Cilium 的排障坐标系包括哪些维度?如何定位丢包问题?
排障坐标系包括通用丢包、Policy denied、identity 漂移、Service/ClusterIP 黑洞、透明加密失败五个维度。定位丢包时,可结合 cilium status、Hubble flow、bpftool 等工具,逐层检查网络路径和策略。