Z.S.K.'s Records

Kubernetes学习(k8s基于InfiniBand实现HPC高性能容器网络组网方案实践三)

这次把sriov+infinitband部署期间遇到的问题做一个总结,给有需要的同学做个参考.

容器内IB网络之间不通

现象: 在容器内使用ibdev2netdev -v查看ib网络显示状态是Down,同时容器之间ping ib对应的网卡不通

原因: 经过排查后发现,是由于opensmd服务不正常所致, 正常,多个opensmd服务一定会有一个实例是处于master状态,但查看后发现两个实例都处于standby状态,导致IB子网有问题

关于opensmd,有个很重要的配置是root guid文件(通过opensm.conf配置路径),可以通过ibstat|grep 'System image GUID'命令将所有IB节点的GUID号记录到root guid文件中,一行一个即可,然后重新启动后恢复正常,一定要让一个实例处于master状态

CNI: invalid verion

原因: 作者线上环境的k8s版本相对较旧,新版本的kubernetes需要添加cniVersion字段

1
"cniVersion": "0.3.1"

Priority-node-critical not permitted

原因: 同上也是因为k8s集群为1.17版本之前,对于设置了priorityclasses: system-node-critical, v1.17版本之前只能部署在kube-system,其它ns是不允许的,在v1.17之后可选,如果必须部署在其它ns,则需要重新打sriov-network-operator及config-daemon镜像.

no match for kind “MutatingwebhookConfigration”

原因: 查看operator的Dockerfile发现包含了bindata目录,而bindata目录下的webhook中使用的版本为v1,v1.16之前webhook已不再支持v1,需要切换到v1beta1, 如果不想重新打镜像的话,可以使用configmap挂载替换镜像里的对应文件.

runtime error: index out of range

原因: operator维护了一个ib硬件类型列表,在deploy/configmap.yaml文件中,如果使用的硬件不在该supported-nic-ids设备类型中, 可按readme中的格式进行手工添加即可,但官方有提示,不在列表中的硬件也许也work,但不保证.

invalid CIDR address

原因: 自定义网络中的subnet ip网段格式写错,多写了一位

Got invalid base LID 65535 from network

网卡一直处于初始化状态,同时查看opensm的错误,默认位于/var/log/opensm.log,会发现以下错误

原因: 网卡的Base LID不能是65535, 可通过重新绑定解决

1
2
3
4
5
6
echo 0000:83:00.6 > /sys/bus/pci/drivers/mlx5_core/unbind
echo 11:22:33:44:77:66:77:60 > /sys/class/infiniband/mlx5_0/device/sriov/5/node
echo 11:22:33:44:77:66:77:60 > /sys/class/infiniband/mlx5_0/device/sriov/5/port
echo 0000:83:00.6 > /sys/bus/pci/drivers/mlx5_core/bind
echo Follow > /sys/class/infiniband/mlx5_0/device/sriov/5/policy
# 再次查看后Base LID已经重新分配,网卡正常

部署了sriov的Node会无缘无故被cordor从而导致无法调度

原因: 由于本人开始时指定的/sys/class/net/ib0/device/sriov_numvfs为32, 后来又改成了8, 期间没有重启,这样会导致sriov-network-config-daemon给node打上sriovnetwork.openshift.io/state: Draining的注释,从而cordor节点,这个从sriov-network-config-daemon的日志也可以看到,会提示需要重启节点(这里忘截图了),节点重启后就ok了.

感兴趣的可以查看源码,非常清晰

下次总结一个整个方案使用到的细节

参考文章:

转载请注明原作者: 周淑科(https://izsk.me)

 wechat
Scan Me To Read on Phone
I know you won't do this,but what if you did?