问题背景
在K8S环境中,某个业务由于误操作重启了系统的dbus服务,导致所有的Pod启动失败,相关日志如下:
1 | unable to ensure pod container exists: failed to create container for [kubepods besteffort ...] : dbus: connection closed by user |
原因分析
根据错误信息,查到相关issue[1],原因如下:
kubelet服务在创建Pod时会调用/var/run/dbus/system_bus_socket,如果dbus服务由于某些异常发生重启,/var/run/dbus/system_bus_socket这个文件就会被重新创建。此时,kubelet继续向旧的socket发送数据,就会出现上述的报错信息。
解决方案
临时方案:重启kubelet服务
永久方案:升级K8S版本到v1.25+
后续问题
重启过dbus和kubelet服务后,出现非root用户ssh远程慢的现象。查看secure日志,发现如下错误:
1 | pam_systemd(crond:session): Failed to create session: Activation of org.freedesktop.login1 timed out |
查看资料[2],原因是ssh依赖systemd-logind服务,而该服务又依赖dbus服务,通过重启systemd-logind服务解决:
1 | [root@core log]# systemctl restart systemd-logind |