首页/云/云与容器速查/Pod Pending 排查清单

Pod Pending 排查清单

Pending 表示还没被调度或还在拉镜像阶段:describe 的 Events 会直接给出原因。按 资源不足 → 污点/亲和 → 卷未就绪 → 配额 的顺序核对,基本一查一个准。

云与容器速查云更新于 2026-10-13

Pod Pending 怎么排查

等待调度表示实例还没被分配到节点,或分配到节点后仍在拉镜像与挂载卷。这类问题的答案几乎都写在资源详情的事件里:资源不足、选择器不匹配、污点未被容忍、存储未绑定、配额超限。按顺序核对这几类原因,通常一轮就能定位。

基本信息

首要入口查看实例详情的事件列表,原因通常直接写在里面
常见类别资源不足、选择器与亲和不匹配、污点未容忍、存储未就绪、配额超限
节点视角确认目标节点剩余资源与实例数量上限
存储检查查看存储声明是否成功绑定,存储类是否存在
配额检查命名空间级别的资源配额被占满也会导致无法调度
镜像阶段镜像体积大时拉取耗时长,也会表现为长时间等待

典型排查动作

  • 先看事件:从最后几条开始读,原因通常写得很直白
  • 核对资源请求:请求值超过单节点可分配量时,任何节点都放不下
  • 检查选择器与亲和规则:写错节点标签会让实例永远匹配不到目标
  • 检查污点与容忍:专用节点池没有配容忍时实例会被挡在门外
  • 检查存储声明:未绑定的存储会让实例一直停在挂载阶段
  • 检查命名空间配额:配额被占满时新建实例直接被拒绝
  • 确认镜像拉取进度:大镜像冷启动耗时属于正常现象

事件关键词与处置

事件关键词含义处置
资源不足节点剩余资源不够降请求值或扩容节点
节点选择不匹配标签或亲和无匹配核对标签与亲和条件
污点未被容忍目标节点有污点加容忍或换节点池
存储未绑定存储声明没有可用后端检查存储类与声明状态
超出配额命名空间配额已满调配额或释放资源
正在拉取镜像镜像下载中确认镜像大小与网络

排查命令

排查命令
kubectl get pod web-1 -o wide                          # 看状态与节点
kubectl describe pod web-1 | tail -25                   # 事件是答案所在
kubectl get nodes                                       # 节点是否就绪
kubectl describe node node-1 | grep -A6 "Allocated resources"   # 节点余量
kubectl get pvc -n dev                                  # 存储是否绑定
等待调度也可能是镜像正在拉取:大镜像在冷启动时几分钟属于正常范围,先看事件里有没有拉取进度再判定为故障。
直接删除重建通常没用:调度条件没变,新实例还是等待调度,只是浪费了一次重试与观察时间。
资源请求是最容易出错的字段:请求值设得过大时,即使节点整体还有余量也可能放不下单个实例。
配额与库存是两件事:命名空间配额属于平台侧限制,节点资源不足属于容量问题,处理方式完全不同。

处理思路的先后顺序

  • 先定性:是完全没有可调度的节点,还是有节点但不满足条件
  • 再定量:核对资源请求值与节点剩余容量之间的差距
  • 判定为存储问题后先看存储声明状态,再看实例本身
  • 确认配额与库存之后再考虑扩容节点,顺序颠倒会白做工作
  • 把常见事件关键词与对应处理方式整理成速查表
把调度失败的原因分类记录:资源类、策略类、存储类各有固定处理路径,积累成经验后排查会越来越快。

易错点

  • 直接删除重建实例,调度条件未变,新实例依旧等待调度
  • 只看实例详情不核对节点余量,请求总量超额部署长期无解
  • 忽略节点标签与亲和规则,反复调整镜像与配置做无用功
  • 存储声明没绑定就先怀疑应用,实例其实从未启动
  • 把大镜像的正常拉取耗时当成故障,误触发扩容与回滚

数据来源与参考

  • Kubernetes Docs:Pod Lifecycle
  • Kubernetes Docs:Assigning Pods to Nodes

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌