minikube/k8s/kubectl“无法观看文件 [...]:设备上没有剩余空间”

Ben*_*Ben 9 kubernetes minikube

我对 k8s 和 minikube 还很陌生,可以帮助理解我在运行时遇到的频繁但不普遍的错误 kubectl logs -f <POD NAME>

我有时会在我自己的命名空间中的 pod 上以及在 . 中kube-system,例如,在尝试跟踪入口控制器日志时,无法预测地获得此信息。pods 本身没有明显的错误,并且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$

这个问题的最终来源是什么,我该如何解决?

Mic*_*ton 13

听起来节点已经用完了 inotify 手表。

您可以fs.inotify.max_user_watches在每个 Kubernetes节点上使用 sysctl 检查或设置可用监视的数量。

你可能会发现它被设置为一个低得离谱的数字;默认情况下,它会根据系统拥有的内存量自动调整。

[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
Run Code Online (Sandbox Code Playgroud)

无论当前数量是多少,都将其加倍,直到问题不再发生。

minikube ssh用于访问 Minikube 节点。)

  • 嘿谢谢!对于像我这样不熟悉 k8s `sysctl` 的人,设置它的命令是 `sudo sysctl fs.inotify.max_user_watches=1048576` (2认同)