0

0

K3s agent 心跳丢失导致节点 NotReady 但网络其实通的排查

舞夢輝影

舞夢輝影

发布时间:2026-01-19 18:06:08

|

980人浏览过

|

来源于php中文网

原创

心跳丢失但网络通畅,问题在于Kubelet与控制面通信链路中间环节,需重点排查证书有效性、API Server地址配置、容器运行时(PLEG)健康状态及系统资源压力四类隐性故障。

k3s agent 心跳丢失导致节点 notready 但网络其实通的排查

心跳丢失却网络通畅,说明问题不在基础连通性,而在 Kubelet 与控制面的通信链路中间环节。重点排查证书、配置、运行时状态和资源压力这四类隐性故障。

检查 Kubelet 客户端证书是否有效

K3s agent 注册后依赖定期刷新的客户端证书向 server 发送心跳。证书过期或签名不匹配会导致心跳被拒绝,但 curl 测试 6443 端口仍可能返回 200(healthz 不校验证书)。

  • 执行 openssl x509 -in /var/lib/rancher/k3s/agent/pki/kubelet-client-current.pem -noout -dates 查看有效期
  • 若证书已过期,需重启 k3s agent 服务触发自动轮换;若轮换失败,检查 server 节点时间是否同步、CA 证书是否被意外替换
  • 对比 agent 和 server 上的 /var/lib/rancher/k3s/server/tls/client-ca.crt 内容是否一致

确认 Kubelet 是否真正连接到正确的 API Server

K3s agent 启动时会读取 /var/lib/rancher/k3s/agent/etc/k3s-agent-env环境变量中的 server 地址。错误的地址(如残留旧 IP、DNS 解析异常、代理配置干扰)会导致 Kubelet 持续尝试连接不可达端点,日志中出现 connection refusedi/o timeout,但本地 nc -zv 测试可能因防火墙放行而“看似通”。

百度MCP广场
百度MCP广场

探索海量可用的MCP Servers

下载
  • 运行 ps aux | grep k3s | grep server= 确认实际连接的目标
  • 在 agent 节点执行 curl -k https://:6443/api/v1/nodes/,观察是否返回 401(认证层通)还是 403/404(路由或权限问题)
  • 检查 /etc/rancher/k3s/config.yamlserver: 配置是否为当前可用 master 地址,避免写死已下线节点

验证容器运行时与 PLEG 健康状态

心跳上报由 Kubelet 主动发起,但前提是其内部 Pod Lifecycle Event Generator(PLEG)能正常工作。若 containerd 响应缓慢、镜像拉取卡住或存在大量僵尸容器,PLEG 会进入 not healthy 状态,Kubelet 将暂停上报节点状态,导致 NotReady。

  • 执行 sudo ctr containers list | wc -l 查看容器数量是否异常偏高(>500 可能影响性能)
  • 运行 sudo systemctl status containerd 确认运行时进程存活且无 restart 频繁记录
  • 查看 Kubelet 日志中是否有 PLEG is not healthyfailed to update node status 关键报错
  • 临时执行 sudo ctr namespaces listsudo ctr c ls -n k8s.io 判断命名空间和容器元数据是否可读

排查系统级资源与内核限制

内存不足、inode 耗尽或内核参数限制(如 fs.inotify.max_user_watches 过低)不会阻断 TCP 连接,但会让 Kubelet 无法完成文件监听、证书加载或事件处理,表现为心跳静默。

  • 检查 inode 使用率:df -i /var/lib/rancher/k3s,若使用率 >95%,清理旧日志或镜像
  • 查看内存压力:free -mcat /proc/meminfo | grep -E "MemAvailable|OomKill"
  • 确认 inotify 限制:cat /proc/sys/fs/inotify/max_user_watches,建议不低于 524288
  • 检查 dmesg 输出:dmesg -T | tail -20 是否有 OOM killer 杀掉 kubelet 或 containerd 的记录

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

430

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

175

2023.10.30

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1991

2024.08.16

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

11

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

75

2026.01.18

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

109

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

152

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

79

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

44

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML5/CSS3/JavaScript/ES6入门课程
HTML5/CSS3/JavaScript/ES6入门课程

共102课时 | 6.7万人学习

前端基础到实战(HTML5+CSS3+ES6+NPM)
前端基础到实战(HTML5+CSS3+ES6+NPM)

共162课时 | 18.9万人学习

第二十二期_前端开发
第二十二期_前端开发

共119课时 | 12.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号