news 2026/4/19 10:20:15

Cilium/eBPF:下一代网络可观测性与安全

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cilium/eBPF:下一代网络可观测性与安全

文章目录

    • 一、iptables 在大规模集群里的天花板
    • 二、eBPF 是什么:内核里的沙箱
      • 2.1 从 BPF 到 eBPF
      • 2.2 验证器:沙箱的核心
    • 三、Cilium 数据面:怎么用 eBPF 替代 kube-proxy
      • 3.1 三个挂载点
      • 3.2 kube-proxy 的 iptables vs Cilium 的 eBPF
    • 四、bpftrace:自定义网络诊断工具
      • 4.1 为什么 bpftrace 在 CSDN 是空白
      • 4.2 两个完整可运行的单行命令
    • 五、Hubble:服务拓扑与流量可视化的完整实现
      • 5.1 为什么需要 Cilium 专用可观测性
      • 5.2 Hubble 的数据来源
      • 5.3 诊断示例:某服务间调用超时
    • 六、NetworkPolicy:从标签到身份
      • 6.1 传统 iptables 方案的问题
      • 6.2 CiliumNetworkPolicy 示例
    • 七、性能对比:iptables 与 eBPF 的量级差距
    • 八、小结:谁应该考虑 Cilium

核心问题:eBPF 怎么在不修改代码的前提下追踪网络流量?Cilium 凭什么能替代 kube-proxy?


一、iptables 在大规模集群里的天花板

Kubernetes 默认的 Service 负载均衡依赖 kube-proxy 在每个节点上注入 iptables 规则。节点少的时候没问题——5000 个 Pod 的集群,iptables 规则数量轻松突破 10 万条,每次 Service 变更都要全量扫描所有规则,端到端延迟从 0.5ms 跳到 15ms。

这是 iptables 的设计代价:它是通用防火墙,不是高性能负载均衡器。规则越多,查找越慢,没有例外。

Cilium 的答案是:不走 iptables,在内核里直接用 eBPF 程序处理数据包转发。把"规则匹配"变成"哈希查找",把 O(n) 变成 O(1)。


二、eBPF 是什么:内核里的沙箱

2.1 从 BPF 到 eBPF

BPF(Berkeley Packet Filter)最初是 1992 年的一篇论文,目的是让数据包过滤不需要在内核和用户态之间来回拷贝数据。传统方案:内核把包拷给用户态,用户态过滤完再决定要不要。

BPF 的创新:在内核里运行用户提供的过滤程序,只把匹配结果返回用户态。数据包本身不离开内核。

eBPF(extended BPF,Linux 3.15+)在 BPF 基础上大幅扩展:

维度经典 BPFeBPF
指令限制512 条无硬限制,受验证器限制
数据结构只读寄存器64-bit 通用寄存器 + 栈空间
可访问的数据数据包本身所有内核数据结构(sk_buff、socket、task_struct 等)
Map 支持哈希表、数组、堆栈、环形缓冲区……
尾调用eBPF 程序之间互相跳转
JIT 编译即时编译成机器码,接近原生速度

2.2 验证器:沙箱的核心

eBPF 程序不能直接跑在内核里——先经过验证器(Verifier),检查三件事:

  1. 不崩溃:程序不能访问越界内存,不能有未初始化变量
  2. 有穷 loops:必须证明所有循环有限次迭代,不能写出死循环
  3. 不伤害内核:不能做拒绝服务攻击,不能修改内核只读区域

验证通过

用户态:编写 eBPF 程序(clang 编译)

clang → eBPF 字节码

内核验证器
1. 模拟执行,检查所有路径
2. 拒绝无限循环/越界访问
3. 检查特权级别

JIT 编译
字节码 → 机器码

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 10:08:02

不止是点灯:用树莓派GPIO控制探索智能家居的起点(Python实战)

从LED到智能家居:树莓派GPIO控制的Python实战进阶指南 第一次看到树莓派上那个小小的LED灯闪烁时,我意识到这不仅仅是一个电子实验——这是打开智能家居世界大门的钥匙。作为一位从点亮第一个LED开始,最终构建了整套家庭自动化系统的开发者&a…

作者头像 李华
网站建设 2026/4/19 10:07:56

告别拍脑袋!用Python+MindOpt手把手教你搞定营销预算分配(附实战代码)

用PythonMindOpt实现营销预算分配的工程实践 预算分配一直是营销决策中最具挑战性的环节之一。想象一下,你手头有100万的营销预算,需要在10个不同的渠道间分配——搜索引擎广告、社交媒体推广、内容营销、线下活动等等。每个渠道的投入产出比曲线各不相同…

作者头像 李华
网站建设 2026/4/19 10:07:25

用Python+OpenCV玩转ZED 2相机:实时获取鼠标位置深度与3D坐标

用PythonOpenCV玩转ZED 2相机:实时获取鼠标位置深度与3D坐标 1. 深度视觉交互开发新范式 在计算机视觉领域,ZED 2相机的立体感知能力为开发者打开了三维交互的新世界。这款由Stereolabs推出的双目相机不仅能捕捉高清图像,更能通过主动红外测距…

作者头像 李华