Стручки застряли в состоянии завершения
Я устал удалять контроллер репликации с 12 стручками, и я мог видеть, что некоторые из стручков остаются застрявшими в состоянии завершения. Моя установка Kubernetes состоит из одного мастера и трех минонов, установленных в Ubuntu vms. Что может быть причиной этой проблемы?
NAME READY STATUS RESTARTS AGE
pod-186o2 1/1 Terminating 0 2h
pod-4b6qc 1/1 Terminating 0 2h
pod-8xl86 1/1 Terminating 0 1h
pod-d6htc 1/1 Terminating 0 1h
pod-vlzov 1/1 Terminating 0 1h
6 ответов:
вы можете использовать следующую команду, чтобы принудительно удалить стручок.
kubectl delete pod NAME --grace-period=0 --force
принудительно удалить стручок:
kubectl delete pod --grace-period=0 --force --namespace <NAMESPACE> <PODNAME>
The
--force
флаг является обязательным.
удалите блок финализаторов из ресурса (pod, deployment, ds и т. д...) ямл:
"finalizers": [ "foregroundDeletion" ]
практический ответ-вы всегда можете удалить оконечный РМО работает:
kubectl delete pod NAME --grace-period=0
исторический ответ -- в версии 1.1 была проблема, когда иногда стручки попадают в конечное состояние, если их узлы нечисто удалены из кластера.
Если
--grace-period=0
не работает, то вы можете сделать:kubectl delete pods <pod> --grace-period=0 --force
я наткнулся на это недавно при удалении пространства имен ладьи ceph-он застрял в состоянии завершения.
единственное, что помогло, это удалить Kubernetes finalizer, напрямую вызвав k8s api с curl, как было предложено здесь.
kubectl get namespace rook-ceph -o json > tmp.json
- удалить финализатор kubernetes в
tmp.json
(оставить пустой массив"finalizers": []
)- выполнить
kubectl proxy
в другом терминале для целей аутентификации и запуска следующего запроса curl для возврата портcurl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json 127.0.0.1:8001/k8s/clusters/c-mzplp/api/v1/namespaces/rook-ceph/finalize
- пространство имен нет
детальный Грач ceph teardown здесь.