首页 > 解决方案 > Kubernetes/Docker 使用过多的磁盘空间

问题描述

我有一个带有 1 个主节点和 3 个工作节点的 Kubernetes 集群。所有节点都在带有 Docker 19.06 的 CentOS 7 上运行。我还在运行 Longhorn 来动态配置卷(如果这很重要的话)。

我的问题是每隔几天就有一个工作节点将 HDD 使用率增加到 85% (43GB)。这不是线性增加,而是在几个小时内发生,有时非常迅速。我可以通过首先重新启动 docker 服务然后执行docker system prune -a. 如果我不先重新启动服务,则修剪几乎不会删除(只有几 MB)。

我还试图找出哪个容器占用了所有空间,但docker system df说它不使用空间。我也使用dfdu沿着 /var/lib/docker 子目录爬行,而且似乎没有一个文件夹(单独或全部)占用太多空间。在整个系统中继续此操作,我也找不到任何其他大目录。有 24GB 我无法解释。尽管如此,让我认为这是一个 docker 问题的原因是重启和修剪每次都能解决它。

谷歌搜索我发现了很多类似的问题,大多数人只是决定增加磁盘空间。我并不热衷于接受这个作为首选解决方案,因为这感觉就像把罐子踢到了路上。

除了增加磁盘空间之外,您有什么聪明的想法吗?

标签: dockerkubernetesdiskspace

解决方案


这似乎是预期的行为,您可以从Docker 文档中阅读:

Docker 采用保守的方法来清理未使用的对象(通常称为“垃圾收集”),例如图像、容器、卷和网络:这些对象通常不会被删除,除非您明确要求 Docker 这样做。这可能会导致 Docker 使用额外的磁盘空间。对于每种类型的对象,Docker 都提供了一个prune命令。此外,您可以使用docker system prune一次清理多种类型的对象。本主题说明如何使用这些prune命令。

因此,您似乎必须使用docker system/image/container prune. 其他问题可能是这些容器创建了太多日志,您可能需要清理它


推荐阅读