如何在Kubernetes中为容器设置ulimit?

时间:2015-11-11 11:03:06

标签: kubernetes google-kubernetes-engine

如何在Kubernetes中为容器设置ulimit? (特别是ulimit -u)

5 个答案:

答案 0 :(得分:5)

您似乎无法设置ulimit,但这是一个未解决的问题:https://github.com/kubernetes/kubernetes/issues/3595

答案 1 :(得分:1)

考虑到Docker是针对单个进程而设计的,ulimit -u大部分内容都没有意义。但是,如果您正在寻找资源限制,Kubernetes允许您在资源上设置配额。以下是文档:https://github.com/kubernetes/kubernetes/blob/release-1.0/docs/admin/resource-quota.md。这样就可以指定内核数/内存/磁盘使用量。

答案 2 :(得分:0)

如果您可以SSH进入kubernetes集群,则可以修改docker.service文件。

  • 对于Amazon EKS集群,文件位于 /usr/lib/systemd/system/docker.service

  • 在文件中添加属性LimitMEMLOCK=Infinity,然后重新启动docker服务。

    sudo service docker restart

这将启动具有无限memlock值的docker容器。大概等于

docker run -ulimit memlock=-1:-1 <docker image>

答案 3 :(得分:0)

在Kubernetes集群(AWS EKS)中,可以通过修改容器运行所在节点中的/etc/docker/daemon.json来更改Docker容器的ulimit。

将以下行添加到/etc/docker/daemon.json

“ default-ulimits”:{         “无文件”: {             “ Name”:“ nofile”,             “硬”:128000,             “软”:128000         } }

最后通过执行以下命令在该节点上重新启动docker服务。

服务docker重新启动

答案 4 :(得分:0)

上面所有对我都不起作用的人。

我做了以下工作(在ubuntu:18.04和centos / 7上工作):

sudo nano /usr/lib/systemd/system/docker.service

已添加

--default-ulimit memlock=-1:-1

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

此行必须如下所示:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit memlock=-1:-1

然后您必须正确重新加载:首先运行命令

sudo systemctl daemon-reload

然后运行命令

sudo systemctl restart docker.service

要检查工作是否正常,请运行命令

docker run busybox:1.28 cat /proc/1/limits

您必须看到无限的最大锁定内存,如下所示:

...
Max locked memory         unlimited            unlimited            bytes
...

elasticsearch开始工作!!!!