news 2026/5/26 10:24:13

kubernetes之容器数据写满磁盘解决方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
kubernetes之容器数据写满磁盘解决方法

磁盘写满引发的后果

容器数据磁盘写满造成的后果:

  • Pod 不能删除 (一直 Terminating)
  • Pod 不能被创建 (一直 ContainerCreating)

磁盘写满分两种情况:

  • 磁盘空间全部使用完

    # 系统盘被占满$df-Th文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/vda1 ext4 50G 50G 0G100% / /dev/vdb1 ext4 100G 10G 90G10% /data
  • 磁盘 Inode 全部使用完

    # 数据盘 Inode 被占满$df-i文件系统 Inode 已用(I)可用(I)已用(I)% 挂载点 /dev/vda1327680032768000100% /

判断磁盘写满方法

下面命令能快速的排查磁盘占满原因:

  • docker info | grep 'Docker Root Dir'# 检查 Docker 存储目录
  • docker system df# 查看容器磁盘使用情况
  • df -hT# 检查宿主机磁盘空间使用情况
  • df -i# 检查宿主机Inode使用情况

解决方法

PS:保证业务能正常使用为第一原则解决问题

  • 标记 Node 为不可调度

    $ kubectl drain${node-name}
  • 查找那个容器输出日志占用最大

    $fornamein$(dockerps-a|awk'{print $1}'|grep-vCONTAINER);dodockerinspect$name|grepLogPath|awk'{print $NF}'|tr-d'",'|xargsdu-sh;done5G /var/lib/docker/containers/d0e330944a074268a1f0998fd66ee73f584642352a2fe77304c1fa49b819893a/d0e330944a074268a1f0998fd66ee73f584642352a2fe77304c1fa49b819893a-json.log
  • 清空容器日志文件

    注意:如果需要重启 docker服务,首先腾出一点磁盘空间,不然重启 docker 会失败。不能直接使用rm删除日志文件,这样磁盘空间是不会释放的。不小心这样操作,那只能通过systemctl restart docker重启 Docker 服务释放磁盘空间,如果磁盘还是没有释放,可以通过lsof | grep -i delete查找已删除的文件进程,找到后直接kill掉。

    # 通过 echo 命令 清空日志文件$echo>/var/lib/docker/containers/d0e330944a074268a1f0998fd66ee73f584642352a2fe77304c1fa49b819893a/d0e330944a074268a1f0998fd66ee73f584642352a2fe77304c1fa49b819893a-json.log
  • 清理节点不用的images,释放磁盘空间

    # 查看 docker 镜像$dockerimages# 删除不用的镜像$dockerrmi${images_id}

上面步骤操作完后(上面清理日志方法,可能对于收集日志程序会丢失一些日志,但一般情况能接受),可以选择驱赶节点上所有pod(kubectl drain ${node-name})再优化Docker配置。也可以不驱赶节点上pod,在现基础上优化容器日志方法,优化配置后重启 Docker,这会导致节点上pod中断一会,如果前端反向代理具备重试机制一般不会影响业务正常访问。

优化完 Docker配置后,把节点加入到k8s集群中,正常服务。

# 取消不可调度的标记$ kubectl uncordon${node-name}

定位问题根本原因及解决思路

  • 日志输出量大,导致磁盘写满

    • 减少日志输出,调整应用日志输出级别
    • 增大磁盘空间
    • 日志输出到统一日志收集中心
  • 容器镜像占满磁盘

    • 配置k8s垃圾回收策略
    • 节点运行 images 定时清理脚本
  • 可写层量大导致磁盘写满: 优化程序逻辑,不写文件到容器内或控制写入文件的大小与数量

具体优化方法

  • 配置 Docker日志轮转,数据目录不要存放在系统盘

    $vim/etc/docker/daemon.json{"registry-mirrors":["https://4xr1qpsp.mirror.aliyuncs.com"],"graph":"/data/docker","log-opts":{"max-size":"500m","max-file":"3"}}

    配置解释:

    • registry-mirrors 镜像加速配置
    • graph 定义数据存储目录
    • max-size=500m 意味着一个容器日志大小上限是500M
    • max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json

    配置完,重启 docker才能生效,日志轮转只对以后新创建的容器有效。

  • 清理 docker images

    定时清理脚本

    $vimdocker_delete_image.sh#!/usr/bin/env bashforimages_idin`dockerimages|grep'harbor.example.com'|awk'{print $3}'`dodockerrmi$images_iddone# 清理 <none> imagesforimages_id_1in`dockerimages|awk'$2 ~ "<none>"{print $3}'`dodockerrmi$images_id_1done

    kubernetes 垃圾回收配置,这里不在细讲,具体参考官方配置文档 https://kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/

🔥运维干货分享

  • 软考高级系统架构设计师备考学习资料
  • 软考中级数据库系统工程师学习资料
  • 软考高级网络规划设计师备考学习资料
  • 软考高级系统规划与管理师学习资料
  • 软考中级系统集成项目管理师学习资料
  • Kubernetes CKA认证学习资料分享
  • AI大模型学习资料合集
  • PuTTY中文版安装包
  • MobaXterm中文版安装包
  • pinginfoview网络诊断工具中文版
  • Xshell、Xsftp、Xmanager中文版安装包
  • 毕业设计高质量毕业答辩 PPT 模板分享
  • IT行业工程师面试简历模板分享
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 10:48:36

26、Linux系统软件管理与安全防护指南

Linux系统软件管理与安全防护指南 一、软件包的安装与移除 在Linux系统中,安装或移除软件包可以按照以下步骤进行: 1. 打开软件包管理器 :若尚未打开,可点击主菜单按钮,接着选择“系统设置”➪“添加/移除软件包”。在默认的GNOME和KDE设置中,左下角的主菜单按钮在G…

作者头像 李华
网站建设 2026/5/25 13:42:56

Windows虚拟显示器终极指南:一键扩展屏幕的完整解决方案

Windows虚拟显示器终极指南&#xff1a;一键扩展屏幕的完整解决方案 【免费下载链接】Virtual-Display-Driver Add virtual monitors to your windows 10/11 device! Works with VR, OBS, Sunshine, and/or any desktop sharing software. 项目地址: https://gitcode.com/gh_…

作者头像 李华
网站建设 2026/5/26 0:26:54

Seed-VR2革命性突破:让普通电脑也能实现专业级视频画质增强

还记得那些因为硬件限制而被迫放弃的视频创作梦想吗&#xff1f;当你精心拍摄的素材在后期处理中遇到显存不足的警告&#xff0c;那种挫败感足以让任何创作者心灰意冷。传统的视频增强工具虽然性能强大但门槛较高&#xff0c;直到Seed-VR2的出现&#xff0c;才真正打破了这种技…

作者头像 李华
网站建设 2026/5/26 8:25:10

Iced并发渲染终极指南:如何实现永不卡顿的GUI界面

Iced并发渲染终极指南&#xff1a;如何实现永不卡顿的GUI界面 【免费下载链接】iced 项目地址: https://gitcode.com/gh_mirrors/ice/iced 在现代GUI应用开发中&#xff0c;界面卡顿是最影响用户体验的问题之一。Iced作为Rust生态中备受关注的跨平台GUI框架&#xff0c…

作者头像 李华
网站建设 2026/5/26 5:53:40

深度解析Pinia状态绑定失效的3大实战解决方案

深度解析Pinia状态绑定失效的3大实战解决方案 【免费下载链接】pinia &#x1f34d; Intuitive, type safe, light and flexible Store for Vue using the composition api with DevTools support 项目地址: https://gitcode.com/gh_mirrors/pi/pinia 你是否曾经遇到过这…

作者头像 李华