云其它

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > 云其它 > k8s pod始终处于pending状态

k8s pod始终处于pending状态的解决方案

作者:珂玥c

新K8s部署后服务重启导致dashboard无法访问,所有Pod处于Pending状态,原因分析显示,因节点污点引发调度失败,删除污点后问题解决,总结Pending原因分为三类:调度问题(污点、资源不足)、镜像问题(拉取失败)、依赖性问题(卷/Secret/ConfigMap缺失)

项目场景

新搭建的k8s投入使用,为新项目提供节点资源。

问题描述

k8s服务部署后,由于项目需要,进行了一次服务重启,结果发现kubernetes-dashboard无法访问,kubectl get pod -A 查看所有pod发现,均处于pending状态。

原因分析

怀疑是node节点出了问题,所以导致pod无法启动。

解决方案

第一步:查看所有pod节点状态,发现全部是pending

kubectl get pod -A

第二步:查看namespace里面一个pod的详细信息,查看具体是什么原因导致的pending

kubectl -n kubernetes-dashboard describe pod dashboard-metrics-scraper-c45b7869d-vv9kw

#kubectl -n namespace的名字 describe pod pod的名字

结尾处看到报错信息,两个节点有污点,pod无法容忍。

第三步:查看污点信息

 kubectl describe nodes  |grep Taints

第四步:删除污点内容。污点名字后面跟 - 号,就可以删除了

kubectl taint nodes node1  project=devcenter-build:NoExecute-

kubectl taint nodes node2  project=devcenter-build:NoExecute-

第五步:再次查看污点信息,查看pod状态

kubectl describe nodes  |grep Taints

kubectl get pod -A

问题结束后,看了一些相关文章。

总结发现,pending状态导致的原因主要分为三类:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文