这次,不直接写结论了,我把发现这个问题的经历(流水账)和大家讲讲!
微信群问题偶遇
在一个忙(mo)碌(yu)的午后,在K8S的微信群里看到这么一个问题。
- 总结一下,就是为什么开了3个月的K8S,在节点的/var/lib/kubelet下面数据达到了75G,导致磁盘压力报警。
装X开始
首先,先上去看了一下自己的集群,没有遇到同样的问题,但是不能侥幸,因为自己的这套集群是自己开发环境下面的,并没有真正用于生产。
正要询问对方具体情况时,对方说发现问题了。问题就是有个二货,在container
中写了一个while true
循环,不断的向容器文件中写日志。
不得不说,这货的确很坑,为啥没有定时清理无用的log文件呢?
但是,我又感觉不对劲,即使是不断的向容器中写数据,那也应该是把Docker存储所在的路径占满,而不应该是POD的存储路径?
默认情况下,docker默认路径为/var/lib/docker
带着这个问题,我做了以下的实验:
实验1: 向容器下写入数据(非volume)
- 使用dd命令向容器的/root下面写入1G数据
(base) [root@node46 ~]# kubectl exec -it my-mysql-689bccf96b-tkshq bash
root@my-mysql-689bccf96b-tkshq:~# dd if=/dev/zero of=/root/root-1g count=1 bs=1G
- 切换到pod所在节点,查看Docker存储路径
[ro