初步判断
一个pod一开始创建的时候,它本身就是会处于pending状态,这时可能是正在拉取镜像,正在创建容器的过程。
如果等了一会发现pod一直处于pending状态,
那么我们可以使用kubectl describe命令查看一下pod的Events详细信息。一般可能会有这么几种情况导致pod一直处于pending状态:
1、调度器调度失败。
Scheduer调度器无法为pod分配一个合适的node节点。
而这又会有很多种情况,比如,node节点处在cpu、内存压力,导致无节点可调度;pod定义了资源请求,没有node节点满足资源请求;node节点上有污点而pod没有定义容忍;pod中定义了亲和性或反亲和性而没有节点满足这些亲和性或反亲和性;以上是调度器调度失败的几种情况。
2、pvc、pv无法动态创建。
如果因为pvc或pv无法动态创建,那么pod也会一直处于pending状态,比如要使用StatefulSet 创建redis集群,因为粗心大意,定义的storageClassName名称写错了,那么会造成无法创建pvc,这种情况pod也会一直处于pending状态,或者,即使pvc是正常创建了,但是由于某些异常原因导致动态供应存储无法正常创建pv,那么这种情况pod也会一直处于pending状态。
排查角度
Pod处于Pending状态可能有多种原因,下面列举了一些常见情况和相应的排查方法:
资源不足:调度器无法找到满足Pod资源需求的节点来运行Pod。
使用kubectl describe pod
使用kubectl describe pod
使用kubectl describe pod
使用kubectl describe pod
使用kubectl describe pod
这些是常见的导致Pod处于Pending状态的情况,根据具体的错误信息和描述信息,可以进一步排查和解决问题。还可以使用kubectl get events命令查看集群中的事件日志,以获取更多关于Pod处于Pending状态的相关信息。
精彩内容
发表评论