当我们用ceph做k8s的动态存储时,特别是使用rdb存储,在pod重启是总会遇到无法挂载pvc的问题
关键报错
MountVolume.WaitForAttach failed for volume "pvc-9bb7c438-2328-47ed-bfbd-c261d111644e" : rbd image k8s-pool/kubernetes-dynamic-pvc-841601fa-f1e8-40a0-b173-77161c03bc47 is still being used
这里显示pvc已经被其他的pod使用了,根本原因是之前的pod删除但是挂载的rbd文件并没有删除
解决方法是需要在ceph集群查看这个rbd文件挂载的位置
rbd info k8s-pool/kubernetes-dynamic-pvc-841601fa-f1e8-40a0-b173-77161c03bc47
#通过这个命令可以查看到这个rbd文件的信息
rbd image 'kubernetes-dynamic-pvc-841601fa-f1e8-40a0-b173-77161c03bc47':
size 10 GiB in 2560 objects
order 22 (4 MiB objects)
snapshot_count: 0
id: 3bfff12997ae2
block_name_prefix: rbd_data.3bfff12997ae2
format: 2
features:
op_features:
flags:
create_timestamp: Sat Dec 25 11:55:16 2021
access_timestamp: Sat Dec 25 11:55:16 2021
modify_timestamp: Sat Dec 25 11:55:16 2021
rados listwatchers -p k8s-pool rbd_header.3bfff12997ae2
watcher=192.168.0.135:0/1321540337 client.685758 cookie=18446462598732840974
#上面的命令可以查看到这个rbd文件挂载的节点
查看到具体的节点到节点上查看rbd文件
ls /dev/rbd/k8s-pool/kubernetes-dynamic-pvc-841601fa-f1e8-40a0-b173-77161c03bc47 -l
lrwxrwxrwx 1 root root 10 May 27 15:46 /dev/rbd/k8s-pool/kubernetes-dynamic-pvc-841601fa-f1e8-40a0-b173-77161c03bc47 -> ../../rbd7
可以查看具体的rbd文件,然后卸载掉
rbd unmap -o force /dev/rbd7
在观察pod就可以正常挂载了