如何在Kubernetes中为容器设置ulimit? (特别是ulimit -u)
答案 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开始工作!!!!