https://mp.weixin.qq.com/s/fTCodF6oHhNdFtFDyt_mbw
https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e7a2621d-d069-4347-8c77-59a895f9632f/640
本文将展示如何利用 Apache SkyWalking[1] 与 eBPF[2],使服务网格下的网络故障排除更加容易。
Apache SkyWalking 是一个分布式系统的应用性能监控工具。它观察服务网格中的指标、日志、痕迹和事件,并使用这些数据来生成 pod 和服务的依赖图。这个依赖关系图可以帮助你快速系统,尤其是在出现问题的时候。
然而,在排除 SkyWalking 服务拓扑中的网络问题时,确定错误的实际位置有时候并不容易。造成这种困难的原因有两个:
获取 Envoy-to-service 和传输层通信的指标,可以更容易诊断服务问题。为此,SkyWalking 需要收集和分析 Kubernetes pod 内进程之间的传输层指标 —— 这项任务很适合 eBPF。我们调查了为此目的使用 eBPF 的情况,并在下面介绍了我们的结果和演示。
eBPF 起源于 Extended Berkeley Packet Filter,是一种通用的机制,可以在 Linux 内核中注入和运行自己的代码,是监测 Kubernetes Pod 中网络流量的优秀工具。在接下来的几节中,我们将概述如何使用 eBPF 进行网络监控,作为介绍 Skywalking Rover[4] 的背景,这是一个由 eBPF 驱动的指标收集器和分析器,用于诊断 CPU 和网络性能。
应用程序和网络之间的互动一般可分为以下步骤,从较高的抽象层次到较低的抽象层次: