kubernetes - 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 可以工作了。
非常感谢!
解决方案
推荐阅读
- javascript - 根据多个选择输入返回不同的内容
- php - PHP 警告:SimpleXMLElement::__construct(): Entity: line 2: parser error : AttValue: " or ' 预期在
- scheme - Scheme中的科学记数法
- html - 如何在标题下对齐按钮,并使按钮响应?
- conv-neural-network - 在卷积神经网络中选择滤波器
- ruby-on-rails - 在 rails 中,tinymce 的工具栏没有显示
- go - 将上下文从 gRPC 端点传递到 goroutine 收到上下文取消错误
- php - How to retrieve a Has One relation in view in Laravel 5.6
- python - 使用 Dataset API 时,出现 tensorflow >= 1.11 的设备放置错误
- spring-mvc - 在spring boot中注册成功后如何自动登录?