k8s集群节点磁盘空间不足问题排查之一

编程入门 行业动态 更新时间:2024-10-26 23:32:13

k8s集群环境频繁报警出现节点磁盘空间不足,导致POD被驱逐,随机POD。

物理机/磁盘空间预留100G。

deployment和statufulset都有。持久化挂载的外部ceph。空间都足够大。

到物理机上查看磁盘空间。

df -lh |grep root

确实呈现磁盘占用急剧上升的情况。

du -sh * | sort -n

时却发现没有目录的空间占用增大。

持续约十分钟左右,部分POD被驱逐后空间占用瞬间下降,像是突然释放了大量空间。

检查docker日志

ls -lh $(find /var/lib/docker/containers/ -name *-json.log)|grep G

少数几个运行时间长的POD日志占用1G,但也没有急速增长过。

手工删除或重启POD后日志消失,算是一个因素。

后陆续检查各个服务的日志,没有发现与磁盘空间占用相关的极大量日志产生。

经过一段时间跟踪定位到是mysql的容器引发,凡是Mysql调度到的节点,必然会出现该问题,查binlog日志确实有不少,同上清理。

并修改Mysql配置文件,缩小binlog日期过期时间

expire_logs_days=1

持续一段时间后,再次发生。

排上以上诸项,并无异常。

在翻日志的过程中,定位到空间爆满的时间段,其中一个服务的日志突然看到有

 Error writing file '/tmp/MYEzymCy' 

字样。

突然联想到,mysql默认的tmp目录,在大表关联,临时表处理时会使用到tmpdir空间。

show variables like '%tmp%'

果然在/tmp下,容器中的tmp与宿主机中的/tmp关联。

查附近的查询SQL,几张大表的关联查询SQL提取开发服上模拟,数据量极大,上百万之多。

于是修改代码,修改配置(业务关联),修改mysql变量,将tmpdir指向到挂载的存储中。

重新测试该部分业务,逐步增量,磁盘空间再没有暴增。

终于安稳。不得不说监控和日志真是必备的东西。

 

 

更多推荐

k8s集群节点磁盘空间不足问题排查之一

本文发布于:2023-06-14 08:46:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1457946.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:节点   集群   磁盘空间   k8s

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!