使用BPF监视你的Kubernetes集群

栏目: 编程工具 · 发布时间: 7年前

内容简介:如果你已经使用Kubernetes已经有一段时间了,你就会知道你能做的最好的事情就是邀请成千上万的你最好的熟人在没有成人监督的情况下在你的集群上运行任意命令。在将来的某个时刻,您可能想知道您曾经知道的那些人仍然在您的群集上做什么。是不是在挖矿呢?BPF(Berkeley Packet Filter)是Linux内核中的一个虚拟机,它在收到其中一个事件时对事件进行分类并触发操作。它允许您在运行时将代码注入内核以处理这些事件; 不需要内核编译。BPF有两种风格。本文引用的是扩展版本eBPF,但我只称它为BPF

如果你已经使用Kubernetes已经有一段时间了,你就会知道你能做的最好的事情就是邀请成千上万的你最好的熟人在没有成人监督的情况下在你的集群上运行任意命令。在将来的某个时刻,您可能想知道您曾经知道的那些人仍然在您的群集上做什么。是不是在挖矿呢?

BPF(Berkeley Packet Filter)是 Linux 内核中的一个虚拟机,它在收到其中一个事件时对事件进行分类并触发操作。它允许您在运行时将代码注入内核以处理这些事件; 不需要内核编译。BPF有两种风格。本文引用的是扩展版本eBPF,但我只称它为BPF。

另一个更有趣的选择是使用 Kubectl Trace 来检查容器中正在运行的内容。Kubectl的这个扩展计划一次性作业在容器内运行BPF程序。因此,您可以使用一行命令列出在任何容器中运行的所有进程:

kubectl trace run container -e \ <font>"tracepoint:syscalls:sys_enter_execve { @[comm] = count() }"</font><font>
</font>

此命令将等待容器执行新进程,并将按其命令名称(comm)对正在运行的许多进程进行分组。问题是当你想知道那里发生了什么时,你需要执行这个命令; 它不允许您监视群集使用情况,而无需一直查看它。

我最喜欢的选择是将 BPF的Execsnoop 部署到每个pod中的 sidecar容器 ,并让它实时登录pod中运行的所有进程。Kubernetes 1.13有一个名为的配置标志shareProcessNamespace,允许您将在pod中生成的所有进程放入同一名称空间,这样您就可以从边车监视pod中的所有容器。这是您的pod定义的开始:

apiVersion: v1
kind: Pod
metadata:
  name: happy-borg
spec:
  shareProcessNamespace: <b>true</b>
  containers:
  - name: execsnoop
    image: calavera/execsnoop
    securityContext:
    - privileged: <b>true</b>
    volumeMounts:
    - name: sys # mount the debug filesystem
      mountPath: /sys
      readOnly: <b>true</b>
    - name: headers # mount the kernel headers required by bcc
      mountPath: /usr/src
      readOnly: <b>true</b>
    - name: modules # mount the kernel modules required by bcc
      mountPath: /lib/modules
      readOnly: <b>true</b>
  - name: container doing random work
  ...

BPF为Kubernetes打开了更好的可观察性的大门。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

软件测试

软件测试

乔根森 / 韩柯 / 机械工业出版社 / 2003-12-1 / 35.00元

《软件测试》(原书第2版)全面地介绍了软件测试的基础知识和方法。通过问题、图表和案例研究,对软件测试数学问题和技术进行了深入的研究,并在例子中以更加通用的伪代码取代了过时的Pascal代码,从而使内容独立于具体的程序设计语言。《软件测试》(原书第2版)还介绍了面向对象测试的内容,并完善了GUI测试内容。一起来看看 《软件测试》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具