likes
comments
collection
share

k8s node节点异常下线问题排查处理(container runtime is down)

作者站长头像
站长
· 阅读数 48

背景

使用的阿里云的k8s(ack),node节点资源充足,无任何压力,但是会偶尔收到node节点下线的告警,以下是相关告警

k8s node节点异常下线问题排查处理(container runtime is down)

检查主机的kubelet 日志发现报如下错误:container runtime is down

k8s node节点异常下线问题排查处理(container runtime is down)

问题定位

  1. 初步怀疑是docker inspec导致,检查docker运行无异常,并打开docker debug日志,发现在故障起降docker 正常运行且在打印日志,像这种日志都是docker inspect接口的日志信息,表示当时容器的状态检查都是ok的
May 23 07:26:17 iZuf645tftc9680n2pp6s4Z dockerd: time="2023-05-23T07:26:17.707770704+08:00" level=debug msg="Calling GET /v1.40/containers/139f10487e85/json"

k8s node节点异常下线问题排查处理(container runtime is down) 2. 检查message日志,发现故障时间段,kubelet不打印日志,怀疑kubelet在那段时间夯住.

grep -1000 "iZuf645tftc9680n2pp6s4Z kubelet: I0523 07:26:18.744911 3708450 setters.go:577" /var/log/messages | less

k8s node节点异常下线问题排查处理(container runtime is down)

3.于是检查主机的kubelet进程资源使用情况,发现报警时间段,kubelet进程会出现毛刺

k8s node节点异常下线问题排查处理(container runtime is down)

  1. 通过kubelet出现毛刺,怀疑node节点有进程定时执行导致了节点性能抖动干扰了kubelet,如qaxsafe等软件,通过排查发现确实了安装此软件

k8s node节点异常下线问题排查处理(container runtime is down)

问题修复

修改方式有以下两种,都是可以解决此问题,推荐第二种

  1. 卸载node节点上qaxsafe软件(方式1)

k8s node节点异常下线问题排查处理(container runtime is down) 2. 对kubelet相关进程和文件夹进行加白处理,让qaxsafe不进行扫描(方式2)

/var/lib/kubelet 目录
/usr/bin/kubelet 进程
/etc/kubernetes  目录

/var/run/docker  目录
/var/lib/containerd 目录
/run/containerd 目录
/usr/bin/dockerd 进程

总结

此问题我们和阿里云工程师排查了有二周时间有余,包括分析k8s源码,怀疑docker运行时版本、网络不稳定、k8s版本等问题,但是最终发现是由以上问题导致。

k8s的还是比较复杂的,所以要对其原理有一定掌握并且有比较强技术团队做支撑,在决定上不上k8s,不要一味追寻新技术,适合自己最好。

参考

plpan.github.io/docker-hang…

# 一次单节点单个pod网络问题排查过程

以下是常见的一些可能会导致kubelet进程夯住的一些进程,供大家参考

ds_agent  # 查下 agent 关键字
qaxsafed  # 奇安信,查下 qax 看看有没有其他的
secdog    # 也查下 dog 和 sec
sangfor_watchdog # 这个不影响,但是有它基本是深信服的虚拟化环境,会和flannel的8472端口冲突
YDservice
Symantec
start360su_safed   # 推荐 ps aux | grep safe 先查下
gov_defence_service
gov_defence_guard      #  ps aux | grep defence 
wsssr_defence_daemon   # 奇安信服务器安全加固系统,和下面是一起的。目前遇到过影响 socat 运行和容器进程访问另一个机器上的mysql端口
wsssr_defence_service
wsssr_defence_agent   # 影响pod网络
ics_agent

/sdata/sbin/{sdatad,srepd,rpcserver,sdatalogd,I2Availability,i2monitor,HaDetector,collector} #容器无法启动,各种资源不可用的错误, # ps aux | grep '/sdat[a]/'

/opt/nubosh/vmsec-host/intedrity/bin/icsintedrity # docker -p 的都无法访问
/opt/nubosh/vmsec-host/file/bin/icsfilesec

service360safe(360entclient)  # 导致相关操作操作缓慢,apiserver etcdctl初始化超时, 使用systemctl stop service360safe停止此服务

edr_sec_plan   # ps aux | grep edr , 深信服的 edr,这个会下发 iptables 规则,配置错了会影响 node 之间,以及 pod 和 pod 之间通信
titanagent     # 青藤云安全软件
# dynarose的安全软件,影响 docker 和 pod 的容器通信
ps -aux | grep -E 'blocklogc|collectclient|fwclient|identity|nodeclient|subconnc|subdomainc|sddog|sdc[c]' 
# 卡巴斯基,影响容器通信 systemctl disable --now kesl
ps aux | grep -E 'kaspersky|klnagent'

转载自:https://juejin.cn/post/7244707530457808933
评论
请登录