创建 Pod 失败,运行时报错 no space left on device?

遇到创建Pod失败并报错"no space left on device"时,请按照以下步骤排查和解决问题:

1. 定位问题来源

查看Pod事件

复制代码
kubectl describe pod <pod-name> -n <namespace>

在输出中查找 Events 部分,确认错误是否与节点磁盘、存储卷(PVC)或容器镜像层相关。

2. 检查节点磁盘和Inode

登录问题节点

复制代码
ssh <node-ip>

查看磁盘使用情况

复制代码
df -h  # 检查磁盘空间
df -i  # 检查Inode使用

重点关注以下目录:

  • /var/lib/docker(Docker存储目录)

  • /var/lib/kubelet(Kubernetes数据目录)

  • /var/log(日志目录)

3. 清理节点磁盘空间

场景1:Docker/容器占满空间

清理未使用的Docker资源

复制代码
docker system prune -af  # 清理镜像、容器、卷等(谨慎操作)

手动删除大文件或日志

复制代码
du -sh /var/lib/docker/* | sort -rh  # 查找大文件
rm -rf /var/lib/docker/overlay2/<hash>  # 删除无效容器层(需确认)
场景2:Kubernetes数据占满空间

清理终止状态的Pod

复制代码
kubectl delete pod --field-selector=status.phase=Failed --all-namespaces

清理镜像缓存

复制代码
kubelet --image-gc-high-threshold=90 --image-gc-low-threshold=85
场景3:日志文件占满空间

清理旧日志

复制代码
journalctl --vacuum-time=7d  # 清理系统日志
rm -rf /var/log/pods/*       # 清理Kubernetes Pod日志(谨慎操作)

4. 检查持久化存储(PVC/PV)

确认PVC容量是否足够

复制代码
kubectl get pvc -n <namespace>

扩展PVC容量(若支持动态扩容):

复制代码
# 编辑PVC的spec.resources.requests.storage字段
kubectl edit pvc <pvc-name> -n <namespace>

5. 检查Inode耗尽

df -i显示Inode用尽

复制代码
# 查找小文件密集的目录(如日志、缓存)
find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n

清理无用文件或迁移数据。

6. 调整临时存储限制

在Pod配置中设置临时存储限制:

复制代码
resources:
  limits:
    ephemeral-storage: "2Gi"
  requests:
    ephemeral-storage: "1Gi"

7. 预防措施

  • 监控磁盘和Inode:部署监控工具(如Prometheus+Node Exporter),设置磁盘使用告警。

  • 定期维护:设置CronJob自动清理旧日志和镜像。

  • 合理分配存储:确保PVC容量和节点存储预留足够空间。

通过以上步骤,通常可解决"no space left on device"问题。如仍无法解决,请检查节点硬件或考虑扩容磁盘。

相关推荐
杰克逊的日记14 小时前
k8s某pod节点资源使用率过高,如何调整
linux·docker·kubernetes
古城小栈14 小时前
Go 语言容器感知,自动适配 K8s 资源限制
golang·kubernetes
VermiliEiz1 天前
使用二进制文件方式部署kubernetes(1)
kubernetes·云计算
云计算小黄同学1 天前
k8s中的服务通过secret访问数据库的实际案例
数据库·阿里云·kubernetes
炸裂狸花猫2 天前
开源日志收集体系ELK
elk·elasticsearch·云原生·kubernetes·metricbeat
网络小白不怕黑2 天前
Containerd指南:从Docker到K8s的容器运行时
docker·容器·kubernetes
Hui Baby2 天前
K8S蓝绿发布
java·容器·kubernetes
一周困⁸天.2 天前
K8S-Helm
容器·kubernetes
哦你看看2 天前
k8s-持久化存储
云原生·容器·kubernetes