首页 > 解决方案 > dpdk-devbind 在 pod 容器中执行失败

问题描述

我正在尝试将 vfio-pci 驱动程序绑定到 k8s pod 容器中的 sriov vfs,但打印错误

#./dpdk-devbind.py -b vfio-pci 0000:19:02.1
Error: unbind failed for 0000:19:02.1 - Cannot open /sys/bus/pci/drivers/iavf/unbind.
# echo "0000:19:02.1" > /sys/bus/pci/drivers/iavf/unbind
bash: /sys/bus/pci/drivers/iavf/unbind: Read-only file system

但是 dpdk-devbind.py 可以在另一个创建的 docker 容器中工作"docker run --privileged ",我认为这可能是PodSecurityPolicy问题所在。
在我创建 PodSecurityPolicy 之后"privileged: true, readOnlyRootFilesystem: false",问题仍然存在,我很困惑。

为什么 dpdk-devbind.py 不能在具有特权的 k8s pod 容器中工作?
我应该将绑定操作移至主机吗?但是一些在容器中运行的应用程序确实想要选择 sriov VF 并绑定 vfio-pci 驱动程序。

此外,KNI不能很好地工作。

KNI: Failed to open file: /sys/devices/virtual/net/vEth0_0/carrier.

更新:insmod rte_kni.ko carrier=on,然后注释代码rte_kni_update_link()可以修复 KNI 问题

更新:根据Kubernetes 卷未挂载,使用initContainers挂载主机/sys到 pod /sys rw,现在 dpdk-devbind.py 可以工作了。

非常感谢!

标签: kuberneteskubernetes-poddpdkpodsecuritypolicy

解决方案


推荐阅读