Pod Evicted 是什么
Pod 被标记为 Evicted 是节点在资源压力下的自我保护动作:当节点出现磁盘、内存或进程数压力时,节点上负责管理 Pod 的组件会按优先级驱逐部分 Pod,把资源让给更重要的负载。被驱逐的 Pod 状态显示为 Evicted,但真正的原因不在 Pod 自身,而在节点的条件与驱逐事件里。因此排查思路是治节点而不是反复重启 Pod:先看节点压力条件,再定位是什么把节点资源耗尽。
基本信息
| 查看方式 | 筛出被驱逐的 Pod,用 describe 查看驱逐原因信息 |
|---|---|
| 节点条件 | 查看节点条件字段,确认是否存在磁盘、内存或进程数压力 |
| 磁盘类原因 | 镜像堆积、日志暴涨、临时目录被写满 |
| 内存类原因 | 节点超卖,多个未设置请求与上限的负载叠加 |
| 处置方向 | 清理节点资源、调整请求与上限、扩容或隔离高消耗负载 |
典型使用场景
- 节点磁盘被写满,一批 Pod 在同一时间段内被驱逐
- 内存超卖引发驱逐,业务表现为服务随机重启且找不到应用层报错
- 镜像长期堆积占用磁盘,逐步逼近压力阈值
- 大促前评估节点资源水位与驱逐风险,提前扩容或迁移
- 复盘时区分这是节点容量问题还是单个应用异常导致的连带影响
排查命令
排查命令
kubectl get pods -A --field-selector status.phase=Failed | grep Evicted
kubectl describe node node-1 | grep -A2 "Conditions"
kubectl describe node node-1 | grep -i pressure
kubectl get events -A --field-selector reason=Evicted | tail # 看驱逐事件与时间点
kubectl delete pod --field-selector status.phase=Failed -A # 清理被驱逐的残留对象压力类型与线索
| 压力类型 | 典型线索 | 常见原因 |
|---|---|---|
| 磁盘压力 | 节点磁盘使用率长期偏高 | 镜像堆积、日志暴涨、临时目录写满 |
| 内存压力 | 节点内存长期接近上限 | 负载未设请求与上限,多个实例叠加 |
| 进程数压力 | 节点进程数接近上限 | 大量短生命周期进程或频繁创建容器 |
| 驱逐时间集中 | 同一时间段多个 Pod 被驱逐 | 底层资源确实到达临界点 |
驱逐是节点自保而不是随机故障:同一节点反复出现驱逐,说明该节点长期超载或磁盘异常,要治节点,而不是反复重启这些 Pod。
被驱逐的 Pod 在被重建后已经是新对象,原对象的日志与现场随之消失:如果业务日志没有外发,事故发生后几乎无法还原当时发生了什么,日志采集必须先于容器部署。