k8s运行运行pod报错超出文件描述符表限制

1.问题描述

运行pod超过文件描述符表

复制代码
unable to allocate file descriptor table - out of memory/opt/COMMAND.sh: line 9: 

2.查看设备的文件描述符限制

操作前一定要先查询这个值,2097152这个值即为我们可设置的最大值,超过这个值后将无法登录,即使只超过1,并且一定不能设置为unlimited

个人建议先给最大值的一半,如果是不够再适量往上扩(这个值的配置需要尤其慎重,一旦有差错便会无法登录,需要进入救援模式操作)

复制代码
cat /proc/sys/fs/file-nr    #已分配的  分配后释放的  最大的
10816   0       2097152
cat /proc/sys/fs/nr_open
2097152
cat /proc/sys/fs/file-max
2097152

3.编辑/etc/security/limits.conf

添加两行,并重启systemd-logind或者重启服务器

复制代码
root soft nofile 1048576
root hard nofile 1048576


systemctl restart systemd-logind

4.容器运行时是containerd,所以还需要改containerd的启动文件(docker同理)

是k8s集群的遇到这个问题情况下,master和所有node都需要修改containerd/docker的这部分配置

复制代码
vim /etc/systemd/system/containerd.service
#找到以下部分内容,修改值和上面几步的值一致
LimitNPROC=1048576
LimitCORE=1048576
LimitNOFILE=1048576

5.重启containerd,再次运行后已正常

相关推荐
冰帆<3 分钟前
[特殊字符] 深度起底:突破火山引擎 Ark-Helper 的 Linux 底层环境死锁,顺手魔改一份 Windows 一键安装脚本!
linux·windows·火山引擎
我星期八休息10 分钟前
Linux系统编程—mmap文件映射
java·linux·运维·服务器·数据库·mysql·spring
java_cj15 分钟前
从kubectl源码学pprof:生产环境性能分析的实战指南
运维·云原生·容器·kubernetes
2301_7779983423 分钟前
Linux:文件系统
linux
Tian_Hang25 分钟前
Linux基础知识(五)
linux·运维·服务器
凡人叶枫40 分钟前
Effective C++ 条款32:确定你的 public 继承塑模出 is-a(是一种)关系
java·linux·开发语言·c++·嵌入式开发
utf8mb4安全女神41 分钟前
expect工具,expect脚本,实现全自动免交互登录ssh,shell脚本和expect结合使用,在多台服务器上创建1个用户【linux】
linux·运维·服务器
暮云星影1 小时前
全志开发环境搭建及编译构建
linux·arm开发·驱动开发
vortex51 小时前
Alpine Linux 运行架构解析:从内核到容器的精简之道
linux·运维·架构
三块可乐两块冰1 小时前
rag学习5
linux·前端·python