Назад | Перейти на главную страницу

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$

Что является основным источником этого и как мне его решить?

Похоже, на узле закончились часы 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.)