Kubernetes 库伯内特斯:可以';t删除PersistentVolumeClaim(pvc)
我通过调用Kubernetes 库伯内特斯:可以';t删除PersistentVolumeClaim(pvc),kubernetes,persistent-volumes,persistent-volume-claims,Kubernetes,Persistent Volumes,Persistent Volume Claims,我通过调用 kubectl create-f包含以下内容的文件名。yaml apiVersion: v1 kind: PersistentVolume metadata: name: pv-monitoring-static-content spec: capacity: storage: 100Mi accessModes: - ReadWriteOnce hostPath: path: "/some/path" --- apiVersion: v1
kubectl create-f包含以下内容的文件名。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 description 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>
没有运行使用持久卷的pod。谁能给我一个提示,为什么pvc和pv没有被删除?pv受到保护。在删除PVC之前删除PV。此外,删除任何声称拥有任何参考PVC的POD/部署。有关更多信息,请查看我不确定为什么会发生这种情况,但在通过kubernetes仪表板删除pv和pvc的终结器后,这两个都被删除了。 重复我在问题中描述的步骤后,这种情况再次发生。
好像是个bug。几个小时前刚刚遇到这个问题
我删除了使用此引用的部署,PV/PVC将自动终止。如果PV仍然存在,可能是因为它已将回收策略设置为保留,在这种情况下,即使PVC消失,它也不会被删除。从文档中: PersistentVolumes可以有各种回收策略,包括 “保留”、“回收”和“删除”。用于动态配置 PersistentVolumes,默认回收策略为“删除”。这意味着 当发生以下情况时,将自动删除动态调配的卷: 用户删除相应的PersistentVolumeClaim。这是自动的 如果卷包含珍贵数据,则行为可能不适当。 在这种情况下,使用“保留”策略更合适。具有 “保留”策略,如果用户删除PersistentVolumeClaim,则 无法删除相应的PersistentVolume。相反,它被移动了 到发布阶段,其所有数据都可以手动恢复
在我的情况下,只要我删除与
pv
和pvc
关联的pod,处于终止状态的pv
和pvc
就会消失当永久卷受到保护时会发生这种情况。您应该能够交叉验证这一点:
命令:
kubectl描述pvc名称| grep终结器
输出:
终结器:[kubernetes.io/pvc保护]
您可以通过使用kubectl patch
将终结器设置为null来解决此问题:
kubectl patch pvc PVC_NAME -p '{"metadata":{"finalizers": []}}' --type=merge
Ref 你可以不用编辑你的pvc!移除pvc保护
在我的例子中,pvc没有被删除,因为缺少名称空间(我在删除所有资源/pvc之前删除了名称空间)
解决方案:使用与以前相同的名称创建名称空间,然后我能够删除
终结器
,最后pvcFor me pv处于保留状态,因此执行上述步骤不起作用
首先,我们需要改变政策状态,如下所示:
kubectl patch pv PV_NAME -p '{"spec":{"persistentVolumeReclaimPolicy":"Delete"}}'
然后删除pvc,如下所示
kubectl get pvc
kubectl delete pvc PVC_NAME
最后,使用
kubectl delete pv PV_NAME
如果您已经删除PV并试图删除PVC 检查此命令是否已连接卷 kubectl-get容积仪 删除PVC:- 首先,您必须使用此命令逐个删除pvc pne kubectl删除pvc——宽限期=0——强制 或者,您可以删除所有PVC的使用 kubectl删除pvc——全部 现在您可以通过使用查看PVC的终止状态 kubectl获得pvc 然后你必须使用 kubectl修补程序pvc{pvc_NAME}-p'{“元数据”:{“终结器”:null}' 然后打开pvcfile.yaml并删除终结器行,保存并应用:
kubectl apply -f pvcfile.yaml
我试图删除这两个。pv和pvc。正如您在描述输出中所看到的,两者都处于终止状态。您使用的是什么平台?您是否尝试过使用kubectl create-f name of file删除包含以下内容的文件。yaml?我遇到了类似的问题:PVC不想死亡,因此项目永远处于“终止”状态。我确实
oc编辑了pvc/protectedpvc-nmyproject
,删除了关于终结器的那两行。PVC和项目都立即消失了。我同意这可能是一个bug,因为它不应该这样做。我没有在那个项目中运行任何吊舱,只有PVC。我只是遇到了同样的问题,这也是我的解决方案……删除约束。这不是一个“谢谢”的评论。更确切地说,我之所以添加这一点,是因为已经过去7个多月了,这个问题似乎仍然存在于野外,我认为新读者可能会从中受益。我正在运行最新的“minikube”(几天前安装和构建),它的背后是最新的“Docker for Mac”…我正在关注一个在线教程。我不知道这是否与这个bug有关,但我得到的行为与讲师的不同。他创建了一个新的PVC,其状态最初为“待定”。只有当他手动创建PV时,PVC的状态才会变为“绑定”。在我的例子中,似乎使用相同的命令创建PVC会立即创建一个PV来使用PVC分配的存储。有人知道这是为什么吗?因为我认为答案并不完整(没有解释laics解决方案的步骤)-您可以删除特定PV的YAML中仪表板中的终结器。此外,您可以通过以下方式在终端中执行此操作:kubectl patch pvc NAME-p'{“元数据”:{“终结器”:null}}
,kubectl patch pod NAME-p'{“元数据”:{“终结器”:null}}
。Source已经在另一个答案中提到:Recycle
现在被弃用了“没有运行使用持久卷的pod”我今天再次遇到了这个问题。删除时,两个PV(没有Pod和PVC关联)将永远变为终止状态。为了修复它,我运行了k
kubectl get pvc pvc_name -o yaml > pvcfile.yaml
kubectl apply -f pvcfile.yaml