解决k8s集群中mount volume失败的问题

有的时候,k8s中挂载了rbd存储的pod重启后会持续处于ContainerCreating的状态,describe后发现有MountVolume.Setup failed以及Unable to mount volumes for pod xxx的错误描述。

这种情况看上去是rbd设备挂载到pod上失败,但真实原因往往是pod迁移后,在原节点上map的rbd设备没有正常迁移走导致的。

这个时候应该执行的是手动从原节点上unmap掉这个rbd设备。

一、找到rbd设备map的节点

通过kubectl get pvc找到这个pvc所绑定的pv。

然后根据这个pv,在集群中的节点上执行:

rbd showmapped

找到这个pv所map的节点和rbd设备。

二、查看挂载点

看一下这个rbd设备有没有挂载点(应该是没有)。

执行:

findmnt -n [rbd设备]

如果没有输出表明没有挂载点。如果输出类似/var/lib/kubelet/plugins/kubernetes.io/rbd/*,表明挂载点有误,需要手动删除挂载点。

执行:

unmount [挂载点]

三、手动unmap

确保没有挂载点之后,执行

rbd unmap [rbd设备]

手动将这个rbd设备unmap掉。

过一段时间后,新的rbd设备会自动挂载到新节点上。

上一篇:Hello Docker(七)——Docker数据持久化


下一篇:C++ mount函数