系统环境以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: