rancher查看日志:failed to create fsnotify watcher: too many open files

这是一个非常经典的 Kubernetes/Linux 系统参数限制问题。

根本原因:

Rancher(以及 Kubernetes)查看日志时,底层机制类似于 tail -f,需要使用 Linux 的 inotify 机制来监听文件变化。当节点上运行的容器太多,或者日志文件太多时,宿主机的 inotify 监听句柄(watches) 被用光了,就会报 too many open filesfailed to create fsnotify watcher

这无法在 Rancher 网页界面上点击修复,必须通过 SSH 登录到运行该 Pod 的 Kubernetes 宿主机(Node)上执行命令。

解决方案

请登录到你的 K8s 节点(如果有多个节点,建议在所有节点上都执行),按顺序执行以下步骤:

1. 临时生效(立即解决问题)

在宿主机终端执行:

bash 复制代码
# 增加 max_user_watches (通常瓶颈在这里,默认值太小)
sysctl -w fs.inotify.max_user_watches=524288

# 增加 max_user_instances (建议一并调大)
sysctl -w fs.inotify.max_user_instances=8192

执行完后,不需要重启任何服务,回到 Rancher 界面刷新一下,应该就能看到日志了。


2. 永久生效(防止重启服务器后失效)

为了防止服务器重启后问题复发,需要写入配置文件:

bash 复制代码
# 1. 将配置追加到 sysctl.conf 文件
cat >> /etc/sysctl.conf <<EOF
fs.inotify.max_user_watches=524288
fs.inotify.max_user_instances=8192
EOF

# 2. 重新加载配置
sysctl -p

为什么会这样?

  • 默认值太低: 大多数 Linux 发行版(如 CentOS/Ubuntu)默认的 max_user_watches 只有 8192。
  • 消耗大: 每个容器的日志、ConfigMap 更新、Secret 更新都需要占用 watch 句柄。Rancher 的日志查看器也会占用。
  • 推荐值: 对于生产环境的 K8s 节点,524288 是一个业界公认的安全推荐值(Rancher 官方文档和 ElasticSearch 等应用都推荐此值)。

操作建议:

如果你不知道具体是哪个节点出了问题,或者这是一个多节点集群,建议在所有 Worker 节点上都执行一遍上面的"永久生效"命令。

相关推荐
youxiao_908 天前
kubernetes(三)-Rancher管理k8s集群
容器·kubernetes·rancher
不想画图12 天前
Kubernetes(五)——rancher部署和Pod详解
linux·kubernetes·rancher
2501_9399090513 天前
Rancher 管理 Kubernetes 集群与Pod的详解
容器·kubernetes·rancher
Zsr102313 天前
Rancher:一站式Kubernetes管理平台,让容器运维更简单
运维·kubernetes·rancher
叽里咕噜怪13 天前
Rancher
运维·rancher
原神启动113 天前
K8S(六)—— 企业级,Rancher安装配置与核心功能实操
容器·kubernetes·rancher
LucidX13 天前
Kubernetes Pod 详解与Rancher 部署
容器·kubernetes·rancher
星环处相逢13 天前
从 Pod 核心原理到 Rancher 实战:K8s 容器管理全解析
容器·kubernetes·rancher
伞啊伞13 天前
k8s(四) Rancher 管理集群
容器·kubernetes·rancher