pod-evicted

Kubernetes Pod 被 Evicted 的定位与修复

现象

Pod 状态为 Evicted,节点出现 DiskPressure、MemoryPressure 或 PIDPressure。kubelet 为保护节点主动驱逐 Pod,常见于磁盘或内存耗尽。

快速定位

kubectl get pod -A | grep Evicted
kubectl describe pod <pod> -n <ns>
kubectl get events -n <ns> --sort-by=.lastTimestamp | tail -30
kubectl describe node <node> | grep -A5 Conditions

登录节点:

df -h
df -i
free -m
journalctl -u kubelet --since '1 hour ago' | grep -i evict

常见根因

  1. 节点 ephemeral-storage 不足:日志、镜像层、emptyDir 占满。
  2. 内存压力:Pod 没有 limits,或节点超卖严重。
  3. PID 耗尽:进程/线程泄漏。
  4. 镜像和容器日志没有清理策略。
  5. kubelet 驱逐阈值配置过松或过严。

修复

相关命令

读完自测

合上页面,先回答,再展开对照。

  1. Pod 的 Evicted 状态是谁发起的,目的是什么?
  2. 节点 ephemeral-storage 不足通常由什么占满?
  3. 如何降低关键 Pod 被驱逐的概率?
答案
  1. 由 kubelet 为保护节点主动驱逐。节点通常出现 DiskPressure、MemoryPressure 或 PIDPressure。
  2. 常见是容器日志、镜像层和 emptyDir 占满。登录节点用 df -h/df -i 和 journalctl -u kubelet 确认。
  3. 给 Pod 设置 requests/limits 和 ephemeral-storage 限制,并配置日志轮转。对关键 Pod 设置 PriorityClass 也能降低被优先驱逐的概率。