Главная / Справочник ошибок / Контейнеры и Kubernetes
Kubernetes не может остановить под
FailedKillPod: error killing pod: failed to KillPodSandbox
Событие FailedKillPod «failed to KillPodSandbox» в Kubernetes: под не останавливается, висит в Terminating, новый не поднимается. Обычно виноват зависший процесс containerd-shim. Как найти и убрать.
Что это значит
kubelet просит среду контейнеров (containerd) остановить под, а та не отвечает до таймаута. Под висит в состоянии Terminating, а если его уже удалили из API, на узле остаются процессы и сетевые ресурсы. Новый под того же сервиса может не стартовать на этом узле, если ему мешают занятые ресурсы.
Частая причина: завис процесс containerd-shim этого пода. crictl его не видит или не может остановить.
Как проверить
- События пода и узел:
kubectl describe pod <под> -n <namespace>
- На узле: какие shim-процессы живы и чьи они:
ps -ef | grep containerd-shim | grep <id пода или контейнера>
- Журнал kubelet и containerd за то же время:
journalctl -u kubelet -u containerd --since "30 min ago".
Что сделать
- Найти зависший
containerd-shimпода и завершить его, после этого kubelet доведёт остановку. - Если под завис в Terminating, а узел здоров, крайняя мера:
kubectl delete pod <под> --grace-period=0 --force. Процессы на узле при этом остаются, их всё равно нужно убрать. - Если повторяется, обновить containerd и проверить ядро и диск узла: зависания shim часто связаны с вводом-выводом.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать