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的保障,求职跳槽的看过来!

相关推荐
pianmian13 小时前
类(JavaBean类)和对象
java
我叫小白菜4 小时前
【Java_EE】单例模式、阻塞队列、线程池、定时器
java·开发语言
Albert Edison4 小时前
【最新版】IntelliJ IDEA 2025 创建 SpringBoot 项目
java·spring boot·intellij-idea
超级小忍5 小时前
JVM 中的垃圾回收算法及垃圾回收器详解
java·jvm
weixin_446122465 小时前
JAVA内存区域划分
java·开发语言·redis
勤奋的小王同学~5 小时前
(javaEE初阶)计算机是如何组成的:CPU基本工作流程 CPU介绍 CPU执行指令的流程 寄存器 程序 进程 进程控制块 线程 线程的执行
java·java-ee
TT哇5 小时前
JavaEE==网站开发
java·redis·java-ee
2401_826097625 小时前
JavaEE-Linux环境部署
java·linux·java-ee
缘来是庄6 小时前
设计模式之访问者模式
java·设计模式·访问者模式
Bug退退退1236 小时前
RabbitMQ 高级特性之死信队列
java·分布式·spring·rabbitmq