将ulimit传递给dockerd

piwo6bdm  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(1)|浏览(470)

我是kubernetes的新手,我正在尝试在上面部署elasticsearch。目前,我对elasticsearch和allow by docker所需的文件描述符的数量有问题。

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

为了解决这个问题,我尝试了3种不同的方法:

方式1

在docker文档中,dockerd应该使用系统值作为默认值。
/etc/security/limits.con f带 * - nofile 65536 重新启动
执行 ulimit -Hn && ulimit -Sn 返回65536两次
执行 docker run --rm centos:7 /bin/bash -c 'ulimit -Hn && ulimit -Sn' (应返回65536两次,但不是,返回4096和1024)

方式2

添加 --default-ulimit nofile=65536:65536/var/snap/microk8s/current/args/dockerd 重新启动
执行 docker run --rm centos:7 /bin/bash -c 'ulimit -Hn && ulimit -Sn' (应返回65536两次,但不返回4096和1024)

方式3

添加
“default ulimit”:{“nofile”:{“name”:“nofile”,“hard”:“65536”,“soft”:“65536”}
/var/snap/microk8s/354/args/docker-daemon.json 执行 systemctl restart snap.microk8s.daemon-docker.service 执行 journalctl -u snap.microk8s.daemon-docker.service -f 会回来的 unable to configure the Docker daemon with file /var/snap/microk8s/354/args/docker-daemon.json: the following directives don't match any configuration option: nofile 我找到的唯一办法就是通过考试 --ulimit nofile=65536:65536 到docker run命令。但我不能在我的kubernetes statesfullset配置中这样做。
你知道我怎么解决这个问题吗?我没做错什么?
提前谢谢你的帮助
ps:我在ubuntu 18.0.1上安装了Docker18.06.1-ce,microk8s上安装了snap

83qze16e

83qze16e1#

有点晚,但如果有人也有这个问题,你可以添加这一行到 /var/snap/microk8s/current/args/containerd-env :

ulimit -n 65536

然后停止/启动microk8s以启用此修复。如果你执行命令 docker run --rm centos:7 /bin/bash -c 'ulimit -Hn && ulimit -Sn' 你可以看到65536两次
有关microk8s github问题的更多信息#253。microk8s已经对此进行了修复,可能很快就会发布。

相关问题