Kubernetes: невозможно удалить PersistentVolumeClaim (pvc)

Я создал следующий постоянный том, позвонив

kubectl create -f nameOfTheFileContainingTheFollowingContent.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-monitoring-static-content
spec:
  capacity:
    storage: 100Mi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/some/path"

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-monitoring-static-content-claim
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ""
  resources:
    requests:
      storage: 100Mi

После этого я попытался удалить pvc. Но эта команда застряла. при вызове kubectl describe pvc pv-monitoring-static-content-claim я получаю следующий результат:

Name:          pv-monitoring-static-content-claim
Namespace:     default
StorageClass:
Status:        Terminating (lasts 5m)
Volume:        pv-monitoring-static-content
Labels:        <none>
Annotations:   pv.kubernetes.io/bind-completed=yes
               pv.kubernetes.io/bound-by-controller=yes
Finalizers:    [foregroundDeletion]
Capacity:      100Mi
Access Modes:  RWO
Events:        <none>

И для kubectl describe pv pv-monitoring-static-content

Name:            pv-monitoring-static-content
Labels:          <none>
Annotations:     pv.kubernetes.io/bound-by-controller=yes
Finalizers:      [kubernetes.io/pv-protection foregroundDeletion]
StorageClass:
Status:          Terminating (lasts 16m)
Claim:           default/pv-monitoring-static-content-claim
Reclaim Policy:  Retain
Access Modes:    RWO
Capacity:        100Mi
Node Affinity:   <none>
Message:
Source:
    Type:          HostPath (bare host directory volume)
    Path:          /some/path
    HostPathType:
Events:            <none>

Не работает подкачка, использующая постоянный объем. Может ли кто-нибудь дать мне подсказку, почему pvc и pv не удалены?

Ответ 1

Я не уверен, почему это произошло, но после удаления финализаторов pv и pvc через панель инструментов кубернетов оба они были удалены. Это произошло снова после повторения шагов, которые я описал в своем вопросе. Похоже на ошибку.

Ответ 2

PV защищен. Удалите PV перед удалением PVC. Кроме того, удалите любые модули/развертывания, которые требуют любого из указанных PVC. Для получения дополнительной информации ознакомьтесь с Хранение объекта в использовании Защита

Ответ 3

Это происходит, когда постоянный том защищен. Вы должны быть в состоянии проверить это:

Команда:

kubectl describe pvc PVC_NAME | grep Finalizers

Выход:

Finalizers: [kubernetes.io/pvc-protection]

Вы можете исправить это, установив для финализаторов значение null с kubectl patch:

kubectl patch pvc PVC_NAME -p '{"metadata":{"finalizers": []}}' --type=merge

Ref; Хранение объекта в использовании Защита

Ответ 4

Если PV все еще существует, это может быть потому, что для ReclaimPolicy установлено значение Retain, и в этом случае он не будет удален, даже если PVC исчезнет. Из документов:

У PersistentVolumes могут быть различные политики восстановления, включая "Сохранить", "Переработать" и "Удалить". Для динамически предоставляемых PersistentVolumes политикой возврата по умолчанию является "Удалить". Это означает, что динамически подготовленный том автоматически удаляется, когда пользователь удаляет соответствующий PersistentVolumeClaim. Такое автоматическое поведение может быть неуместным, если том содержит ценные данные. В этом случае более целесообразно использовать политику "Сохранить". С помощью политики "Сохранить", если пользователь удаляет запрос PersistentVolumeClaim, соответствующий объект PersistentVolume не удаляется. Вместо этого он перемещается в фазу "Выпущено", где все его данные могут быть восстановлены вручную.

Ответ 5

Просто встретил эту проблему несколько часов назад.

Я удалил развертывания, которые использовали эти ссылки, и PV/PVC автоматически прекращаются.

Ответ 6

В моем случае, пока я удаляю модуль, связанный как с pv и с pvc, pv и pvc в состоянии завершения исчезают

Ответ 7

Вы можете избавиться от редактирования вашего ПВХ! Снять защиту ПВХ.

  1. kubectl edit pvc YOUR_PVC -n NAME_SPACE
  2. Отредактируйте вручную и поставьте # перед этой строкой enter image description here
  3. Все пвх и пвх будут удалены

Ответ 8

Да, в моем случае это произошло. После того, как я удалил развертывание и соответствующее pv (удаленное полное пространство имен), PersistentVolume перешел в статус Release. Но теперь я снова выполнил развертывание, но эти PersistentVolumes снова не ограничиваются (Все еще находятся в освобожденном состоянии, а модули сбой с ошибкой не удается смонтировать). Можете ли вы помочь мне, как привязать их к стручкам.