执行delete pv后,pv状态一直为Terminating状态,文中提供解决方法。


0. ENV
kubernetes V1.23.5;

1. 问题现象
执行kubectk delete pv nfs-pv-kuboard-prometheus后,pv状态一直为Terminating状态
[root@rh-master01 ~]# kubectl get pv | grep nfs-pv-kuboard-prometheusnfs-pv-kuboard-prometheus 40Gi RWX Retain Terminating kube-system/nfs-pvc-kuboard-prometheus nfs-storageclass-provisioner 2d18h

2. 尝试操作
1) describe pv查看信息
pv状态一直是Terminating,已经持续47h
[root@rh-master01 ~]# kubectl describe pv nfs-pv-kuboard-prometheusName: nfs-pv-kuboard-prometheusLabels: <none>Annotations: pv.kubernetes.io/bound-by-controller: yesFinalizers: [kubernetes.io/pv-protection] #终结器包含kubernetes.io/pv-protectionStorageClass: nfs-storageclass-provisionerStatus: Terminating (lasts 47h) #状态一直为TerminatingClaim: kube-system/nfs-pvc-kuboard-prometheusReclaim Policy: RetainAccess Modes: RWXVolumeMode: FilesystemCapacity: 40GiNode Affinity: <none>Message:Source:Type: NFS (an NFS mount that lasts the lifetime of a pod)Server: 192.168.80.159Path: /vm/dev-nfs/kuboard_pv/kuboard-prometheusReadOnly: falseEvents: <none>
2) 使用patch删除记录
使用patch删除记录,但并未匹配信息
[root@rh-master01 ~]# kubectl patch pv nfs-pv-kuboard-prometheus -p ‘{“metadata”:{“finalizers”:null}}’Error from server (BadRequest): json: cannot unmarshal string into Go value of type map[string]interface {}

3. 问题原因
当 PV 对象的状态为 Terminating 且其 Finalizers 列表中包含 kubernetes.io/pv-protection 时,PV 对象是处于被保护状态的。

4. 问题解决
注释pv的终结器(Finalizers)的状态,解除PV保护状态
[root@rh-master01 ~]# kubectl edit pv nfs-pv-kuboard-prometheus4 #5 apiVersion: v16 kind: PersistentVolume7 metadata:8 annotations:9 pv.kubernetes.io/bound-by-controller: "yes"10 creationTimestamp: "2022-05-24T13:33:40Z"11 deletionGracePeriodSeconds: 012 deletionTimestamp: "2022-05-25T08:17:12Z"13 finalizers:14 # - kubernetes.io/pv-protection #注释改行,关闭pv的保护模式15 name: nfs-pv-kuboard-prometheus16 resourceVersion: "10338089"
再次查看,pv已经消失
[root@rh-master01 ~]# kubectl get pv | grep nfs-pv-kuboard-prometheus[root@rh-master01 ~]#

5. 参考
https://kubernetes.io/zh/docs/concepts/storage/persistent-volumes
文章转载自rundba,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




