Я новичок в 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$
Что является основным источником этого и как мне его решить?
Похоже, на узле закончились часы 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.)