我通过调用以下持久卷
kubectl create -f nameOfTheFileContainingTheFollowingContent.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-monitoring-static-content
spec:
capacity:
storage: 100Mi
accessModes:
- ReadWriteOnce
hostPath:
path: "/some/path"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-monitoring-static-content-claim
spec:
accessModes:
- ReadWriteOnce
storageClassName: ""
resources:
requests:
storage: 100Mi
此后,我尝试删除pvc。但是这个命令卡住了。
致电kubectl describe pvc pv-monitoring-static-content-claim
时,我得到以下结果
Name: pv-monitoring-static-content-claim
Namespace: default
StorageClass:
Status: Terminating (lasts 5m)
Volume: pv-monitoring-static-content
Labels: <none>
Annotations: pv.kubernetes.io/bind-completed=yes
pv.kubernetes.io/bound-by-controller=yes
Finalizers: [foregroundDeletion]
Capacity: 100Mi
Access Modes: RWO
Events: <none>
对于kubectl describe pv pv-monitoring-static-content
Name: pv-monitoring-static-content
Labels: <none>
Annotations: pv.kubernetes.io/bound-by-controller=yes
Finalizers: [kubernetes.io/pv-protection foregroundDeletion]
StorageClass:
Status: Terminating (lasts 16m)
Claim: default/pv-monitoring-static-content-claim
Reclaim Policy: Retain
Access Modes: RWO
Capacity: 100Mi
Node Affinity: <none>
Message:
Source:
Type: HostPath (bare host directory volume)
Path: /some/path
HostPathType:
Events: <none>
没有运行使用持久卷的Pod。有人可以提示我为什么不删除pvc和pv吗?
答案 0 :(得分:17)
我不确定为什么会这样,但是在通过kubernetes仪表板删除了pv和pvc的终结器之后,两者都被删除了。 重复我在问题中描述的步骤后,这种情况再次发生。 好像是个错误。
答案 1 :(得分:5)
PV已受保护。删除PVC之前先删除PV。另外,删除要求使用任何引用的PVC的任何Pod /部署。有关更多信息,请查看Storage Object in Use Protection
答案 2 :(得分:5)
答案 3 :(得分:4)
如果PV仍然存在,则可能是因为将ReclaimPolicy设置为Retain,在这种情况下,即使PVC消失了也不会删除它。从文档中:
PersistentVolume可以具有各种回收策略,包括 “保留”,“回收”和“删除”。用于动态配置 PersistentVolumes,默认回收策略为“删除”。这表示 动态配置的卷在以下情况下会自动删除: 用户删除相应的PersistentVolumeClaim。这个自动 如果卷中包含宝贵的数据,则此行为可能是不合适的。 在这种情况下,使用“保留”策略更为合适。用 “保留”策略,如果用户删除了PersistentVolumeClaim,则 相应的PersistentVolume不会被删除。相反,它被移动了 进入发布阶段,可以手动恢复其所有数据
答案 4 :(得分:3)
PV受保护。
最终确定者:[kubernetes.io/pv-protection frontDeletion]
您应该运行pv补丁程序(将终结器设置为null)来解决该问题,例如以下命令:
kubectl patch pvc jenkins-pvc -n ops -p '{"metadata":{"finalizers": []}}' --type=merge
答案 5 :(得分:2)
几个小时前就遇到了这个问题。
我删除了使用此参考的部署,并且PV / PVC自动终止。
答案 6 :(得分:2)
就我而言,只要删除与joined = df.join(df2, how='outer').fillna(-1).astype(pd.concat([df.dtypes,df2.dtypes]))
#or joined = df.join(df2, how='outer').fillna(-1).astype(df.dtypes.append(df2.dtypes))
print(joined)
a b c e d
0 1 1 0 1 1
1 1 2 1 1 2
2 1 1 2 -1 -1
3 1 2 3 -1 -1
4 1 1 4 -1 -1
5 1 2 5 -1 -1
6 1 1 6 -1 -1
7 1 2 7 -1 -1
8 1 1 8 -1 -1
9 1 2 9 -1 -1
和pv
都关联的广告连播,终止状态的pvc
和pv
就消失了
答案 7 :(得分:2)
对我来说,pv处于保留状态,因此执行上述步骤无效。
首先,我们需要如下更改策略状态:
kubectl patch pv PV_NAME -p '{"spec":{"persistentVolumeReclaimPolicy":"Delete"}}'
然后按如下所示删除pvc。
kubectl get pvc
kubectl delete pvc PVC_NAME
最后,使用
删除pvkubectl delete pv PV_NAME
答案 8 :(得分:0)
在我的情况下,由于缺少名称空间而没有删除pvc(我在删除所有资源/ pvc之前删除了名称空间)
解决方案:使用与以前相同的名称创建名称空间,然后我可以删除finalizers
,最后删除pvc
答案 9 :(得分:0)
如果您已经删除PV并尝试删除PVC
检查该命令是否附加了卷
kubectl获得体积连接
删除PVC:-
首先,您必须使用此命令一个删除pvc pne
kubectl删除pvc
或者您可以使用删除所有PVC
kubectl删除pvc --all
现在您可以使用
查看PVC的终止状态kubectl获取pvc
,然后您必须使用来应用此删除
kubectl补丁pvc {PVC_NAME} -p'{“元数据”:{“ finalizers :: null}}'
答案 10 :(得分:0)
kubectl get pvc pvc_name -o yaml > pvcfile.yaml
然后打开 pvcfile.yaml 并删除 finalizers 行,保存并应用:
kubectl apply -f pvcfile.yaml