Je suis relativement nouveau sur k8s et minikube, et je pourrais utiliser l'aide pour comprendre l'erreur fréquente mais non omniprésente que j'obtiens lors de l'exécution de kubectl logs -f <POD NAME>
Je l'obtiens, parfois et de manière imprévisible, sur des pods dans mon propre espace de noms et dans kube-system
, Par exemple lorsque vous essayez de réduire les journaux du contrôleur d'entrée. Il n'y a aucune erreur apparente dans les pods eux-mêmes, et la sortie de la commande kubectl logs
Contient des lignes de journal d'apparence normale jusqu'à, par exemple 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$
Quelle est la source ultime de cela et comment puis-je le résoudre?
On dirait que le nœud n'a plus de montres inotify.
Vous pouvez vérifier ou définir le nombre de montres disponibles à l'aide de sysctl fs.inotify.max_user_watches
sur chaque Kubernetes nœud .
Vous constaterez probablement qu'il a été réglé sur un nombre ridiculement bas; par défaut, il est réglé automatiquement en fonction de la quantité de mémoire du système.
[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
Quel que soit le montant actuellement, doublez-le jusqu'à ce que le problème cesse de se produire.
(Utilisation minikube ssh
pour accéder à un nœud Minikube.)