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保护

  • kubectl编辑pvc您的\u pvc-n名称\u空间
  • 手动编辑并将#置于此行之前
  • 所有pv和pvc将被删除

  • 在我的例子中,pvc没有被删除,因为缺少名称空间(我在删除所有资源/pvc之前删除了名称空间)
    解决方案:使用与以前相同的名称创建名称空间,然后我能够删除
    终结器
    ,最后pvc

    For 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