kubernetes Pod failed to create fsnotify watcher: too many open files

2024-09-06 18:44

本文主要是介绍kubernetes Pod failed to create fsnotify watcher: too many open files,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

fs.nr_open: 控制单个进程可以打开的文件描述符的最大数量。单个进程的文件描述符限制可以通过 ulimit 命令来设置。

  • /proc/sys/fs/nr_open 是一个系统级别的全局参数,表示系统中单个进程能够打开的文件描述符总数的限制。
  • /proc/sys/fs/file-max 系统级别,当前系统可打开的最大数量
  • /etc/security/limits.conf 用户级别,指定用户可以打开的最大数量

问题描述:

kubernetes 集群使用promtail收集日志,发现一段时间有些机器日志收集不到查看promtail日志出现以下报错:error="filetarget.fsnotify.NewWatcher: too many open files"

 1、单个进程打开文件书过多,修改文件描述符

vim /etc/security/limits.conf
* soft nofile 100001
* hard nofile 100002
root soft nofile 100001
root hard nofile 100002
  • soft nofile 65535
  • hard nofile 65535                这两个值都需要小于/proc/sys/fs/nr_open设置的值

2、操作系统打开文件句柄数过多

整个操作系统可以打开的文件句柄数是有限的,受内核参数“fs.file-max”影响。

可以通过执行“echo 100000000 > /proc/sys/fs/file-max”命令来动态修改该值,也可以通过修改"/etc/sysctl.conf"文件来永久修改该值

3.修改inotify

  • fs.inotify.max_user_instances

含义: 限制单个用户能够创建的 inotify 实例的数量。 默认值: 取决于内核版本,通常是 128。 为什么会影响问题?

如果此值太低,用户将无法创建足够的 inotify 实例来监视文件和目录,可能导致 too many open files错误。通过将其增加到 819200,你提高了系统同时处理的 inotify 实例的数量,从而有助于避免相关的错误。

  • fs.inotify.max_queued_events

含义: 限制 inotify 队列中待处理事件的数量。 默认值: 通常是 16384。 为什么会影响问题:
如果监视的事件发生得太快,队列可能会变满,导致后续事件丢失。通过增加此值,你扩大了系统处理事件的缓冲区,有助于防止队列溢出。

  • fs.inotify.max_user_watches

含义: 限制单个用户能够为其监视的文件和目录设置的监视器(watches)的总数。 默认值: 通常是 8192。 为什么会影响问题:
如果监视的文件或目录数量太多,可能会达到默认的监视器数目上限,导致 too many open files 错误。通过将其增加到52428800,你提高了单个用户可以设置的监视器的数量,从而有助于避免相关的错误。 总体来说,通过调整这些 inotify参数,你扩大了系统处理文件系统事件的容量,从而减少了 too many open files错误的可能性。

需要注意的是,在调整这些参数时,要确保系统资源足够,以及对应的硬件和内核版本支持所需的数值。在生产环境中,调整这些参数之前最好进行适当的测试和评估。

[root@dell730-fm-100-2 ~]# sysctl fs.inotify.max_user_instances
fs.inotify.max_user_instances = 128
[root@dell730-fm-100-2 ~]# sysctl fs.inotify.max_user_instances=1024
fs.inotify.max_user_instances = 524288echo fs.inotify.max_user_instances=81920 >> /etc/sysctl.conf &&  sysctl -p
echo fs.inotify.max_queued_events=1638400 >> /etc/sysctl.conf &&  sysctl -p
echo fs.inotify.max_user_watches=52428800 >> /etc/sysctl.conf &&  sysctl -p

这篇关于kubernetes Pod failed to create fsnotify watcher: too many open files的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142821

相关文章

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

解决SpringBoot启动报错:Failed to load property source from location 'classpath:/application.yml'

《解决SpringBoot启动报错:Failedtoloadpropertysourcefromlocationclasspath:/application.yml问题》这篇文章主要介绍... 目录在启动SpringBoot项目时报如下错误原因可能是1.yml中语法错误2.yml文件格式是GBK总结在启动S

Ollama整合open-webui的步骤及访问

《Ollama整合open-webui的步骤及访问》:本文主要介绍如何通过源码方式安装OpenWebUI,并详细说明了安装步骤、环境要求以及第一次使用时的账号注册和模型选择过程,需要的朋友可以参考... 目录安装环境要求步骤访问选择PjrIUE模型开始对话总结 安装官方安装地址:https://docs.

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

什么是Kubernetes PodSecurityPolicy?

@TOC 💖The Begin💖点点关注,收藏不迷路💖 1、什么是PodSecurityPolicy? PodSecurityPolicy(PSP)是Kubernetes中的一个安全特性,用于在Pod创建前进行安全策略检查,限制Pod的资源使用、运行权限等,提升集群安全性。 2、为什么需要它? 默认情况下,Kubernetes允许用户自由创建Pod,可能带来安全风险。

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟