Kubernetes防止PVC被删除,并带有;Kubectl删除-f PVC“U名称”;

Kubernetes防止PVC被删除,并带有;Kubectl删除-f PVC“U名称”;,kubernetes,kubernetes-helm,kubectl,kubernetes-pvc,Kubernetes,Kubernetes Helm,Kubectl,Kubernetes Pvc,情况: 我的PVC有问题。 我需要使用舵图来更新我们的监控。但是我们没有舵柄,所以我们必须使用 用于创建yaml文件的helm模板,以便我们能够使用kubectl部署它。我们有时需要更新掌舵图,所以我们需要经常重复这个过程 问题: 使用“Kubectl delete-f FILE_With_YAMLS.yaml&&Kubectl create-f FILE_With_YAMLS.yaml”,它将删除 一切,甚至我们的PVC(+PV)。但我不想删除PVC 解决方案: 1.我的想法是,应该禁止删除我

情况: 我的PVC有问题。 我需要使用舵图来更新我们的监控。但是我们没有舵柄,所以我们必须使用 用于创建yaml文件的helm模板,以便我们能够使用kubectl部署它。我们有时需要更新掌舵图,所以我们需要经常重复这个过程

问题: 使用“Kubectl delete-f FILE_With_YAMLS.yaml&&Kubectl create-f FILE_With_YAMLS.yaml”,它将删除 一切,甚至我们的PVC(+PV)。但我不想删除PVC

解决方案: 1.我的想法是,应该禁止删除我们的PVC,这样我们就可以得到删除它的警告。 据此: 应该可以设置

Finalizers:    [kubernetes.io/pvc-protection]
但它不起作用

  • 使用_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
    
    

    谢谢你的帮助

    我没有尝试该解决方案,但可能有效。请将要删除的资源标记为 delete=true

    之后,在delete命令中指定标签,如

    kubectl delete -f *.yaml -l delete=true
    

    你能简单描述一下你的目标吗?你的描述相当复杂。我必须删除一个包含许多部署、PVC等的大型yaml文件,。。。等等“kubectl删除-f*.yaml。pvc在文件中。因此,当执行该命令时,我的PVC将消失。我想阻止它。如果你不想删除pv和pvc,那么你可以用_YAMLS.yaml从
    文件中删除这些yaml,并在可能的情况下将它们保存在另一个单独的yaml中。是的,我在第2点中指出了这一点:)但我不太喜欢这个解决方案,因为我们有时会得到一个舵手的更新,我们必须用kubectl再次部署它。而且很容易忘记从YAML中删除PVC。