问题背景
在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 |