k8s pod 始终处于pending状态,如何解决

文章讲述了在新项目中使用Kubernetes部署服务时,遇到Kubernetes-dashboard无法访问的问题,经排查发现是由于节点污点导致Pod调度失败。作者详细介绍了从检查节点状态到定位并解决问题的步骤,以及Podpending状态可能的三种主要原因:调度问题、镜像问题和依赖性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

新搭建的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状态导致的原因主要分为三类:

第一类: 调度问题,无法在任何节点上调度 Pod。其中包括,污点、node节点内存或cpu资源不足、都会引起调度失败。

第二类: 镜像问题,无法拉取到镜像。包括,镜像名称、标签、镜像仓库输入错误,镜像仓库需要身份验证等,都导致拉取失败。

第三类:依赖性问题,Pod 需要一个卷、Secret 或 ConfigMap 才能运行。(没遇到过,但是据说发生这个问题的可能性较小)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值