web-dev-qa-db-ja.com

minikube / k8s / kubectl "ファイルの監視に失敗しました[...]:デバイスにスペースが残っていません"

私はk8sとminikubeにかなり慣れていないので、kubectl logs -f <POD NAME>の実行時に頻繁に発生するが、どこにでもあるエラーを理解するのに役立ちます。

これは、自分の名前空間のポッドやkube-systemにあるとき、予期せずに発生します。入力コントローラログをテールしようとするとき。ポッド自体に明らかなエラーはなく、kubectl logsコマンドの出力には、通常のログ行が含まれています。 failed to watch file "/var/log/pods/kube-system_nginx-ingress-controller-586cdc477c-95pgh_4b8310a4-5f9b-11e9-9666-0800270e7244/nginx-ingress-controller/1.log": no space left on device$

これの最終的な原因は何ですか?どのように解決しますか?

7
Ben

ノードがinotifyウォッチを使い果たしたようです。

各Kubernetes node でsysctl fs.inotify.max_user_watchesを使用して、使用可能な監視の数を確認または設定できます。

おそらく、それが途方もなく低い数に設定されていることに気付くでしょう。デフォルトでは、システムのメモリ量に基づいて自動調整されます。

[root@small ~]# sysctl fs.inotify.max_user_watches
fs.inotify.max_user_watches = 8192

[root@large ~]# sysctl fs.inotify.max_user_watches
fs.inotify.max_user_watches = 1048576

現在の量がいくらであっても、問題が発生しなくなるまで2倍にします。

(Minikubeノードにアクセスするには、minikube sshを使用します。)

7
Michael Hampton