Я попытался удалить ReplicationController
с 12 пакетами, и я увидел, что некоторые из них застряли в Terminating
статусе.
Мой кластер Kubernetes состоит из одного узла плоскости управления и трех рабочих узлов, установленных на виртуальных машинах Ubuntu.
В чем может быть причина этой проблемы?
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
kubernetes
Dimuthu
источник
источник
Ответы:
Вы можете использовать следующую команду для принудительного удаления POD.
источник
--force
получить стручки.Принудительно удалить стручок:
--force
Флаг является обязательным.источник
kube-system
пространстве имен.ktl get pods -o custom-columns=:metadata.name | xargs kubectl delete pod --force --grace-period=0
Удалить блок финализаторов из ресурса (модуль, развертывание, ds и т. Д.) Yaml:
источник
delete -grace-period=0 --force
этого не произошло. Я также был бы признателен за некоторые подробности о том, что именно он делает.Практический ответ - вы всегда можете удалить завершающий модуль, запустив:
Исторический ответ. В версии 1.1 возникла проблема, из-за которой иногда стручки оказывались в состоянии завершения, если их узлы нечисто удалялись из кластера.
источник
kubectl delete pod NAME --grace-period=0
kubectl delete ...
сSIG_TERM
запросом будет отправлена в контейнер. Но что, если после льготного периода контейнер все еще работает? Я застрялTerminating
в куче пакетов, некоторые написаны на go, некоторые на nodejs. Контроллер replicationController был удален, и контейнер все еще работаетkubectl delete pod PODNAME --grace-period=0
работал для меня, как предложено Клейтоном.Я нашел эту команду более простой:
Он удалит все модули в состоянии завершения в пространстве имен по умолчанию.
источник
kube-system
используйте:for p in $(kubectl get pods -n kube-system| grep Terminating | awk '{print $1}'); do kubectl delete pod $p --grace-period=0 --force -n kube-system;done
В моем случае
--force
опция не совсем сработала. Я все еще мог видеть стручок! Он застрял в режиме завершения / неизвестности. Итак, после запускаЯ побежал
источник
Если
--grace-period=0
не работает, то вы можете сделать:источник
Недавно я наткнулся на это при удалении пространства имен roph ceph - оно застряло в состоянии завершения.
Единственное, что помогло, - это удаление финализатора kubernetes путем непосредственного вызова API k8s с curl, как предлагается здесь .
kubectl get namespace rook-ceph -o json > tmp.json
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 здесь .
источник
Первоначальный вопрос «В чем может быть причина этой проблемы? », И ответ обсуждается по адресу https://github.com/kubernetes/kubernetes/issues/51835 & https://github.com/kubernetes/kubernetes/issues. / 65569 и см. Https://www.bountysource.com/issues/33241128-unable-to-remove-a-stopped-container-device-or-resource-busy
Это вызвано утечкой монтируемой док-станции в другое пространство имен.
Вы можете войти на хост хоста для расследования.
источник
Я наткнулся на это недавно, чтобы освободить ресурс в моем кластере. Вот команда, чтобы удалить их всех.
надеюсь, это поможет тому, кто это читает
источник