k8s挂载目录_肝!发现了K8S存储的“巨坑”

文章通过一系列实验揭示了在K8S中向容器内部非Volume、PV Volume及HostPath Volume写入数据时,数据存储位置的不同,强调了向容器写数据可能导致的数据丢失风险。实验表明,PV Volume会导致数据在宿主机和Pod存储路径各存一份,而HostPath Volume只在宿主机挂载目录存储。作者提醒在生产环境中应注意磁盘管理,避免数据丢失和磁盘压力导致的集群问题。
摘要由CSDN通过智能技术生成
这次,不直接写结论了,我把发现这个问题的经历(流水账)和大家讲讲!

微信群问题偶遇

在一个忙(mo)碌(yu)的午后,在K8S的微信群里看到这么一个问题。

d2b8494d9ae7b2b25de38f3ad3ca4cbc.png
  • 总结一下,就是为什么开了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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值