K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路

K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路

Node节点资源不足可能会产生的故障

  • 故障一:Pod数量太多超出物理节点的限制
  • 每一台Node节点中默认限制最多运行110个Pod资源,当一个应用程序有成百上千的Pod资源时,如果不扩容Node节点或者修改最大Pod数量限制,那么就会导致部分Pod资源无法正常运行,因为节点已经没有资源可以被调度了。
  • 解决思路就是扩容Node节点数量或者修改Pod的数量限制
  • 故障二:Pod配置的资源限额超出物理节点的最大使用率
  • 由于Node节点资源有限,当Pod设置的资源配额超出了Node节点所承受的极限,那么Pod将无法部署和运行,会报错没有合适的Node节点可调度。
  • 解决思路就是对资源限方面重新调整,适当扩展节点资源。

Node节点资源不足故障排查案例一

  • 故障描述:

  • Pod资源数量过多,超出节点调度Pod的数量。

  • 当Pod资源数量太多,已经达到了Node节点默认的110个Pod时,新创建的Pod资源会一直处于Pending状态,并且大量的Pod会频繁重启。

  • 排查思路:

  • 首先查看Pod的详细信息,重点观察容忍的信息,通常情况下会看到下面的信息,从这个信息中我们就可以判断出是由于节点资源上限从而引发的问题。

  • Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s 
    Events: <none>
    
    #正常的情况下下是没有for 300s 提示的,这句话的意思是说300秒内都没有通过容忍调度在Node节点,产生了超时。
    
  • 查看Node节点的详细信息,如果是资源使用上限的问题,会看到如下的报错信息。

  • Warning SystemOOM 78s kubelet System OOM encountered, victim process: java, pid: 5879
    
  • 通过在查看Node节点的详细信息,可以看到Kubelet组件触发了OOM机制,接下来去排查Kubelet。

  • 38506 kubelet_pods.go:880] Unable to retrieve pull secret ms/registry-pull-secret for ms/eur...t succeed
    
  • 从Kubelet的报错日志中可以看到不能拉取secret资源,结合Pod中容忍提示的信息,最有可能出现的原因就是资源不够用了。

  • 排查Node节点中各项资源指标的使用情况,CPU、内存、磁盘。

  • 都没有问题后,在查看该Node节点中运行了多少个Pod资源,如果超过110个,那么就可以定位问题了,每个Node节点默认只允许运行110个Pod,超出限制后无法调度。

  • 解决方法就是修改默认的Pod数量,但是也要根据机器硬件性能做出合理的调整。

Node节点资源不足故障排查案例二

  • 故障描述:

  • Pod一直处于Pending状态。

  • 排查过程:

  • 查看Pod的详细信息,可以获得关键的信息。

  • default-scheduler 0/3 nodes are available: 2 Insufficient memory, 2 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn"t tolerate.
    
  • 从Pod的详细信息中可以得知,3个节点中,没有一个节点符合Pod的资源设置,其中有2个节点内内存不足和一个节点是Master,污点不能被容忍。

  • 重新调整Pod的资源限制,或者扩容物理节点的内存即可解决。

-----------------------------------------------------------------------------------

offer突击训练营简介:

1:针对不知道怎么面试,面试没有信心的小伙伴,我们会给你一个offer保障。

2:我们会监督你15-20天内把面试体系技术点掌握至少7成,这样足够你去找到满意的工作了。

3:我们是面向面试学习指导,不会带你们去写代码,会把项目真实开发的迭代过程和技术细节如何实现业务功能都详细教清楚,你能在面试中流畅表达清楚就行了,项目经验你不用担心(技术老师提供的真实项目经验肯定拿的出手),自己学和别人带着系统学,效率完全不一样。

详情请点击这里offer突击训练营,给你一个offer的保障,求职跳槽的看过来!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是K8S集群Pod资源调度失败的故障排查思路: 1.检查节点资源是否充足,包括CPU、内存、存储等。 2.检查Pod资源请求和限制是否合理,是否超过节点资源容量。 3.检查节点是否存在污点(Taints),污点会阻止Pod调度到该节点上。 4.检查Pod的亲和性(Affinity)和反亲和性(Anti-Affinity)设置是否正确,是否与节点标签匹配。 5.检查Pod的调度策略是否正确,如节点选择器(NodeSelector)、亲和性和反亲和性等。 6.检查Pod的调度器是否正常运行,是否存在异常。 7.检查Pod的状态和事件,查看是否存在调度失败的相关信息。 8.检查K8S集群的网络是否正常,是否存在网络故障导致Pod无法调度。 以下是K8S集群Pod资源常见问题排查思路以及处理方法: 1.检查Pod的状态和事件,查看是否存在异常信息。 2.检查Pod的日志,查看是否存在错误信息。 3.检查Pod资源使用情况,如CPU、内存、存储等是否超过限制。 4.检查Pod的网络是否正常,如是否能够访问外部网络、是否能够与其他Pod通信等。 5.检查Pod的亲和性和反亲和性设置是否正确,是否与节点标签匹配。 6.检查Pod的调度策略是否正确,如节点选择器、亲和性和反亲和性等。 7.检查Pod所在的节点是否正常运行,如节点是否宕机、节点资源是否充足等。 8.检查K8S集群的网络是否正常,是否存在网络故障导致Pod无法正常运行

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT枫斗者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值