Что это значит

kubelet просит среду контейнеров (containerd) остановить под, а та не отвечает до таймаута. Под висит в состоянии Terminating, а если его уже удалили из API, на узле остаются процессы и сетевые ресурсы. Новый под того же сервиса может не стартовать на этом узле, если ему мешают занятые ресурсы.

Частая причина: завис процесс containerd-shim этого пода. crictl его не видит или не может остановить.

Как проверить

  1. События пода и узел:
kubectl describe pod <под> -n <namespace>
  1. На узле: какие shim-процессы живы и чьи они:
ps -ef | grep containerd-shim | grep <id пода или контейнера>
  1. Журнал kubelet и containerd за то же время: journalctl -u kubelet -u containerd --since "30 min ago".

Что сделать

  1. Найти зависший containerd-shim пода и завершить его, после этого kubelet доведёт остановку.
  2. Если под завис в Terminating, а узел здоров, крайняя мера: kubectl delete pod <под> --grace-period=0 --force. Процессы на узле при этом остаются, их всё равно нужно убрать.
  3. Если повторяется, обновить containerd и проверить ядро и диск узла: зависания shim часто связаны с вводом-выводом.