记一次K8S节点磁盘占用空间警报的调查

267 阅读2分钟

这两天连续发生了几次磁盘占用空间过多的预警,今天调查了一天,发现有两个原因导致了这个问题。

docker overlay2 存储文件过多

其中一个节点上 /var/lib/docker/overlay2 目录占用了绝大多数的磁盘空间。 overlay2 是 docker 的存储系统。

参考 这篇文章 上的命令,清理了磁盘。

  1. du -hs /var/lib/docker/ 查看磁盘使用情况。

  2. docker system df 查看Docker的磁盘使用情况。

  3. docker system prune 清理磁盘,删除关闭的容器、无用的数据卷和网络,以及 dangling 镜像(即无tag的镜像)。

  4. docker system prune -a 命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉。

    注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉

p6spy 日志

项目采用 dynamic-datasource-spring-boot-starter 实现多数据库的访问,使用 p6spy 来监控 SQL 。

由于之前生产环境中错误的开启了 p6spy 监控,而且遗漏了 spy.properties 配置,导致默认情况下日志输出到了根目录的 spy.log 文件。最终这个文件过大,导致 k8s 资源不足,以至驱逐了该节点的所有服务。

修复起来也比加简单:

案1. 直接关闭 p6spy 监控

生产环境建议是关闭 p6spy 监控的。

datasource.datasource.dynamic.p6spy=false

案2. 指定 p6spyappender,将日志输出到日志系统

仍然需要监控时,可以通过在 spy.properties 文件中指定 appender 来将日志输出到日志系统。

appender=com.p6spy.engine.spy.appender.Slf4JLogger

版权声明:本文为博主「佳佳」的原创文章,遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:www.liujiajia.me/2020/11/13/…