Kubernetes:如何以正确的方式删除 PV

mac*_*mac 23 kubernetes kubernetes-health-check

有状态集 es-data 在我们的测试环境中失败,我被要求删除相应的 PV。

因此,我删除了 es-data 的以下内容:1) PVC 2) PV 它们显示为终止并留到周末。今天早上到达时,他们仍然显示为终止,因此强行删除了PVC和PV。没有喜悦。为了解决整个问题,我不得不删除有状态集。

如果您想删除 PV,这是否正确?

Pra*_*dha 35

您可以使用以下两个命令删除 PV:

kubectl delete pv <pv_name> --grace-period=0 --force
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令删除终结器:

kubectl patch pv <pv_name> -p '{"metadata": {"finalizers": null}}'
Run Code Online (Sandbox Code Playgroud)

  • 绝对不是这样的! (3认同)

Mz *_*z A 17

如果我先删除 pvc,然后删除 pv,这对我有用

kubectl delete pvc data-p-0
kubectl delete pv  <pv-name>  --grace-period=0 --force
Run Code Online (Sandbox Code Playgroud)

假设有人也想删除 pvc,否则似乎会挂起


sha*_*359 10

该线程上的大多数答案只是提到命令,而没有解释根本原因。

这是一个图表,可以帮助更好地理解。请参阅我的其他答案以获取命令和附加信息 - > /sf/answers/5147394521/

该图显示了如何清理删除卷 在此输入图像描述

在您的情况下,PVC 和 PV 由于终结器而陷入终止状态。终结器是 k8s 中的护栏,以避免意外删除资源。

您的观察是正确的,这就是 Kubernetes 的工作原理。但您删除资源的顺序不正确。

这就是发生的事情,

PV 被卡在终止状态,因为 PVC 仍然存在。PVC 被卡在终止状态,因为 Statefulsets(pod) 仍在使用卷。(卷附加到节点并安装到 Pod)。删除 pod/STS 后,由于不再使用卷,PVC 和 PV 已成功删除。


Sun*_*dey 6

首先运行 kubectl patch pv {PVC_NAME} -p '{"metadata":{"finalizers":null}}'

然后运行 kubectl delete pv {PVC_NAME}


小智 5

开始时请确保您Reclaim Policy已设置为Delete. 删除 PVC 后,应删除 PV。

https://kubernetes.io/docs/concepts/storage/persistent-volumes/#reclaiming

如果没有帮助,请检查这个 [关闭] Kubernetes PV 问题:https : //github.com/kubernetes/kubernetes/issues/69697

并尝试删除 PV 终结器。


小智 5

提示:PV 量的描述可能pvc-name-of-volume会令人困惑!

  • 光伏:Persistent Volume
  • PVC:Persistent Volume Clame
  • Pod -> PVC -> PV -> 主机

  1. 首先找到pv:kubectl get pv -n {namespace}

  2. 然后删除pv以便将状态设置为Terminating

kubectl delete pv {PV_NAME}

  1. 然后修补它以将pvc的状态设置为Lostkubectl patch pv {PV_NAME} -p '{"metadata":{"finalizers":null}}'

  2. 然后获取 PVC 卷:kubectl get pvc -n storage

  3. 然后你可以删除pvckubectl delete pvc {PVC_NAME} -n {namespace}


理论例子:

** 假设我们已经安装了 kafkastorage namespace

$ kubectl get pv -n storage

$ kubectl delete pv pvc-ccdfe297-44c9-4ca7-b44c-415720f428d1

$ kubectl get pv -n storage(挂起但将 pv 状态变为终止)

$ kubectl patch pv pvc-ccdfe297-44c9-4ca7-b44c-415720f428d1 -p '{"metadata":{"finalizers":null}}'

$ kubectl get pvc -n storage

kubectl delete pvc data-kafka-0 -n storage