🛠️ Pod исчез без stack trace, а контроллер создал новый
В describe старого Pod:
Status: Failed Reason: Evicted Message: The node was low on resource: ephemeral-storage
Это не обычный restart контейнера.
Kubelet завершил Pod, чтобы защитить узел от нехватки ресурса. Новый Pod, если его создал Deployment или StatefulSet, — это уже другой объект с другим UID.
Что проверить первым:
kubectl describe pod kubectl describe node
Ключевые признаки:
— Reason: Evicted; — Message; — Events; — nodeName; — DiskPressure=True.
DiskPressure — это не только свободные гигабайты. Узел может страдать от нехватки inode.
Проверяйте:
nodefs.available nodefs.inodesFree imagefs.available imagefs.inodesFree
В некоторых версиях и конфигурациях также может быть containerfs.
Что обычно расходует local ephemeral storage:
— writable layer контейнера; — контейнерные логи; — дисковый emptyDir; — временные файлы и кеши.
Образы могут давить на imagefs. emptyDir с medium: Memory — это память, не дисковое ephemeral storage.
Важно разделять два сценария:
DiskPressure на узле → kubelet выселяет Pod Pod превысил свой ephemeral-storage limit → kubelet тоже может выполнить eviction
Поэтому смотрите и Node, и Message конкретного Pod, и его requests/limits.
Requests и limits не заменяют:
— ротацию логов; — контроль emptyDir; — очистку кеша; — мониторинг inode; — управление образами; — резервирование ресурсов узла.
Типичная ошибка — искать crash, OOMKilled или проблему probes и не проверить Reason: Evicted.
Вывод:
Evicted → DiskPressure или limit → nodefs/imagefs/containerfs → байты или inode → logs / writable layer / emptyDir / images → безопасное изменение
Сохраните набор артефактов для случая, когда Pod исчезает без явного stack trace приложения.
🔹🔹🔹🔹