K8s Pod一直处于Pending状态

吴CTO

· 阅读 1267

分享
K8s Pod Pending

K8s Pod一直处于Pending状态

Pod创建后一直显示Pending状态,无法调度到节点上。这通常是因为集群资源不足或配置有误。本文提供排查思路。

排查步骤

1. 查看Pod事件kubectl describe pod pod-name。查看Events部分,通常会说明Pending的原因。

2. 常见原因

Insufficient cpu/memory:集群没有足够的CPU或内存。解决方案:扩容节点、降低Pod的resources.requests、清理不需要的Pod释放资源。

node(s) had taint that the pod didn't tolerate:节点有污点(taint),Pod没有对应的容忍(toleration)。解决方案:给Pod添加toleration或移除节点taint。

node(s) didn't match Pod's node affinity/selector:Pod的nodeSelector或nodeAffinity没有匹配到任何节点。检查标签是否正确:kubectl get nodes --show-labels

persistentvolumeclaim未绑定:Pod使用了PVC但PVC没有绑定到PV。检查PVC状态:kubectl get pvc。如果PVC一直Pending,检查是否有可用的PV或StorageClass。

3. 查看节点状态kubectl get nodes。确认节点状态为Ready。如果节点是NotReady,可能是kubelet或容器运行时出了问题。

快速解决

如果是资源不足,临时方案是降低requests值。长期方案是开启Cluster Autoscaler自动扩容节点。如果是调度问题,检查affinity和taint/toleration配置。