温馨提示×

centos k8s为什么pod pending

小樊
49
2026-10-18 01:35:46
栏目: 智能运维

在 CentOS 上部署的 Kubernetes(k8s)中,Pod 处于 Pending 状态通常表示:Pod 已经被 API Server 接收,但还没有被调度到某个节点上运行,或者调度了但起不来。常见原因和排查方法如下:


一、最常见原因(按出现频率)

1️⃣ 资源不足(CPU / 内存)

Pod 请求的 CPU 或内存超过节点可用资源。

排查:

kubectl describe pod <pod-name> -n <namespace>

看 Events 中是否有:

FailedScheduling ... Insufficient cpu / memory

解决:

  • 减少 requests/limits
  • 扩容节点
  • 清理占用资源的 Pod

2️⃣ 节点 NotReady / 被封锁

CentOS 节点常见原因:

  • kubelet 挂了
  • 磁盘满了(CentOS 很常见)
  • 节点被 cordon

排查:

kubectl get nodes
kubectl describe node <node-name>

常见现象:

STATUS     ROLES    VERSION   AGE    STATUS
NotReady

CentOS 特别注意:

df -h
systemctl status kubelet
journalctl -u kubelet -f

3️⃣ 没有满足的节点(污点 / 亲和性)

  • 节点有 taint
  • Pod 没有 tolerations
  • nodeSelector / affinity 不匹配

典型信息:

0/3 nodes are available: 3 node(s) had untolerated taint

解决:

  • 加 toleration
  • 去掉 nodeSelector
  • 或给节点去污点:
kubectl taint nodes <node> key:NoSchedule-

4️⃣ 镜像拉取问题(PVC 或 image 拉不到)

如果是 Init:ImagePullBackOff 或 Pending + 拉镜像失败:

  • 私有镜像没配 imagePullSecret
  • CentOS 节点无法访问外网
  • 镜像名写错

排查:

kubectl describe pod <pod>

5️⃣ PVC 未绑定(存储问题)

Pod 依赖 PVC,但 PV 不存在或不可用。

现象:

persistentvolumeclaim "xxx" not found

排查:

kubectl get pvc -n <ns>
kubectl get pv

6️⃣ 调度器问题(Master 异常)

  • kube-scheduler 没运行
  • 控制平面组件挂了

排查:

kubectl get pods -n kube-system

二、快速定位步骤(推荐)

kubectl get pod <pod> -o wide
kubectl describe pod <pod>
kubectl get events --sort-by=.metadata.creationTimestamp

三、CentOS 特有常见问题

问题 说明
防火墙 firewalld 未关,导致节点通信失败
SELinux 未关闭导致 kubelet 异常
磁盘满 /var/lib 满,Pod 无法启动
swap 未关 kubelet 启动失败

四、如果你愿意

你可以直接贴出:

kubectl describe pod <pod>
kubectl get nodes

我可以帮你精准判断是哪一种原因。

0 踩