ceph-csi删除存储卷失败

问题现象:

kvm创建虚拟机时,磁盘pvc一直pending创建不出来,排查发现ceph存储已满。进一步检查分析发现,在删除kvm系统盘pvc后,集群中的pv状态变成release,但是没有清理,查看pv详情有如下报错:

分析过程:

1. 梳理pv卷删除流程


1.用户删除相关 PVC。

2.External Provisioner 组件观察到 PVC 删除事件,根据 PVC 的回收策略(Reclaim)执行不同操作:

Delete:调用外部 CSI 插件的DeleteVolume 函数以删除卷;一旦卷成功删除,Provisioner会删除集群中对应 PV 对象。

Retain:Provisioner不执行卷删除操作。

2. 查看csi-rbdplugin-provisioner日志和报错能对上,provisioner监测到pvc删除事件开始调用csi-rbdplugin删除pv对应的存储,删除时出错

controller.go:1512] delete "pvc-25e5bb75-b948-4131-8aba-a52bfca55913": volume deletion failed: rpc error: code = Internal desc = rbd: ret=-39, Directory not empty

3. 查看csi-rbdplugin日志,删除镜像temp(kubernetes/csi-vol-1b5a6cea-f2c2-4b62-83f3-95d0424077a3-temp)时报错

kubectl logs csi-rbdplugin-provisioner-686ddd4f4c-9f5qr -n cephfs -c csi-rbdplugin

W0126 12:46:49.107929      1 rbd_util.go:596] ID: 251312 Req-ID: 0001-0024-92ab6c78-7edc-11ee-aec4-5e807f521aec-0000000000000006-1b5a6cea-f2c2-4b62-83f3-95d0424077a3 access denied to Ceph MGR-based rbd commands on cluster ID (92ab6c78-7edc-11ee-aec4-5e807f521aec)

E0126 12:46:49.160690      1 rbd_util.go:689] ID: 251311 Req-ID: 0001-0024-92ab6c78-7edc-11ee-aec4-5e807f521aec-0000000000000006-b7dc20db-47ad-42a5-8d6d-37b40afd3af1 failed to delete rbd image: kubernetes/csi-vol-b7dc20db-47ad-42a5-8d6d-37b40afd3af1-temp, rbd: ret=-39, Directory not empty

4. 分析csi-rbdplugin代码,分析发现: 镜像的temp作为镜像的parent,先删除不太合理,所以会打印Directory not empty(因为原始镜像文件作为son还没有清理)


5. 进一步分析deleteImage方法,发现并不是直接做删除,而只是扔进Trash,依赖Trash的清理机制完成后续清理,则不存在先删parent再删son的情况。但是在扔进Trash后,会先做一把操作权限校验(防止后续在Trash时清理失败)。在做操作权限校验出错时,则直接对Trash中的镜像进行删除。


6. 问题就出在操作权限校验这边,因为对接ceph的账号权限不够,导致校验失败。即触发了Trash中temp镜像的清理。但是temp的son镜像还在导致清理出错(Directory not empty)。对接ceph的权限提升后,问题解决。


kubectl logs csi-rbdplugin-provisioner-686ddd4f4c-9f5qr -n cephfs -c csi-rbdplugin

W0126 12:46:49.107929      1 rbd_util.go:596] ID: 251312 Req-ID: 0001-0024-92ab6c78-7edc-11ee-aec4-5e807f521aec-0000000000000006-1b5a6cea-f2c2-4b62-83f3-95d0424077a3 access denied to Ceph MGR-based rbd commands on cluster ID (92ab6c78-7edc-11ee-aec4-5e807f521aec)

E0126 12:46:49.160690      1 rbd_util.go:689] ID: 251311 Req-ID: 0001-0024-92ab6c78-7edc-11ee-aec4-5e807f521aec-0000000000000006-b7dc20db-47ad-42a5-8d6d-37b40afd3af1 failed to delete rbd image: kubernetes/csi-vol-b7dc20db-47ad-42a5-8d6d-37b40afd3af1-temp, rbd: ret=-39, Directory not empty


参考引用:https://zhuanlan.zhihu.com/p/470093908

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容