Kubernetes:如何正确删除PV

xa9qqrwz  于 2023-03-29  发布在  Kubernetes
关注(0)|答案(8)|浏览(683)

有状态的es-data集在我们的测试环境中失败了,我被要求删除相应的PV。
因此,我删除了es-data的以下内容:1)PVC 2)PV他们显示为终止,并留到周末。今天早上到达时,他们仍然显示为终止,所以强行删除了PVC和PV。没有乐趣。为了解决整个问题,我不得不删除有状态集。
如果您想删除PV,这是否正确?

s4chpxco

s4chpxco1#

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

kubectl delete pv <pv_name> --grace-period=0 --force

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

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

e5nqia272#

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

kubectl delete pvc data-p-0
kubectl delete pv  <pv-name>  --grace-period=0 --force

假设一个人想删除的PVC以及,似乎挂否则

4sup72z8

4sup72z83#

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

am46iovg

am46iovg4#

在开始时,请确保您的Reclaim Policy设置为Delete。在删除PVC之后,应删除PV。
https://kubernetes.io/docs/concepts/storage/persistent-volumes/#reclaiming
如果没有帮助,请查看这个[已关闭] Kubernetes PV问题:https://github.com/kubernetes/kubernetes/issues/69697
并尝试删除PV终结器。

ecbunoof

ecbunoof5#

这个线程上的大多数答案只是提到了命令,而没有解释根本原因。
这里有一个图表来帮助更好地理解。请参考我的其他答案以获得命令和其他信息-〉https://stackoverflow.com/a/73534207/6563567

此图显示如何清理删除卷x1c 0d1x

在你的例子中,PVC和PV由于终结器而停留在终止状态。终结器是k8中的护栏,以避免意外删除资源。
您的观察是正确的,这就是Kubernetes的工作方式。但是您删除资源的顺序不正确。

事情就是这样

由于PVC仍然存在,PV被卡住终止。PVC被卡住终止,因为Statefulsets(pod)仍在使用卷。(卷连接到节点并装载到pod)。一旦删除pod/STS,由于卷不再使用,PVC和PV被成功删除。

a9wyjsp7

a9wyjsp76#

提示:PV卷可能描述为pvc-name-of-volume,这可能会造成混淆!

  • PV:Persistent Volume
  • PVC:Persistent Volume Clame
  • Pod -〉PVC -〉PV -〉主机

1.首先找到pvs:kubectl get pv -n {namespace}
1.然后删除pv,以便将状态设置为Terminating
kubectl delete pv {PV_NAME}
1.然后打补丁将pvc的状态设置为Lostkubectl patch pv {PV_NAME} -p '{"metadata":{"finalizers":null}}'
1.然后获取PVC卷:kubectl get pvc -n storage
1.然后删除pvckubectl delete pvc {PVC_NAME} -n {namespace}

理论示例:

**假设我们在storage namespace中安装了Kafka

x1米11米1x
$ 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

3phpmpom

3phpmpom7#

kubectl delete pv [pv-name]
ksu你必须检查有关政策的光伏它不应该是回收政策。

camsedfj

camsedfj8#

对我来说,我遵循了这个方法,它对我很有效。

kubectl delete pv {your-pv-name} --grace-period=0 --force

然后编辑pvc配置。

kubectl edit pvc {your-pvc-name}

并从PVC配置中删除终结器。

finalizers:
  -  kubernetes.io/pv-protection

你可以在kubernetes官方指南中阅读更多关于finalizer的内容。
https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#finalizers

相关问题