情况: 我的 PVC 有问题。 我需要使用 Helm Chart 来更新我们的监控。但我们没有耕耘机,所以我们必须使用 用于创建 yaml 文件的 helm 模板,以便我们能够使用 kubectl 进行部署。有时我们需要更新 Helm chart ,因此我们需要经常重复该过程。
问题: 使用“Kubectl delete -f FILE_WITH_YAMLS.yaml && Kubectl create -f FILE_WITH_YAMLS.yaml ”,它会删除 一切,甚至我们的 PVC (+ PV)。但我不想删除 PVC。
解决方案: 1. 我的想法是应该禁止删除 PVC,这样我们就会收到删除它的警告。 据此:Kubernetes: Can't delete PersistentVolumeClaim (pvc) 应该可以设置
Finalizers: [kubernetes.io/pvc-protection]
但它不起作用......
从 FILE_WITH_YAMLS.yaml 中删除 PVC。它不会被“kubectl delete -f FILE_WITH_YAMLS.yaml”再次删除。但是很容易忘记删除PVC,所以我认为风险太大。
???你有什么想法吗?
我的 PVC 表单簇如下所示:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
pv.kubernetes.io/bind-completed: "yes"
pv.kubernetes.io/bound-by-controller: "yes"
volume.beta.kubernetes.io/storage-provisioner: cinder.csi.openstack.org
creationTimestamp: "2020-05-11T07:15:11Z"
finalizers:
- kubernetes.io/pvc-protection
labels:
app: prometheus
chart: prometheus-10.4.0
component: server
heritage: Tiller
release: monitoring
name: monitoring-prometheus-server
namespace: monitoring
resourceVersion: "114848084"
selfLink: /api/v1/namespaces/monitoring/persistentvolumeclaims/monitoring-prometheus-server
uid: 3430de7d-d167-41c7-92cc-eb15803cdca7
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 15Gi
storageClassName: cinder
volumeMode: Filesystem
volumeName: pvc-3430de7d-d167-41c7-92cc-eb15803cdca7
status:
accessModes:
- ReadWriteOnce
capacity:
storage: 15Gi
phase: Bound
感谢您的帮助!
最佳答案
我没有尝试该解决方案,但可能会起作用。标记您要删除的资源,例如 删除=true ..等
之后在删除命令中指定标签,例如
kubectl delete -f *.yaml -l delete=true
关于Kubernetes 使用 "Kubectl delete -f PVC_NAME"防止 PVC 被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61725577/