我使用库贝-aws在AWS上创建kubernetes集群,我有库贝-aws版本v0.12.3,我在工作节点上经常遇到问题,因为“系统中打开的文件太多”,当我尝试ssh进入工作节点时,节点变得无响应并重新启动。
因此,在节点上运行的pod会在不同的节点上频繁重新调度,并且应用程序会停机一段时间。
如何解决此问题。
kubectl版本客户端版本:version.Info{大调:"1",小调:"11",GitVersion:"v1.11.3",GitCommit:"a4529464e4629c21224b3d52edfe0ea91b072862",GitTreeState:"清洁",BuildDate:"2018-09-09T18:02:47Z",GoVersion:"go1.10.3",编译器:"gc",平台:"darwin/amd64"}服务器版本:version.Info{大调:"1",小调:"11",GitVersion:"v1.11.3",GitCommit:"a4529464e4629c21224b3d52edfe0ea91b072862",GitTreeState:"清洁",BuildDate:"2018-09-09T17:53:03Z",GoVersion:"go1.10.3",
Worker Node: node|k8--core@ip-10-0-214-11~$ulimited-a
核心文件大小(块,-c)无限制
数据seg大小(kbytes,-d)无限制
调度优先级(-e)0
文件大小(块,-f)无限制
待处理信号(-i)251640
最大锁定内存(kbytes,-l)16384
最大内存大小(kbytes,-m)无限制
打开文件(-n)1024
管道大小(512字节,-p)8
POSIX消息队列(字节,-q)819200
实时优先级(-r)0
堆栈大小(kbytes,-s)8192
CPU时间(秒,-t)无限制
最大用户进程(-u)251640
虚拟内存(kbytes,-v)无限制
文件锁(-x)无限制
如您所见,打开文件的最大数量设置为非常小的值(1024
)。也许这是继承自用于工作节点实例的AWS模板。
您应该增加此值,但这应该在清楚地了解它应该设置在什么级别的情况下进行:
此外,您应该小心,以免超过内核限制。
对于一个简单的例子,只需将下面的两个字符串添加到 /etc/security/limits.conf文件的末尾:
mike soft nofile 4096
mike hard nofile 65536
然后重新登录或重新启动您为哪个帐户进行更改的服务。
您可以在Internet上找到进一步的解释;这里有许多解释之一:安全和强化指南
为了在启动期间将这些设置应用于您的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
然后将其添加到启动实例向导的“用户数据”字段中,如下所述:在启动时在您的Linux实例上运行命令