Kubernetes特定节点只读文件系统致Pod异常(ContainerCreating/Terminating)求助
问题分析与解决方法
根据报错信息和节点排查结果,特定节点(如node-2)的/var/lib/kubelet所在文件系统被挂载为只读模式,导致kubelet无法创建Pod相关目录,进而出现ContainerCreating/Terminating状态的Pod。
1. 验证节点文件系统状态
登录问题节点,执行以下命令确认文件系统状态:
- 查看
/var/lib/kubelet挂载点的读写属性:
mount | grep $(df -P /var/lib/kubelet | tail -n1 | awk '{print $1}')
- 直接测试目录可写性:
touch /var/lib/kubelet/test-file && rm /var/lib/kubelet/test-file
若操作失败并提示"Read-only file system",则确认挂载点为只读状态。
2. 临时恢复读写权限并重启kubelet
尝试重新挂载文件系统为读写模式,然后重启kubelet:
# 重新挂载为读写 mount -o remount,rw $(df -P /var/lib/kubelet | tail -n1 | awk '{print $1}') # 重启kubelet服务 systemctl restart kubelet
完成后观察Pod是否能正常启动。
3. 排查只读触发的根本原因
检查系统日志
查找文件系统转为只读的触发原因:
# 查看内核日志中的只读相关信息 dmesg | grep -i "read-only" # 检查文件系统检查服务日志 journalctl -u systemd-fsck --since "yesterday"
常见触发原因包括:磁盘I/O错误、文件系统损坏、系统异常断电、磁盘空间耗尽。
检查磁盘健康与空间
- 检查磁盘硬件健康状态:
smartctl -a /dev/<disk-device> # 替换为实际磁盘设备名,如/dev/sda
- 检查
/var/lib/kubelet所在分区的空间使用情况:
df -h /var/lib/kubelet
4. 修复损坏的文件系统
若确认是文件系统损坏,需执行以下操作:
- 先卸载挂载点(需确保kubelet已停止):
systemctl stop kubelet umount /var/lib/kubelet
- 执行文件系统检查与修复:
fsck -y /dev/<disk-device>
- 重新挂载并重启kubelet:
mount /var/lib/kubelet systemctl restart kubelet
5. 节点后续处理
- 若磁盘存在硬件故障,建议替换磁盘并重新配置节点。
- 临时隔离问题节点,避免Pod被调度到该节点:
kubectl cordon node-2
- 节点修复完成后解除隔离:
kubectl uncordon node-2
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

