Kubernetes / Docker использует слишком много места на диске - PullRequest
0 голосов
/ 07 августа 2020

У меня Kubernetes-кластер с 1 мастер-узлом и 3 рабочими узлами. Все узлы работают на CentOS 7 с Docker 19.06. Я также использую Longhorn для динамической c подготовки томов (если это важно).

Моя проблема в том, что каждые несколько дней один из рабочих узлов увеличивает использование жесткого диска до 85% (43 ГБ). Это не линейное увеличение, а происходит в течение нескольких часов, иногда довольно быстро. Я могу «решить» эту проблему на несколько дней, сначала перезапустив службу docker, а затем выполнив docker system prune -a. Если я сначала не перезапущу службу, обрезка почти ничего не удалит (всего несколько МБ).

Я также пытался выяснить, какой контейнер занимает все это пространство, но docker system df говорит об этом не использует пространство. Я использовал df и du для обхода подкаталогов / var / lib / docker, и, похоже, ни одна из папок (одна или все вместе) тоже не занимает много места. Продолжая это по всей системе, я тоже не могу найти никаких других больших каталогов. Есть 24 ГБ, которые я просто не могу учесть. Тем не менее, что заставляет меня думать, что это проблема docker, так это то, что перезагрузка и удаление просто решают ее каждый раз.

Погуглил, я обнаружил много похожих проблем, когда большинство людей просто решили увеличить дисковое пространство. Я не стремлюсь принимать это как предпочтительное решение, так как это похоже на то, как будто вы проиграете.

Есть ли у вас какие-нибудь умные идеи о том, что делать вместо увеличения дискового пространства?

1 Ответ

0 голосов
/ 12 августа 2020

Похоже, это ожидаемое поведение, из Docker документации вы можете прочитать:

Docker использует консервативный подход к очистке неиспользуемых объектов (часто упоминаемых как «сборку мусора»), такие как изображения, контейнеры, тома и сети: эти объекты обычно не удаляются, если вы явно не попросите Docker сделать это. Это может привести к использованию Docker дополнительного дискового пространства. Для каждого типа объекта Docker предоставляет команду prune. Кроме того, вы можете использовать docker system prune для одновременной очистки нескольких типов объектов. В этом топе c показано, как использовать эти prune команды.

Так что, похоже, вам нужно очистить его вручную, используя docker system/image/container prune. Другая проблема может заключаться в том, что эти контейнеры создают слишком много журналов, и вам может потребоваться очистить его .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...