• 【kubelet 报错】Failed to activate service ‘org.freedesktop.systemd1‘: timed out


    问题

    CentOS 7.9 主机上部署了 k8s 1.21 集群。
    因为改配置,需要重启 kubelet 。大部分主机都能一秒重启完 kubelet ,不影响容器运行。
    但是在某个主机重启 kubelet 时,却一直阻塞无反应,然后报错超时。
    于是看 kubelet 日志,发现报错:
    请添加图片描述

    google 搜了下这个报错 org.freedesktop.systemd1 ,发现可能是 systemd 出问题了。
    于是看内核日志,发现几天前就有报错了:
    请添加图片描述

    报错表示 kubelet 收到了 QUIT 信号,因此不能正常工作。虽然容器还能继续运行,但重启 kubelet 就会失败。
    Started Session 日志可能是有用户登录,也可能是 cron 等系统进程引发的。
    但是看了监控,没人在这个主机上执行 kill 命令或什么奇怪命令。所以怀疑是 CentOS 或 k8s 的 bug 引发的。比如本来要发送 kill 信号给容器内 1 号进程,却发送给宿主机的 1 号进程。

    解决办法

    既然发现 systemd 不能正常工作,于是笔者重启主机,果然它自动恢复了。
    如果重启主机不管用,还有其它解决方案:

    • 手动修复 systemd 进程。google能找到少量这方面的资料,但是可靠性低,毕竟 systemd 进程托管了很多系统服务。如果修复 systemd 失败,可能导致问题更严重。即使修复 systemd 成功,也不确定所有系统服务是否正常。
    • 最坏的情况下,如果 systemd 不能恢复,那就重装操作系统,反正是 k8s 节点,能轻松迁移。

    问题复现

    选一台测试主机,尝试手动发送 SIGTERM 信号给 systemd 进程,没有反应。
    改为发送 QUIT 信号,果然能复现该问题。一堆 systemd 模块不能正常工作,连 reboot、shutdown 也不行。
    请添加图片描述

  • 相关阅读:
    数据库问题汇总
    混凝土搅拌站预拌厂数字孪生可视化管理系统,三维可视化数据监控平台
    竞赛第9期
    【从零单排Golang】第十五话:用sync.Once实现懒加载的用法和坑点
    MATLAB向量的模和MATLAB向量点积、MATLAB等差元素向量
    Python时间模块之time模块
    spring
    JAVA concurrency -- AQS 源码详解
    Live555库结构及其核心概念
    Maven进阶-依赖管理
  • 原文地址:https://blog.csdn.net/qq_35952638/article/details/126670927