Cilium / eBPF 数据面内核:从 Identity 到包路径

💡 原文中文,约4000字,阅读约需10分钟。
📝

内容提要

该文章深入解析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 等工具,逐层检查网络路径和策略。

🏷️

标签

➡️

继续阅读