🛠️ 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 приложения.
🔹🔹🔹🔹
В 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 приложения.
🔹🔹🔹🔹