在工作程序节点上获取错误为“系统中的打开文件太多”

时间:2019-07-02 12:34:08

标签: kubernetes kube-aws

我正在使用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)无限

1 个答案:

答案 0 :(得分:1)

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

您应该增加此值,但应在清楚了解应将其设置在哪个级别上的情况下进行此操作:

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

此外,您应注意不要超过内核限制。

在一个简单的情况下,只需将以下两个字符串添加到/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