如何在Kubernetes中删除持久卷

kcrjzv8t  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(4)|浏览(506)

我正在尝试删除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

然而,它显示:

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

但是命令没有退出.于是我CONTROL+C强行退出命令.几分钟后,我跑了:

kubectl get pv

状态为Terminating,但卷似乎未被删除。
如何删除这些永久卷?

enxuqcxy

enxuqcxy1#

建议不要删除pv,它应由云置备程序处理。如果需要删除pv,只需删除绑定到声明的pod,然后删除pvc。之后,云置备程序也应删除pv。

kubectl delete pvc --all

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

ibrsph3r

ibrsph3r2#

删除正在使用PVC(您要删除的)的所有pod,然后依次删除PVC(PersistentVolumeClaim)和PV(PersistentVolume)。
下面的一些事情就像(按顺序):

  1. kubectl删除窗格--全部/窗格名称
  2. kubectl删除PVC --全部/PVC名称
  3. kubectl删除物理卷--全部/物理卷名称
z9ju0rcb

z9ju0rcb3#

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

Kubectl命令在这个线程的其他答案中提到。同样的应该可以工作。

kubectl delete sts sts-name
kubectl delete pvc pvc-name
kubectl delete pv pv-name

更多有用信息

  • 如果你看到一些东西卡在终止状态,那是因为k8设置了护栏。这些被称为“终结器”。
  • 如果您的PV在删除后一直处于终止状态,可能是因为您在删除PVC之前删除了PV。
  • 如果您的PVC在删除后停留在终止状态,这可能是因为您的pod仍在运行。(在这种情况下,只需删除pod/statefulset即可)
  • 如果您希望删除处于终止状态的资源,请使用以下命令绕过pvc、pv保护终结器。

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

  • 以下是有关PVC保留策略的文档。
  • 以下是有关PV回收策略的文档。
c6ubokkw

c6ubokkw4#

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

1.删除部署。例如:

kubectl delete deployment mongo-db

1.列出 * 永久卷声明 *。例如:

kubectl get pvc

1.删除相应的 pcv,如:

kubectl delete pvc mongo-db

相关问题