处理Kubernetes的Node磁盘占用高的问题-2

1 - 实操记录

1.1 - 日志文件排查

首先我们运行一下命令,过滤出比较大的一些日志文件

find /var/ -name '*.log*' -size +99M -type f 2>/dev/null -exec ls -lh {} \;

image.png

根据目录的分析,我们能看到 Log 相关的日志主要集中在上图所示的目录中,那么这个目录是做什么的呢?

/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots 目录是 containerd 使用 overlayfs 作为存储驱动时存储容器镜像和容器层快照的地方。每个快照都有一个唯一的数字标识符目录。

如果确认这些日志文件是可以被清理掉的,那么接下来我们可以使用这个命令来处理掉这些文件

# 清理
find /var/ -name '*.log*' -size +99M -type f 2>/dev/null -exec truncate -s 0 {} \;

# 检查
find /var/ -name '*.log*' -size +99M -type f 2>/dev/null -exec ls -lh {} \;

问题:那么,这些能代表所有日志文件吗?显然不能,经验告诉我们,并不是所有日志文件都是以 .log 结尾的。

1.2 - 目录级别的排查

alias ds = 'du -sh ./* | sort -rh | head -20'
cd /var/lib/containerd/ && ds

image.png

就这样,我们可以逐层筛查,找到一些比较大的文件。

image.png
image.png

2 - 总结思考

  1. 一般情况下,Node 运行的 Pod 的数量是一个相对稳定的状态,磁盘突然不够用了,一般是有一些变动较大的文件引起的,如:
    1. 应用自身的日志文件
    2. 引入的第三方组件的日志文件
  2. 对于这些经常有问题的 Node ,需要结合监控,了解一下平时所使用的存储量,以方便我们来评估实现的使用量,以及是否应该扩容?
  3. 发现问题需要从根源进行解决,同时为了降低重复工作的次数,也需要结合一下告警回调等自动化的方法来解决这类问题。
  4. 使用 du 逐层查找大目录其实不是很高效,给自己埋个坑,找一下快速高效找到大文件夹的方法

有更好的方法或者错误欢迎指出讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值