20240509xxx集群xx节点PLEG超时问题

20240509xxx集群xx节点PLEG超时问题

//20240509 写在前面

xxx集群xx节点又又又又又卡住了,经过一系列排查,终于解决了问题,由于这次找到了通用解法,所以在此记录下

ps:国内的搜索引擎是真的shi。。搜出来的帖子都是抄来抄去的,还不解决问题,还得是google/大拇指

问题起因:

  • 偷得浮生半日闲,看到集群里一个节点监控没了,寻思是不是又是df卡住了,然后进去一看,果然,Ready 和 NotReady状态之间鬼畜,遂开始排查

解决流程:

  • 先说结论,核心就一句命令:

    for i in `docker ps -aq`; do echo $i; docker inspect $i 1>/dev/null 2>&1; done
    # 卡住的即为有问题的容器
    
  • 首先需要了解PLEG的原理,看看他到底在干什么,这里我不赘述,可以看Ref第一条,老哥说的很清楚;总结出来就一个点“遍历检查所有pod所属容器的状态”

  • 那既然知道了在干什么,分析就变得很简单了,又如下几点:

    • PLEG过程中哪里夯住了
    • pod太多,预设阈值中3分钟处理不完【这种一般很少见了,因为PLEG是节点级别的,一个节点不会有那么多pod,除非超级节点。。】
  • 所以有以下几个排查方向:

    • 节点pod数
    • docker状态【或者说底层CRI的状态】
      • 因为PLEG需要的信息是从底层接口中获取的
    • 本地所有由kubelet产生的容器信息
      • 使用开头的那句命令即可,PLEG拿到的信息,从inspect也可以拿到,如果拿不到,那肯定是有问题
  • 找到问题之后,处理问题节点即可,本案例是因为ceph挂载卡住,杀死相关进程即可【容器杀不掉,只能强杀进程】

Ref:

posted @ 2024-05-09 17:28  醉生梦死_0423  阅读(4)  评论(0编辑  收藏  举报