我是kubernetes的新手,我正在尝试在其上部署Elasticsearch。 目前,elasticsearch要求并由docker允许的文件描述符数量有问题。
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
为了解决这个问题,我尝试了3种不同的方法:
从docker文档中,dockerd应该使用系统值作为默认值。
/etc/security/limits.con
设置* - nofile 65536
f ulimit -Hn && ulimit -Sn
返回两次,两次返回65536 docker run --rm centos:7 /bin/bash -c 'ulimit -Hn && ulimit -Sn'
(应该返回两次65536,但不返回4096和1024)--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)添加
“ default-ulimit”:{ “无文件”:{ “名称”:“ nofile”, “硬”:“ 65536”, “软”:“ 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的唯一方法是将--ulimit nofile=65536:65536
传递给docker run命令。但是我不能在我的kubernetes Statesfullset配置中做到这一点。
那么您知道我如何解决这个问题? 我在这里没错吗?
预先感谢您的帮助
ps:我在ubuntu 18.0.1上,通过snap安装了docker 18.06.1-ce和microk8s
答案 0 :(得分:0)
有点晚了,但是如果有人也有这个问题,您可以将此行添加到/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已对此合并了一个修复程序,它可能很快就会发布。