2

我正在使用 kube-aws 在 AWS 上创建 kubernetes 集群,我有 kube-aws 版本 v0.12.3,当我尝试 ssh 到工作节点和节点变得无响应并重新启动。

因此,在节点上运行的 pod 会在不同的节点上频繁地重新调度,并且应用程序会停机一段时间。

我该如何解决这个问题。

✗ kubectl version 客户端版本:version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.3", GitCommit:"a4529464e4629c21224b3d52edfe0ea91b072862", GitTreeState:"clean", BuildDate:"2018-09-09T18 :02:47Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"darwin/amd64"} 服务器版本: version.Info{Major:"1", Minor:"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)无限制

数据段大小 (kbytes, -d) 无限制

调度优先级 (-e) 0

文件大小(块,-f)无限制

待处理信号 (-i) 251640

最大锁定内存(千字节,-l)16384

最大内存大小 (kbytes, -m) 无限制

打开文件 (-n) 1024

管道大小(512 字节,-p)8

POSIX 消息队列(字节,-q)819200

实时优先级 (-r) 0

堆栈大小(千字节,-s)8192

cpu时间(秒,-t)无限制

最大用户进程 (-u) 251640

虚拟内存 (kbytes, -v) 无限制

文件锁 (-x) 无限制

4

1 回答 1

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 实例上运行命令

于 2019-07-03T09:22:28.493 回答