我正在使用kube-aws在AWS上创建kubernetes集群,我具有kube-aws版本v0.12.3,当我尝试在工作节点上频繁出现“系统中打开文件过多”的问题ssh进入工作程序节点,节点将变得无响应并重新启动。
因此,在节点上运行的Pod经常在不同的节点上重新调度,并且应用程序会关闭一段时间。
如何解决此问题。
✗kubectl版本 客户端版本:version.Info {主要:“ 1”,次要:“ 11”,GitVersion:“ v1.11.3”,GitCommit:“ a4529464e4629c21224b3d52edfe0ea91b072862”,GitTreeState:“ clean”,BuildDate:“ 2018-09-09T18:02: 47Z“,GoVersion:” go1.10.3“,编译器:” gc“,平台:” darwin / amd64“} 服务器版本:version.Info {主要:“ 1”,次要:“ 11”,GitVersion:“ v1.11.3”,GitCommit:“ a4529464e4629c21224b3d52edfe0ea91b072862”,GitTreeState:“ clean”,BuildDate:“ 2018-09-09T17:53: 03Z“,GoVersion:” go1.10.3“,编译器:” gc“,平台:” linux / amd64“}
工人节点: node | k8s- - core @ ip-10-0-214-11〜$ ulimit -a
核心文件大小(块,-c)无限制
数据段大小(千字节,-d)无限
调度优先级(-e)0
文件大小(块,-f)无限
待处理信号(-i)251640
最大锁定内存(千字节,-l)16384
最大内存大小(千字节,-m)无限
打开文件(-n)1024
管道大小(512字节,-p)8
POSIX消息队列(字节,-q)819200
实时优先级(-r)0
堆栈大小(千字节,-s)8192
cpu时间(秒,-t)无限制
最大用户进程(-u)251640
虚拟内存(千字节,-v)无限
文件锁(-x)无限
答案 0 :(得分:1)
如您所见,打开文件的最大数量设置为非常小的值(1024
)。也许这是从用于工作程序节点实例的AWS模板继承的。
您应该增加此值,但应在清楚了解应将其设置在哪个级别上的情况下进行此操作:
此外,您应注意不要超过内核限制。
在一个简单的情况下,只需将以下两个字符串添加到/etc/security/limits.conf文件的末尾:
mike soft nofile 4096
mike hard nofile 65536
,然后重新登录或重新启动您要对其进行更改的帐户的服务。
您可以在Internet上找到进一步的解释; 此处提供许多选项之一:Security and Hardening Guide
为了在启动期间将这些设置应用于您的AWS实例,您可以编写一个简单的脚本代码,如下所示:
#!/bin/bash
cd /etc/security
cp limits.conf limits.conf.$(date "+%Y%m%d")
cat <<EndOfMyStrings >> limits.conf
mike soft nofile 4096
mike hard nofile 65536
EndOfMyStrings
,然后按如下所述将其添加到启动实例向导的“用户数据”字段中:Running Commands on Your Linux Instance at Launch