Kubernetes 里 Pod 一直 Pending?先看这 5 个常见原因

举报
yd_263188715 发表于 2026/10/28 01:19:06 2026/10/28
【摘要】 部署新服务后,kubectl get pods 发现 Pod 一直停在 Pending,是集群运维里最常见的卡点之一。Pending 表示调度器还没把它放到某个节点上。下面按排查顺序整理 5 个高频原因和对应命令。 1. 资源不够:CPU / 内存请求过大kubectl describe pod <pod-name>Events 里若出现 Insufficient cpu 或 Insuffi...

部署新服务后,kubectl get pods 发现 Pod 一直停在 Pending,是集群运维里最常见的卡点之一。Pending 表示调度器还没把它放到某个节点上。下面按排查顺序整理 5 个高频原因和对应命令。

1. 资源不够:CPU / 内存请求过大

kubectl describe pod <pod-name>

Events 里若出现 Insufficient cpu 或 Insufficient memory,说明当前节点满足不了该 Pod 的 requests。可以:

  • 临时调小 resources.requests(不要只改 limits);
  • 扩容节点或把工作负载迁到资源更空闲的节点池;
  • 用 kubectl top nodes 看各节点实际占用。

2. 节点选择器 / 亲和性配错

kubectl get nodes --show-labels
kubectl describe pod <pod-name> | grep -A20 Events

nodeSelector、nodeAffinity、tolerations 写错时,调度器找不到匹配节点,Events 常提示 didn't match node selector 或 had untolerated taint。对照节点 label 和污点改配置,或给目标节点补上对应 label / taint 容忍。

3. PVC 未绑定成功

依赖持久卷的 Pod 会等 PVC 变成 Bound。检查:

kubectl get pvc
kubectl describe pvc <pvc-name>

常见问题:StorageClass 不存在、可用区与节点不一致、云盘配额用尽。先把 PVC 调到 Bound,Pod 才会继续调度。

4. 镜像拉取策略或密钥问题(有时表现为 ContainerCreating)

严格说镜像问题多在 ContainerCreating / ErrImagePull,但排查 Pending 时一并看一眼:

kubectl describe pod <pod-name>
kubectl get events --field-selector involvedObject.name=<pod-name>

私有仓库需要正确的 imagePullSecrets;公共镜像偶发网络超时可重试或换加速源。

5. 调度器本身或集群异常

少数情况下是控制面问题:

kubectl get cs
kubectl -n kube-system get pods | grep scheduler
kubectl logs -n kube-system deploy/kube-scheduler --tail=100

确认 scheduler 健康、API Server 可访问后,再回头看业务 YAML。

排查顺序建议

describe pod 看 Events → 核对 requests / 亲和性 / 污点 → 检查 PVC → 再看镜像与控制面。大多数 Pending 都能在前三步定位。改完配置后用 kubectl apply 更新,或删除 Pod 让控制器重建,观察是否进入 Running。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。