提问者:小点点

在工作节点上获取错误为“系统中的openfile太多”


我使用库贝-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)无限制


共1个答案

匿名用户

如您所见,打开文件的最大数量设置为非常小的值(1024)。也许这是继承自用于工作节点实例的AWS模板。

您应该增加此值,但这应该在清楚地了解它应该设置在什么级别的情况下进行:

  • 全局或特定安全主体;
  • 此限制必须应用于哪个确切的主体:用户/系统/守护进程帐户或组;
  • 登录服务(su、ssh、telnet等)

此外,您应该小心,以免超过内核限制。

对于一个简单的例子,只需将下面的两个字符串添加到 /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实例上运行命令