容器内运行bcc-tools方法

2023-12-28 08:07:19 浏览数 (1)

系统环境以TKE tencentos3.1(TK4) 5.4 内核为例子说明。

1. 节点上先安装对应内核版本的kernel-devel rpm包

2. 下载安装nerdctl

wget https://github.com/containerd/nerdctl/releases/download/v1.7.0/nerdctl-1.7.0-linux-amd64.tar.gz

tar -zxvf nerdctl-1.7.0-linux-amd64.tar.gz

cp nerdctl /usr/local/bin/

# nerdctl version

3. 使用tencentos/tencentos_server31:latest镜像启动一个特权容器,并共享host的网络和pid等命名空间,

以及将节点的/lib/modules/和/usr/src/kernels/目录挂载到容器内解决内核头文件依赖(需要依赖/lib/modules/kernel_version/build -> /usr/src/kernels/kernel_version)

nerdctl run -it --privileged --network host --pid=host --ipc=host --uts=host --name bpf-debug -v /lib/modules/:/lib/modules/ -v /usr/src/kernels/:/usr/src/kernels/ tencentos/tencentos_server31:latest sleep 36000

注:如果不挂载节点的/lib/modules/和/usr/src/kernels/到容器内,也可以直接在容器里安装kernel-devel rpm包生成/usr/src/kernels/$kernel_version,然后创建软链接方式解决内核头文件依赖:

ln -s /usr/src/kernels/$kernel_version /lib/modules/$kernel_version/build

4. 登陆容器

nerdctl exec -ti bpf-debug bash

5. 手工挂载 debugfs

mount -t debugfs debugfs /sys/kernel/debug

6. 安装bcc-tools 以及上传编译好的libbpf-tools

yum install bcc-tools -y

7. 验证工具可运行:

运行bcc:

运行libbpf:

0 人点赞