Kubernetes Предотвратить удаление PVC с помощью Kubectl delete -f PVC_NAME

Ситуация: у меня проблема с ПВХ. Мне нужно использовать диаграмму управления для обновления нашего мониторинга. Но у нас нет tiller, поэтому мы должны использовать шаблон helm для создания наших файлов yaml, чтобы мы могли развернуть его с помощью kubectl. Иногда нам нужно обновлять наши диаграммы управления, поэтому нам нужно часто повторять этот процесс.

Проблема: «Kubectl delete -f FILE_WITH_YAMLS.yaml && Kubectl create -f FILE_WITH_YAMLS.yaml» удаляет все, даже наш PVC (+ PV). Но я не хочу удалять PVC.

Решение: 1. У меня возникла идея, что удаление на нашем PVC должно быть запрещено, чтобы мы получили предупреждение об его удалении. Согласно этому: Kubernetes: невозможно удалить PersistentVolumeClaim (pvc) Должна быть возможность установленный

Finalizers:    [kubernetes.io/pvc-protection]

но это не работает ...

  1. Удалите PVC из FILE_WITH_YAMLS.yaml. Он не будет удален снова с помощью «kubectl delete -f FILE_WITH_YAMLS.yaml». Но легко забыть удалить PVC, поэтому я считаю это слишком рискованным.

  2. ??? Есть ли у вас какие-либо идеи?

Моя группа форм из ПВХ выглядит так:

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

Спасибо за любую помощь!


person goku736    schedule 11.05.2020    source источник
comment
Вы можете просто описать свою цель? ваше описание довольно сложное.   -  person Kamol Hasan    schedule 11.05.2020
comment
Мне нужно удалить большой файл yaml со многими развертываниями, pvcs и т. Д. С помощью kubectl delete -f * .yaml. PVC находятся в файле. Поэтому при выполнении команды мой PVC исчезнет. Я хочу предотвратить это.   -  person goku736    schedule 11.05.2020
comment
Если вы не хотите удалять pv и pvc, вы можете просто удалить эти yaml из FILE_WITH_YAMLS.yaml и сохранить их в другом отдельном yaml, если это возможно.   -  person Kamol Hasan    schedule 11.05.2020
comment
Да, правильно, я отметил это в пункте 2 :) Но мне не очень нравится это решение, потому что мы иногда получаем обновление для символов руля, и нам нужно снова развернуть его с помощью kubectl. И легко забыть удалить ПВХ из пряжи.   -  person goku736    schedule 11.05.2020


Ответы (1)


Я не пробовал это решение, но оно может сработать. Обозначьте ресурсы, которые вы хотите удалить, например delete = true .. и т. Д.

После этого в команде удаления укажите метку вроде

kubectl delete -f *.yaml -l delete=true
person sachin    schedule 11.05.2020