我对 k8s 和 minikube 还很陌生,需要帮助来理解运行时经常出现但并非普遍存在的错误kubectl logs -f <POD NAME>
我有时会在自己的命名空间中的 pod 上意外地遇到这种情况,例如kube-system
在尝试跟踪入口控制器日志时。pod 本身没有明显的错误,命令的输出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$
这个问题的根本原因是什么?我该如何解决?
答案1
听起来好像节点已经用完了 inotify 监视。
您可以使用 sysctl 检查或设置可用监视的数量fs.inotify.max_user_watches
您可以使用每个 Kubernetes 上的节点。
您可能会发现它被设置为某个低得可笑的数字;默认情况下,它会根据系统的内存量自动调整。
[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
无论当前的数量是多少,将其加倍,直到问题不再发生。
(用于minikube ssh
访问 Minikube 节点。)