创建 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"问题。如仍无法解决,请检查节点硬件或考虑扩容磁盘。

相关推荐
运维全栈笔记7 小时前
K8S部署Redis高可用全攻略:1主2从3哨兵架构实战
redis·docker·云原生·容器·架构·kubernetes·bootstrap
尘世壹俗人8 小时前
使用K8s部署模型
kubernetes
AI木马人9 小时前
9.人工智能实战:GPU 服务如何上 Kubernetes?从单机部署到 K8s + NVIDIA Device Plugin + HPA 的生产级改造
人工智能·容器·kubernetes
码点滴14 小时前
告别显存焦虑:PagedAttention 如何将大模型吞吐量提升 4 倍?
人工智能·架构·kubernetes·大模型·pagedattention
键盘鼓手苏苏15 小时前
Kubernetes 容器安全最佳实践
云原生·kubernetes·k8
键盘鼓手苏苏15 小时前
Kubernetes 安全最佳实践
云原生·kubernetes·k8
木雷坞1 天前
K8s GPU 推理服务 ImagePullBackOff 排查与预热
云原生·容器·kubernetes·gpu算力
吴爃2 天前
Spring Boot 项目在 K8S 中的打包、部署与运维发布实践
运维·spring boot·kubernetes
The Straggling Crow2 天前
Monitoring 2026-04-30
kubernetes
AOwhisky2 天前
Kubernetes调度与服务暴露:从“定时任务”到“服务发现”的完全指南
linux·运维·云原生·容器·kubernetes·服务发现