删除PVC时NFS PersistentVolume出现删除插件匹配错误求助
问题排查:删除PVC时PV出现
no deletable volume plugin matched错误 环境信息
- Kubernetes版本:v1.27.4
- 部署环境:裸金属
- 安装方式:kubeadm
- 主机系统:Ubuntu 20.04.6 LTS
- CNI:10-weave.conflist
- CRI:Containerd://1.6.21
问题描述
删除PVC gogs-pv-claim时,对应的PV pv-gogs-postgres报错:error getting deleter volume plugin for volume "pv-gogs-postgres": no deletable volume plugin matched,执行kubectl describe pv pv-gogs-postgres显示PV状态为Failed,错误信息一致。
PV配置如下:
apiVersion: v1 kind: PersistentVolume metadata: name: pv-gogs-postgres spec: accessModes: - ReadWriteOnce capacity: storage: 20Gi persistentVolumeReclaimPolicy: Delete storageClassName: “manual” nfs: server: 192.168.0.60 path: /mydata
原因分析
- NFS PV不支持
Delete回收策略:Kubernetes原生没有内置NFS存储的自动删除插件,无法直接清理远程NFS服务器上的目录内容。当PV的persistentVolumeReclaimPolicy设为Delete时,kube-controller-manager找不到匹配的删除插件,触发该错误。 - 配置语法错误:PV的
storageClassName字段使用了中文双引号(“manual”),会导致Kubernetes无法正确解析存储类配置,间接影响插件匹配逻辑。
解决方案
1. 修复PV配置语法错误
先修正中文引号问题,确保配置可正常解析:
kubectl edit pv pv-gogs-postgres
将“manual”替换为英文双引号"manual",保存退出。
2. 修改PV回收策略为Retain(推荐)
NFS类型PV最稳妥的回收策略是Retain,该策略保留PV和NFS上的数据,避免自动清理失败:
kubectl patch pv pv-gogs-postgres -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
执行后再次删除PVC:
kubectl delete pvc gogs-pv-claim
此时PV会进入Released状态,不再报错。后续可:
- 手动登录NFS服务器(192.168.0.60),删除
/mydata目录下的相关数据; - 若需复用PV,可修改PV的
claimRef字段移除绑定关系,重新与其他PVC绑定。
3. 可选:配置外部回收器实现自动清理(进阶)
如果需要自动清理NFS数据,可部署nfs-subdir-external-provisioner这类外部存储插件,但该方案主要针对动态创建的PV。对于静态PV,需额外配置回收逻辑,步骤较复杂,优先推荐Retain策略手动管理数据。
内容的提问来源于stack exchange,提问作者Kubespecial
相关产品推荐
相关产品推荐

