本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
该Intel DLB设备插件为Kubernetes集群提供对Intel DLB设备的支持。
DLB设备插件需要安装并启用Linux内核DLB驱动才能运行。获取DLB软件发行版,按照目录dlb/docs中DLB_Driver_User_Guide.pdf的说明构建并加载dlb2驱动模块。
成功加载模块后,可在设备文件系统中看到可用的dlb设备节点:
$ ls -1 /dev/dlb* /dev/dlb0 /dev/dlb1 /dev/dlb2 ...
如果需要配置SR-IOV/VF(虚拟功能),请继续以下配置。本说明使用DPDK工具检查事件设备、解绑VF设备以及将dlb2驱动绑定到VF设备。
为DPDK源代码打补丁以支持DLB:
$ wget -q [***] -O- | tar -Jx $ wget -q [***] -O- | tar -Jx $ cd ./dpdk-*/ && patch -p1 < ../dlb/dpdk/dpdk_dlb_*_diff.patch $ sed -i 's/270b,2710,2714/270b,2710,2711,2714/g' ./usertools/dpdk-devbind.py
列出事件设备:
$ ./usertools/dpdk-devbind.py -s | grep -A10 ^Eventdev Eventdev devices using kernel driver ==================================== 0000:6d:00.0 'Device 2710' drv=dlb2 unused= 0000:72:00.0 'Device 2710' drv=dlb2 unused= ...
启用虚拟功能:
$ echo 4 | sudo tee -a /sys/bus/pci/devices/0000\:6d\:00.0/sriov_numvfs
注意: 如果失败并提示"No such file or directory",可能是因为设备已绑定到vfio-pci驱动。请将设备绑定到dlb2驱动。
检查是否出现新的dlb设备节点:
$ ls -1 /dev/dlb* /dev/dlb0 /dev/dlb1 /dev/dlb10 /dev/dlb11 ... /dev/dlb8 /dev/dlb9
检查是否出现新的事件设备:
$ ./usertools/dpdk-devbind.py -s | grep -A14 ^Eventdev Eventdev devices using kernel driver ==================================== 0000:6d:00.0 'Device 2710' drv=dlb2 unused= 0000:6d:00.1 'Device 2711' drv=dlb2 unused= 0000:6d:00.2 'Device 2711' drv=dlb2 unused= 0000:6d:00.3 'Device 2711' drv=dlb2 unused= 0000:6d:00.4 'Device 2711' drv=dlb2 unused= 0000:72:00.0 'Device 2710' drv=dlb2 unused= ...
将PF资源分配给VF:
注意: 以下过程仅针对4个资源中的第一个vf资源。对
/sys/bus/pci/devices/0000\:6d\:00.0/中的其他vfN_resources重复此过程,然后将dlb2驱动绑定到对应vfN_resources的0000:6d:00.M。
$ sudo ./usertools/dpdk-devbind.py --unbind 0000:6d:00.1
$ echo 2048 | sudo tee -a /sys/bus/pci/devices/0000\:6d\:00.0/vf0_resources/num_atomic_inflights && echo 2048 | sudo tee -a /sys/bus/pci/devices/0000\:6d\:00.0/vf0_resources/num_dir_credits && echo 64 | sudo tee -a /sys/bus/pci/devices/0000\:6d\:00.0/vf0_resources/num_dir_ports && echo 2048 | sudo tee -a /sys/bus/pci/devices/0000\:6d\:00.0/vf0_resources/num_hist_list_entries && echo 8192 | sudo tee -a /sys/bus/pci/devices/0000\:6d\:00.0/vf0_resources/num_ldb_credits && echo 64 | sudo tee -a /sys/bus/pci/devices/0000\:6d\:00.0/vf0_resources/num_ldb_ports && echo 32 | sudo tee -a /sys/bus/pci/devices/0000\:6d\:00.0/vf0_resources/num_ldb_queues && echo 32 | sudo tee -a /sys/bus/pci/devices/0000\:6d\:00.0/vf0_resources/num_sched_domains && echo 2 | sudo tee -a /sys/bus/pci/devices/0000\:6d\:00.0/vf0_resources/num_sn0_slots && echo 2 | sudo tee -a /sys/bus/pci/devices/0000\:6d\:00.0/vf0_resources/num_sn1_slots
$ sudo ./usertools/dpdk-devbind.py --bind dlb2 0000:6d:00.1
运行libdlb示例应用:
注意: 另一种方法是使用此Dockerfile运行测试。
$ ls dlb dpdk-21.11 $ cd ./dlb/libdlb/ && make && sudo LD_LIBRARY_PATH=$PWD ./examples/dir_traffic -n 128 -d 1 # 若要测试/dev/dlbN,将1替换为N。
运行DPDK示例应用:
注意: 另一种方法是使用此Dockerfile修补和构建DPDK并运行测试。
$ sudo apt-get update && sudo apt-get install build-essential meson python3-pyelftools libnuma-dev python3-pip && sudo pip install ninja # 此配置基于Ubuntu/Debian发行版。对于不使用apt的其他发行版,请通过其他方式安装依赖。 $ ls dlb dpdk-21.11 $ cd ./dpdk-* && meson setup --prefix $(pwd)/installdir builddir && ninja -C builddir install
sudo ./builddir/app/dpdk-test-eventdev --no-huge --vdev='dlb2_event,dev_id=1' -- --test=order_queue --nb_flows 64 --nb_pkts 512 --plcores 1 --wlcores 2-7 # 若要测试/dev/dlbN,将1替换为N。
以下部分详细介绍如何获取、构建、部署和测试DLB设备插件。
示例展示了如何通过DaemonSet或按节点手动部署插件。
该组件的预构建镜像可在Docker Hub获取。这些镜像会从本仓库的最新main分支自动构建并上传至hub。
组件的发布标签镜像也可在Docker Hub获取,标签格式为x.y.z,对应本仓库中的分支和版本。因此,在集群中部署插件的最简单方法是运行以下命令:
$ kubectl apply -k '[***]<RELEASE_VERSION>' daemonset.apps/intel-dlb-plugin created
其中<RELEASE_VERSION>需要替换为所需的发布标签或main以获取devel镜像。
可通过在节点上搜索相关资源分配状态来验证插件是否已注册:
$ kubectl get nodes -o go-template='{{range .items}}{{.metadata.name}}{{"\n"}}{{range $k,$v:=.status.allocatable}}{{" "}}{{$k}}{{": "}}{{$v}}{{"\n"}}{{end}}{{end}}' | grep '^\([^ ]\)\|\( dlb\)' master dlb.intel.com/pf: 7 dlb.intel.com/vf: 4
可通过部署提供的示例测试镜像(dlb-libdlb-demo和dlb-dpdk-demo)来测试插件是否正常工作。
构建Docker镜像并创建基于本地Docker镜像运行单元测试的pod:
$ make dlb-libdlb-demo ... Successfully tagged intel/dlb-libdlb-demo:devel $ kubectl apply -f ${INTEL_DEVICE_PLUGINS_SRC}/demo/dlb-libdlb-demo-pod.yaml pod/dlb-libdlb-demo-pod created
$ make dlb-dpdk-demo ... Successfully tagged intel/dlb-dpdk-demo:devel $ kubectl apply -f ${INTEL_DEVICE_PLUGINS_SRC}/demo/dlb-dpdk-demo-pod.yaml pod/dlb-dpdk-demo-pod created
等待pod完成:
$ kubectl get pods | grep dlb-.*-demo NAME READY STATUS RESTARTS AGE dlb-dpdk-demo 0/2 Completed 0 79m dlb-libdlb-demo 0/2 Completed 0 18h
查看作业日志:
$ kubectl logs dlb-libdlb-demo <pf/vf> <日志输出>
$ kubectl logs dlb-dpdk-demo <pf/vf> <日志输出>
如果pod未能成功启动(可能是因为无法获取DLB资源),它将处于Pending状态:
$ kubectl get pods NAME READY STATUS RESTARTS AGE dlb-dpdk-demo 0/2 Pending 0 3s dlb-libdlb-demo 0/2 Pending 0 10s
可通过检查pod的事件来确认:
$ kubectl describe pod dlb-libdlb-demo | grep -A3 Events: Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 85s default-scheduler 0/1 nodes are available: 1 Insufficient dlb.intel.com/pf, 1 Insufficient dlb.intel.com/vf.
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429