web-dev-qa-db-ja.com

Kubernetesでコンテナーにulimitを設定するにはどうすればよいですか?

Kubernetesでコンテナーにulimitを設定するにはどうすればよいですか? (具体的にはulimit -u)

13
shaylevi2

現在ulimitを設定できないようですが、未解決の問題です https://github.com/kubernetes/kubernetes/issues/3595

5
James Brown

Kubernetesクラスター(AWS EKS)では、コンテナーが実行されているノードの/etc/docker/daemon.jsonを変更することで、Dockerコンテナーのulimitを変更できます。

/etc/docker/daemon.jsonに次の行を追加します

"default-ulimits":{"nofile":{"Name": "nofile"、 "Hard":128000、 "Soft":128000}}

最後に、次のコマンドを実行して、そのノードのdockerサービスを再起動します。

サービスDockerの再起動

1
Sachan

Dockerが大部分の単一プロセス向けに設計されていることを考慮してくださいulimit -uは、まったく意味がありません。ただし、一般的にリソース制限を探している場合、Kubernetesではリソースに割り当てを設定できます。ここにドキュメントがあります: https://github.com/kubernetes/kubernetes/blob/release-1.0/docs/admin/resource-quota.md 。この方法で、コア数/メモリ/ディスク使用量を指定します。

0

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>

0
nikoo28