You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django在Kubernetes Pod中存图片报设备无剩余空间求助

Kubernetes Pod中Django保存图片提示磁盘空间不足排查方案

问题场景

在Kubernetes Pod中运行Django应用时,执行代码img_obj.image.save(img_file, File(img_file_org))保存图片触发设备无剩余空间错误,报错信息如下:

File "/code/ocr_client/management/commands/pdf_to_image.py", line 126, in handle
    img_obj.image.save(img_file, File(img_file_org))
  File "/opt/conda/lib/python3.7/site-packages/django/db/models/fields/files.py", line 88, in save
    self.name = self.storage.save(name, content, max_length=self.field.max_length)
  File "/opt/conda/lib/python3.7/site-packages/django/core/files/storage.py", line 54, in save
    return self._save(name, content)
  File "/opt/conda/lib/python3.7/site-packages/django/core/files/storage.py", line 274, in _save
    fd = os.open(full_path, self.OS_OPEN_FLAGS, 0o666)
OSError: [Errno 28] No space left on device: '/code/pca_back_data/media/file1.png'

已执行kubectl exec <my-pod> -- df -ah确认磁盘仍有20%(100GB)剩余,kubectl exec <my-pod> -- df -hi显示inode使用率仅为5%,需排查Kubernetes层面是否存在存储限制配置。

排查方向

  • 命名空间存储配额(Resource Quota):集群管理员可能为命名空间设置了存储总量限制,执行kubectl describe resourcequota -n <你的命名空间>查看是否有requests.storage或limits.storage类的配额,确认是否已达上限。
  • 容器临时存储限制:Pod的容器可能配置了ephemeral-storage的请求和限制值,限制了临时存储的使用量。通过kubectl describe pod <my-pod>查看Resources模块下的Ephemeral Storage配置,或检查Pod YAML中的resources字段。
  • PVC存储配额限制:若/code/pca_back_data/media目录挂载了PersistentVolumeClaim(PVC),需检查PVC自身的容量限制。执行kubectl describe pvc <对应PVC名称>查看Capacity和实际使用量,确认是否已用完PVC配额。
  • 节点kubelet存储限制:节点的kubelet可能配置了存储驱逐阈值(如--eviction-hard中的storage.available),即使磁盘有剩余空间,一旦低于阈值会触发存储限制。通过kubectl describe node <Pod所在节点>查看节点事件,或kubectl get nodes <节点名> -o yaml查看kubelet配置。
  • 文件系统用户配额:挂载的文件系统可能针对运行Django的用户设置了磁盘配额,此时整体磁盘有空间但单个用户配额已耗尽。可在Pod内执行quota -u <运行应用的用户>或repquota -a检查用户级配额。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:55:03