基于eBPF的云原生可观测性开源项目Kindling之eBPF基础设施库技术选型

本文探讨了eBPF技术在云原生可观测性中的作用,以及Kindling项目如何在libbcc、goebpf、cilium-ebpf和falco-libs之间做出选择。尽管cilium-ebpf在某些细节上表现出色,但Kindling最终选择了falco-libs,原因包括其对低版本内核的支持、更好的性能和对系统调用的深入处理。Kindling还对falco-libs进行了扩展以支持更多的事件类型和功能。未来,随着技术的发展,Kindling可能会根据用户需求调整底层库。
摘要由CSDN通过智能技术生成

eBPF技术正以令人难以置信的速度发展,作为一项新兴技术,它具备改变容器网络、安全、可观测性生态的潜力。eBPF作为更加现代化的内核技术,相较于内核模块,它的编写难度已经有了较大的降低,但是不可否认对于普通开发者还是有一定门槛。因此,很多云原生软件会在eBPF系统调用(函数)和libbpf之上封装一层更加简单易用的api,比如falco的libs、bcc的libbcc、cilium的cilium-ebpf。笔者将这些依赖库称之为eBPF的基础设施。Kindling专注于云可观测性领域,致力于排查各种复杂故障,包括但不限于网络、文件、内存、on-off cpu堆栈,解决上述问题是Kindling的第一优先级目标,本着不重复造轮子的原则,Kindling无意于再创造一个eBPF的基础设施。

丰富的eBPF基础设施库

当下有很多库可以供开发者选择,比如libbcc、dropbox的goebpf、cilium的ebpf库、calico的底层库、falco的lib库。这些库主要协助完成以下功能:

  • 将eBPF程序加载到内核中并且重定位

  • 将map载入初始化,提供fd供用户态和内核态交互

  • 更友好的开发使用体验

基于此,我们分别选择了2个基于c和go的基础设施库来对比:

Libbcc

Gobpf

Falco-libs

Cilium-ebpf

开发语言

c或cgo

go

c

c通过bpf2go转换成go

是否支持CO-RE

支持

支持

不支持(正在支持)

支持

api完善度

较好

较好

较好

很好

初始化流程完善程度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值