记一次PLEG问题排查

问题现象

node节点状态频繁ready、notready(media/16554317906173.jpg)]

排查记录

  1. 为避免业务影响,将异常节点标记为不可调度,并把master-3节点的不可调度污点删掉(master充当node角色),将node-222节点上的pod驱逐到其他节点。
$ kubectl cordon node-222
$ kubectl taint  node master-2  node-role.kubernetes.io/master-
$ kubectl drain node-222  --ignore-daemonsets --delete-local-data  
# 在驱逐时,发现一直卡死,强制驱逐
$ kubectl drain node-222  --ignore-daemonsets --delete-local-data   --force 
  1. 通过kubelet日志发现,PLEG is not healthy
    PLEG指的是pod lifecycle event generator。是kubelet用来检查容器runtime的健康检查机制。

PLEG定期检查节点上Pod运行情况,并且会把pod 的变化包装成Event发送给Kubelet的主同步机制syncLoop去处理。但是,在PLEG的Pod检查机制不能定期执行的时候,NodeStatus机制就会认为这个节点的状况是不对的,从而把这种状况同步到API Server,我们就会看到 not ready。

在这里插入图片描述

在这里插入图片描述

可以看到kubelet去同步容器的状态信息时出现了超时的状态,可以理解为调用链路出现了问题

# 调用链路
kubelet  -> dockerd-shim ->  dockerd --> containerd 

出现 pleg not healthy,一般有以下几种可能:

  • 容器运行时无响应或响应超时,如 docker进程响应超时(比较常见)
  • 该节点上容器数量过多,导致 relist 的过程无法在 3 分钟内完成
  • relist 出现了死锁,该 bug 已在 Kubernetes 1.14 中修复。
  • 网络
  1. 通过日志可以分析出,kubelet当前调用dockerd时出现了超时
    且当前之前被强制驱逐pod,runtime仍然在监测。说明已经失联

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0uKhzKZk-1659945523505)(media/16554332538620.jpg)]

  1. 既然kubelet调不通,采取手动删除docker容器的方式
    手动删除docker容器的时候也出现了卡死,基本可以定位为dockerd问题

在这里插入图片描述

  1. 咨询社区大佬得到反馈
    这种一般是节点僵尸进程,pod因为device busy等,docker无法正确结束容器引起的
    检查节点的io情况,io正常
    检查进程,发现有一个Prometheus的僵尸进程

在这里插入图片描述

该进程的父进程为containerd-shim,尝试kill 僵尸进程。

$ kill -9 112455

强制杀死失败,并且被systemd所接管,被systemd所接管的进程是无法回收的。

问题定位

notready原因: 异常容器虽然已经僵死,kubelet得不到该容器反馈,在PLEG的Pod检查机制不能定期执行的时候,NodeStatus机制就会认为这个节点的状况是不对的会标记为notready

僵尸进程原因: 登录排查时发现Prometheus的pod是三个容器,其中一个容器一直在crash,可能在pleg期间的延迟,导致新旧容器同时存在的情况,而异常容器并没有终止成功导致出现僵尸进程

问题解决

涉及到systemd所接管的僵尸进程,只能以重启服务器的方式进行解决

参考文档:https://mp.weixin.qq.com/s/G8g0asFhGIFh1WbTrw2Cbw

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PLEG(捧腹大笑)确实不是一种健康的行为,但作为一种娱乐活动,我们可以通过一些方法来确保它对我们的身体和心理健康的影响最小化。 首先,我们可以适度参与PLEG活动。过度的大笑可能导致呼吸困难、头痛和肌肉疼痛等身体不适。因此,我们应该控制自己的笑声,尤其是在感到疲劳或身体不适时。我们可以使用一些轻松的笑声技巧,如微笑或小范围的笑声,来减少对身体的压力。 其次,我们可以在PLEG活动中保持适当的坐姿。长时间的盘腿坐姿可能导致腰部和腿部的不适,所以我们应该适时地调整姿势,放松身体。我们可以选择合适的座位,使用靠垫或坐垫来提供支撑和舒适度。 另外,我们可以在PLEG活动中注意养成良好的呼吸习惯。深呼吸可以帮助我们放松身心,并增加氧气供应。当我们笑得太过激烈时,我们可以尝试一些深呼吸的练习来保持身体和心理的平衡。 最后,我们应该选择健康的PLEG活动。这意味着我们在选择娱乐节目或社交活动时要注意是否给予我们积极和愉快的体验。我们可以选择与好友一起欣赏正面积极的喜剧节目或是参加健康有趣的户外活动,以确保我们的笑声带来积极的影响。 综上所述,虽然PLEG不是一种健康的行为,但我们可以通过适度参与、保持适当的姿势、养成良好的呼吸习惯以及选择健康的PLEG活动来减少对身心健康的不良影响。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值