如何在 Kubernetes 中删除持久卷

Jus*_*tin 25 kubernetes persistent-volumes

我正在尝试删除 Kubernetes 集群上的持久卷。我运行了以下命令:

kubectl delete pv pvc-08e65270-b7ce-11e9-ba0b-0a1e280502e2 pvc-08e87826-b7ce-11e9-ba0b-0a1e280502e2 pvc-08ea5f97-b7ce-11e9-ba0b-0a1e280502e2 pvc-08ec1cac-b7ce-11e9-ba0b-0a1e280502e2
Run Code Online (Sandbox Code Playgroud)

然而它显示:

persistentvolume "pvc-08e65270-b7ce-11e9-ba0b-0a1e280502e2" deleted
persistentvolume "pvc-08e87826-b7ce-11e9-ba0b-0a1e280502e2" deleted
persistentvolume "pvc-08ea5f97-b7ce-11e9-ba0b-0a1e280502e2" deleted
persistentvolume "pvc-08ec1cac-b7ce-11e9-ba0b-0a1e280502e2" deleted
Run Code Online (Sandbox Code Playgroud)

但是命令没有退出。所以我CONTROL+C强制退出命令。几分钟后,我跑了:

kubectl get pv
Run Code Online (Sandbox Code Playgroud)

状态为Terminating,但卷似乎没有删除。

如何删除这些持久卷?

sha*_*359 35

我创建了下图来帮助更好地解释这一点。

在此输入图像描述

本线程中的其他答案提到了 Kubectl 命令。同样应该有效。

kubectl delete sts sts-name
kubectl delete pvc pvc-name
kubectl delete pv pv-name 
Run Code Online (Sandbox Code Playgroud)

一些更有用的信息

  • 如果您看到某些内容陷入终止状态,那是因为 k8s 设置了护栏。这些被称为“终结器”。

  • 如果您的 PV 在删除后停留在终止状态,可能是因为您在删除 PVC 之前已删除了 PV。

  • 如果您的 PVC 在删除后陷入终止状态,可能是因为您的 pod 仍在运行。(在这种情况下只需删除 pod/statefulset)

  • 如果您希望删除处于终止状态的资源,请使用以下命令绕过 pvc、pv 保护终结器。

kubectl patch pvc pvc_name -p '{"metadata":{"finalizers":null}}'

kubectl patch pv pv_name -p '{"metadata":{"finalizers":null}}'



FL3*_*3SH 29

不建议删除 pv 应该由 cloud provisioner 处理。如果您需要删除 pv,只需删除绑定到声明的 pod,然后删除 pvc。在那之后,云供应商也应该删除 pv。

kubectl delete pvc --all 
Run Code Online (Sandbox Code Playgroud)

有时可能需要一些时间,所以请耐心等待。


小智 12

删除所有使用pvc(要删除)的pod,然后依次删除PVC(PersistentVolumeClaim) & PV(PersistentVolume)。

像下面这样的东西(按顺序):

  1. kubectl 删除 pod --all / pod-name
  2. kubectl delete pvc --all / pvc-name
  3. kubectl delete pv --all / pv-name


sfl*_*z05 9

PV是管理员配置的集群资源,而PVC是用户对存储和资源的请求。我猜你还部署了相应的PVC

  1. 删除部署。例如:

    在此输入图像描述

    kubectl delete deployment mongo-db
    
    Run Code Online (Sandbox Code Playgroud)
  2. 列出持久卷声明。例如:

    在此输入图像描述

    kubectl get pvc
    
    Run Code Online (Sandbox Code Playgroud)
  3. 删除对应的pcv。例如:

    在此输入图像描述

    kubectl delete pvc mongo-db
    
    Run Code Online (Sandbox Code Playgroud)