Kubernetesでコンテナーにulimitを設定するにはどうすればよいですか? (具体的にはulimit -u)
現在ulimitを設定できないようですが、未解決の問題です https://github.com/kubernetes/kubernetes/issues/3595
Kubernetesクラスター(AWS EKS)では、コンテナーが実行されているノードの/etc/docker/daemon.jsonを変更することで、Dockerコンテナーのulimitを変更できます。
/etc/docker/daemon.jsonに次の行を追加します
"default-ulimits":{"nofile":{"Name": "nofile"、 "Hard":128000、 "Soft":128000}}
最後に、次のコマンドを実行して、そのノードのdockerサービスを再起動します。
サービスDockerの再起動
Dockerが大部分の単一プロセス向けに設計されていることを考慮してくださいulimit -u
は、まったく意味がありません。ただし、一般的にリソース制限を探している場合、Kubernetesではリソースに割り当てを設定できます。ここにドキュメントがあります: https://github.com/kubernetes/kubernetes/blob/release-1.0/docs/admin/resource-quota.md 。この方法で、コア数/メモリ/ディスク使用量を指定します。
KubernetesクラスターにSSHで接続できる場合は、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>