Я создал следующий постоянный том, вызвав
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
После этого попробовал удалить пвх. Но эта команда прижилась.
при вызове 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>
Нет запущенного модуля, использующего постоянный том. Может ли кто-нибудь мне подсказать, почему пвх и пв не удаляются?

PV защищен. Удалите PV перед удалением PVC. Кроме того, удалите все модули / развертывания, которые заявляют права на любой из упомянутых PVC. Для получения дополнительной информации проверьте Защита используемого объекта хранения
Какую платформу вы используете? Вы пробовали удалить с помощью kubectl create -f nameOfTheFileContainingTheFollowingContent.yaml?
Я не уверен, почему это произошло, но после удаления финализаторов pv и pvc через панель управления kubernetes оба были удалены. Это произошло снова после повторения шагов, описанных в моем вопросе. Похоже на ошибку.
У меня была аналогичная проблема: PVC не хотел умирать и из-за этого проект навсегда находился в состоянии «Завершение». Я сделал oc edit pvc/protected-pvc -n myproject и удалил эти две строчки о финализаторах. И ПВХ, и проекты сразу исчезли. Я согласен, что это, вероятно, ошибка, потому что она не должна так себя вести. В этом проекте у меня не было запущенных модулей, только этот PVC.
Я только что столкнулся с той же проблемой, и это тоже решение для меня ... удалите ограничения. Это не благодарственный комментарий. Скорее, я добавляю это, потому что прошло 7+ месяцев, а эта проблема, похоже, все еще существует в дикой природе, и подумал, что новым читателям может быть полезно узнать об этом. Я использую последний «миникуб» (установленный и собранный всего несколько дней назад) за обновленным «Докером для Mac».
... Я следую онлайн-руководству. Я не знаю, связано ли это с этой ошибкой, но поведение, которое я получаю, отличается от поведения инструктора. Он создает новый PVC, который изначально находится в состоянии «Ожидание». Только когда он вручную создает PV, состояние PVC становится "связанным". В моем случае кажется, что создание PVC с помощью той же команды, которую он выполняет, немедленно создает PV для использования выделенного хранилища PVC. Кто-нибудь знает, почему это?
Поскольку ответ, на мой взгляд, не является полным (без объяснения шагов решения для laics) - вы можете удалить финализаторы на панели инструментов в YAML определенного PV. Кроме того, вы можете сделать это в терминале: kubectl patch pvc NAME -p '{"metadata":{"finalizers":null}}', kubectl patch pod NAME -p '{"metadata":{"finalizers":null}}'. Источник github.com/kubernetes/kubernetes/issues/…
Уже упоминалось в другом ответе: stackoverflow.com/a/56182934/2576531
Только что встретил эту проблему несколько часов назад.
Я удалил развертывания, в которых использовались эти ссылки, и PV / PVC автоматически завершились.
Если PV все еще существует, это может быть связано с тем, что для ReclaimPolicy установлено значение Retain, и в этом случае он не будет удален, даже если PVC исчезнет. Из документов:
PersistentVolumes can have various reclaim policies, including “Retain”, “Recycle”, and “Delete”. For dynamically provisioned PersistentVolumes, the default reclaim policy is “Delete”. This means that a dynamically provisioned volume is automatically deleted when a user deletes the corresponding PersistentVolumeClaim. This automatic behavior might be inappropriate if the volume contains precious data. In that case, it is more appropriate to use the “Retain” policy. With the “Retain” policy, if a user deletes a PersistentVolumeClaim, the corresponding PersistentVolume is not be deleted. Instead, it is moved to the Released phase, where all of its data can be manually recovered
Recycle устарел
В моем случае, пока я удаляю модуль, связанный как с pv, так и с pvc, pv и pvc в статусе завершения исчезают.
«Нет запущенного модуля, который использует постоянный том»
Я снова встретил эту проблему сегодня. 2 PV, без связанных Pod и PVC, при удалении навсегда переходили в состояние terminating. Чтобы исправить это, я запустил kubectl patch pv local-pv-324352d9 -n ops -p '{"metadata":{"finalizers": []}}' --type=merge. Затем PV исчез. Спасибо @Xiak намек
Это происходит, когда постоянный том защищен. Вы должны иметь возможность проверить это:
Команда:
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; Защита используемого объекта хранения
Это должен был быть выбранный ответ. Объясняет причину проблемы и краткий подход к ее устранению.
это решение работает лучше, чем решение для редактирования через корпоративные брандмауэры
Это должно было быть выбрано в качестве ответа
@codersofthedark не объясняет причину. Конечно охраняется. Об этом я уже говорил в своем вопросе. Но громкость не использовалась ни одним Pod => защита не должна иметь никакого эффекта.
У меня возникла эта проблема, и когда я попытался выполнить приведенную выше команду для исправления ПВХ, продолжал получать ошибку unable to parse "'{metadata:{finalizers:": yaml: found unexpected end of stream
в моем случае PVC защищены, потому что я удалил только StatefulSet, а не базовые поды, поэтому PVC все еще используются подами, поэтому он находится в фазе TERMINATING
Я на GKE и что-то вроде сразу ставит финализатор обратно. : /
в моем случае pvc не был удален из-за отсутствия пространства имен (я удалил пространство имен перед удалением всех ресурсов / pvc)
решение: создать пространство имен с тем же именем, что и раньше, а затем я смог удалить finalizers и, наконец, pvc
Для меня pv был в состоянии сохранения, поэтому выполнение вышеуказанных шагов не сработало.
Сначала нам нужно изменить состояние политики, как показано ниже:
kubectl patch pv PV_NAME -p '{"spec":{"persistentVolumeReclaimPolicy":"Delete"}}'
Затем удалите ПВХ, как показано ниже.
kubectl get pvc
kubectl delete pvc PVC_NAME
наконец, удалите pv с помощью
kubectl delete pv PV_NAME
Самый полезный комментарий здесь. Спасибо!
Если вы уже удалили PV и пытаетесь удалить PVC
Проверьте, прикреплен ли том этой командой
kubectl get volumeattachment
Удаление ПВХ: -
Сначала вам нужно удалить pvc pne одним с помощью этой команды
kubectl delete pvc <pvc_name> --grace-period = 0 --force
Или вы можете удалить все PVC, используя
kubectl удалить pvc - все
Теперь вы можете увидеть статус PVC как завершающийся, используя
kubectl получить пвх
а затем вы должны применить это удаление, используя
kubectl patch pvc {PVC_NAME} -p '{"metadata": {"finalizers": null}}'
kubectl get pvc pvc_name -o yaml > pvcfile.yaml
Затем откройте pvcfile.yaml и удалите строку финализаторов, сохраните и примените:
kubectl apply -f pvcfile.yaml
Вместо двух команд это можно сделать как «kubectl edit pvc pvc_name», затем удалить раздел и сохранить. Кстати, согласно исходному вопросу, автор удалил PVC, но эта операция не удалась по другим причинам, как указано в приведенных выше ответах.
Пытался удалить оба. ПВХ и ПВХ. Как вы можете видеть в описании вывода, оба находятся в состоянии завершения.