这两年,eBPF 一直很火,是各大会议上的必讲主题。那么,作为一项革命性的技术,eBPF 的“魔力”到底在哪里?为什么无论是故障诊断、网络优化,还是安全控制、性能监控,eBPF 都能发挥这么大的作用?
说到这,就不能不提操作系统内核。一般来说,我们编写的应用程序需要通过系统调用接口,来请求内核帮它做一些事情。而使用 eBPF ,我们就能在不更改内核代码的前提下,实时获取和修改操作系统的行为。你看,这个神奇的技术,重新定义了我们思考操作系统的方式。
比如,如果我们想排查网络问题,在没有 eBPF 的时候,一般都是借助 tcpdump 了解网络层面。但等到排查网络丢包等类似问题,会发现 tcpdump 根本不够用,只知道网络上传输了哪些包,想再深一步,知道为什么这么传输,就无能为力了。
但是,有了 eBPF ,以及 BCC 这个 eBPF 工具集的助力,这个问题就变得非常容易解决了,处理效率也会大大提升。你可以看看这张图,感受下 BCC 的强大:
看到这儿,是不是对学习 eBPF 迫不及待了?可惜我搜了一圈,几乎没怎么查到系统的资料,直接啃源码又非常劝退,所以该怎么快速、系统、高效地掌握 eBPF 这个神奇的新技术呢?
其实,理解原理 + 大量的实践,就是学习 eBPF 最好的方式。总结起来,就三大步骤:理清 eBPF 的基本原理,掌握 eBPF 的运行机制和核心的编程接口,再结合大量的实践技巧。这三点做到了,就能用好 eBPF ,给实际工作增速提效。
这个学习思路和知识点全景图,均出自倪朋飞,他是资深 Linux 专家,云计算老兵,同时也是 Kubernetes 项目维护者。他曾任职于盛大云和腾讯,一直从事云计算领域,特别专注于 IaaS 和容器技术,目前主要负责开源容器编排系统 Kubernetes 在 Azure 的落地实践。