【问题标题】:Using BPF based tracing tools in ECS在 ECS 中使用基于 BPF 的跟踪工具
【发布时间】:2022-01-14 15:47:53
【问题描述】:

最近我开始学习 BPF 工具,并在我自己的工作站上大量使用它们作为调试辅助工具。但是,我想开始在生产中使用它们,以便更好地了解生产问题。我们的工作负载在 AWS ECS 中运行。在 Fargate 上似乎无法使用这些工具:

https://github.com/aws/containers-roadmap/issues/1027

如果使用您自己的 EC2 集群,要让这些工具在 ECS 中正常工作,需要什么条件?我可以使用例如一个 Alpine Linux 映像,还是我需要将映像基于 EC2 主机中使用的精确内核构建?谁有经验分享一下?

【问题讨论】:

    标签: amazon-ecs ebpf


    【解决方案1】:

    免责声明,我没有在 AWS ECS 上使用 eBPF 的个人经验,但是我对 eBPF 要求有一些经验,因为我维护了 loader library

    通常要使用 eBPF,您需要:

    • 用你想使用的BPF support and the BPF features编译的linux内核。
    • 在低于 5.8 的内核版本上具有 CAP_SYS_ADMIN 功能或在 5.8 及更高版本的内核版本上具有 CAP_BPF capability 功能(CAP_SYS_ADMIN 仍然有效,但提供的不仅仅是 BPF 访问权限)。
    • 根据您要使用的工具,您可能需要额外的功能,例如 CAP_PERFMON 才能使用 perf 功能(uprobe、kprobe、tracepoint)(或在低于 5.8 的内核版本上使用 CAP_SYS_ADMIN

    在容器中使用 eBPF 应该不是问题,因为容器与主机共享相同的内核(容器只是主机上的隔离进程)。

    但是由于 eBPF 允许你探测内核,这显然打破了容器的隔离,并且给容器提供CAP_SYS_ADMIN 基本上也给它完全的 root 访问权限,所以安全性是一个挑战(除非你只是在开发,在这种情况下,您可以让您的容器具有特权)。这就是您不会在共享硬件上看到启用 eBPF 的原因(如果配置正确的话)。

    【讨论】:

    • 谢谢!我们已经将 ECS 与无服务器一起使用,显然这不会因为需要在特权模式下运行容器而实现。这意味着我们需要在 EC2 之上为 ECS 使用我们自己的集群,因此它可以归结为成本/收益分析,然后在调试生产问题时额外的维护开销是否值得增加 BPF 的功能。
    猜你喜欢
    • 2020-08-22
    • 2020-03-28
    • 2020-10-13
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多