【问题标题】:Kubernetes node with high disk usage caused by docker overlaydocker overlay 导致 Kubernetes 节点磁盘使用率高
【发布时间】:2017-11-25 14:48:06
【问题描述】:

我遇到了部署在 AWS 上的 kubernetes 节点的问题。 (集群有 3 个节点和 1 个主节点,运行在 m3.large 实例上,每个实例大约 25GB)

之后(大约 3 天)磁盘上剩余 0KB 并且集群卡住了。

所有存储(或多或少)都由 /var/lib/docker/overlay/ 使用。 在这个文件夹中大约有 500 个或更多这些文件:

drwx------ 3 root root 4096 Jun 20 15:33 ed4f90bd7a64806f9917e995a02974ac69883a06933033ffd5049dd31c13427a
drwx------ 3 root root 4096 Jun 20 15:28 ee9344fea422c38d71fdd2793ed517c5693b0c8a890964e6932befa1ebe5aa63
drwx------ 3 root root 4096 Jun 20 16:17 efed310a549243e730e9796e558b2ae282e07ea3ce0840a50c0917a435893d42
drwx------ 3 root root 4096 Jun 20 14:39 eff7f04f17c0f96cff496734fdc1903758af1dfdcd46011f6c3362c73c6086c2
drwx------ 3 root root 4096 Jun 20 15:29 f5bfb696f5a6cad888f7042d01bfe146c0621517c124d58d76e77683efa1034e
drwx------ 3 root root 4096 Jun 20 15:26 f5fa9d5d2066c7fc1c8f80970669634886dcaccc9e73ada33c7c250845d2fe8c
drwx------ 3 root root 4096 Jun 20 14:38 f8fd64fb1e0ab26708d5458dddd2d5a70018034237dfed3db48ada5666fcf77f
drwx------ 3 root root 4096 Jun 20 14:46 faa143ebd7a4079eaa45ddbf17dcfc9163e3035983f2e334e32a60e89452fa94
drwx------ 3 root root 4096 Jun 20 14:48 fb93c0c64e0d4935bf67fc8f70df2b8a4cffe59e294ee8a876dfdf6b57486da5
drwx------ 3 root root 4096 Jun 20 14:46 fd0a420d5655fb7d022c397effdb95968ff7e722c58fcc7915f97e8df47cd080

集群在 Kubernetes 1.6.4 和 Docker 1.12.6 上运行。

好像是kubernetes的垃圾收集器的问题。运行 cAdvisor /validate 会给我以下消息

 None of the devices support 'cfq' I/O scheduler. No disk stats can be reported.
     Disk "xvda" Scheduler type "none".

运行这些语句 journalctl -u kubelet | grep -i garbage 还会给出错误消息: Jun 20 14:35:21 ip-172-21-4-239 kubelet[1551]: E0620 14:35:21.986898 1551 kubelet.go:1165] Image garbage collection failed: unable to find data for container /

任何想法如何让垃圾收集器再次工作?

【问题讨论】:

  • 它们是目录,每一个的大小是多少? du -sh /var/lib/docker/overlay/* 和目录本身? du -sh /var/lib/docker/overlay/
  • 文件大小并不总是相同的。 (有很多大约几KB的文件,但也有很多文件有710MB,197MB,17MB等......)(总共14GB)文件夹也是14GB。
  • 你在运行 kops 吗?如果是这样,哪个版本?一些旧版本的 kops 没有配置所有的 GC 设置,因此您可能只需要升级 kops。如果您让我知道您正在运行哪个版本的 kops,我可以确认后续版本中是否有修复。

标签: docker amazon-ec2 kubernetes cadvisor aws-ebs


【解决方案1】:

通过使用kops edit cluster [cluster_name] 编辑kops cluster.spec,我能够解决由于du -s /var/lib/docker/overlay/ 导致节点上反复出现高IO 的类似问题。 我在规范下添加了以下内容:

docker:
    logDriver: json-file
    logLevel: warn
    storage: overlay2

默认情况下,kops 似乎将 docker 配置为使用 overlay 作为默认存储驱动程序,而 docker 建议使用更新、更稳定和更快的 overlay2

【讨论】:

    猜你喜欢
    • 2017-01-16
    • 2019-06-06
    • 1970-01-01
    • 2019-12-18
    • 2018-11-01
    • 1970-01-01
    • 2018-11-09
    • 2016-07-28
    • 2021-12-14
    相关资源
    最近更新 更多