You need to enable JavaScript to run this app. Kubernetes节点有剩余空间但Pod报磁盘不足?ZooKeeper StatefulSet恢复求助
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes节点有剩余空间但Pod报磁盘不足?ZooKeeper StatefulSet恢复求助

ZooKeeper 单Pod CrashLoopBackOff 无状态集重启修复方案

故障场景说明

  • 故障Pod属于ZooKeeper StatefulSet管理负载,删除重建Pod后仍持续进入CrashLoopBackOff状态
  • 所在节点剩余物理存储空间达46G,对应Pod申请的持久化存储容量仅2000Mi,不存在节点层面磁盘容量不足问题
  • Pod启动日志输出如下报错:

===> 正在配置... [Errno 28] 设备上无剩余空间,执行命令[/usr/local/bin/dub template /etc/confluent/docker/myid.template /var/lib/zookeeper/data/myid]失败!

  • 修复目标:无需终止、重新部署整个StatefulSet,仅恢复单Pod正常运行

分步排查与修复操作

排查inode资源耗尽问题

物理磁盘容量充足但写文件报设备无剩余空间,最常见的触发原因是文件系统inode使用率100%:

  • 登录故障Pod所在节点,执行df -i检查ZooKeeper PVC挂载路径的inode使用率
  • 若该路径inode使用率打满,即使剩余GB级存储空间,也无法创建新文件
  • 操作:定位该路径下的大量碎小临时文件、过期日志残留,删除无价值文件释放inode资源,过程不需要中断整个StatefulSet服务

排查持久化卷容量超限问题

节点层面磁盘空间充足,不代表ZooKeeper绑定的持久化卷容量未超限:

  • 执行kubectl get pvc | grep zookeeper定位故障Pod对应的PVC资源,执行kubectl describe pvc <PVC名称>确认卷绑定的实际存储配额
  • 通过节点调试容器进入PVC实际挂载目录,执行du -sh <卷挂载路径>统计目录实际占用容量
  • 操作:若卷目录下存在超量的过期快照、旧事务日志,手动清理释放卷配额空间,即可让Pod启动时的模板渲染命令正常写入文件

排查卷只读挂载异常

部分分布式存储在IO连续故障、写入错误达到阈值时,会自动将卷切换为只读模式,此时写入文件会触发无剩余空间类报错:

  • 进入节点的PVC挂载目录,执行touch test_write_file验证写入权限
  • 操作:若验证为只读挂载,确认底层存储硬件、网络无故障后,重新将该挂载点设置为可写模式,Pod下次启动重试即可正常写入myid文件

手动生成myid文件跳过启动脚本步骤

若上述排查均无异常,可直接手动修复目标文件,规避启动脚本的渲染报错:

  • 根据ZooKeeper集群的节点ID规则,生成对应Pod要求的myid值,手动写入PVC挂载路径下/var/lib/zookeeper/data/myid文件
  • 启动脚本检测到目标文件已存在时,会自动跳过模板渲染步骤,完成Pod启动流程,全程不需要重启整个StatefulSet

内容的提问来源于stack exchange,提问作者darthsithius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.05 10:15:04