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

如何限制未绑定PVC的Kubernetes容器存储及排查磁盘占用

无PVC容器的存储配额与监控问题解决

1. 为无PVC容器设置存储配额

你之前配置ResourceQuota后用量显示0,核心原因是容器本身没设置临时存储的limits——Quota的limits.ephemeral-storage只会统计那些明确设置了容器级临时存储限制的Pod,未配置约束的容器不会被纳入统计。

正确的配置步骤:

  • 先给容器添加临时存储的requests和limits约束,以redis:7为例:
apiVersion: v1
kind: Pod
metadata:
  name: redis-no-pvc
spec:
  containers:
  - name: redis
    image: redis:7
    resources:
      requests:
        ephemeral-storage: 512Mi
      limits:
        ephemeral-storage: 1Gi
  • 然后在Namespace下创建ResourceQuota,限制整个命名空间的总临时存储配额:
apiVersion: v1
kind: ResourceQuota
metadata:
  name: ns-ephemeral-quota
spec:
  hard:
    limits.ephemeral-storage: 10Gi

完成上述配置后,Quota就能正常统计已使用的临时存储量了。

2. 查看无PVC容器的已用存储量

有几种实用的查看方式:

  • 进入容器直接查看:
kubectl exec redis-no-pvc -- df -h /

这里的/是容器可写层的挂载点,输出中的已用空间就是容器实际写入的数据量。

  • 通过Pod描述查看:
kubectl describe pod redis-no-pvc

在Containers区块的Resources部分,会显示该容器已使用的临时存储量(前提是容器已设置requests/limits)。

  • 用metrics-server监控:
    如果集群部署了metrics-server,可直接用top命令查看容器级存储使用:
kubectl top pod redis-no-pvc --containers

VM磁盘压力与镜像层占用的验证及排查

验证镜像层占用空间

直接在运行Pod的Node(VM)上执行以下命令:

  • 查看Docker整体资源占用:
docker system df

输出里的Images行就是所有镜像层的总占用空间,Containers行是运行/停止容器的可写层占用。

  • 查看具体镜像的大小:
docker images

可以快速定位大体积镜像。

资源未释放的常见原因

  • 残留停止容器:用docker ps -a查看,大量Exited状态的容器会占用可写层空间,执行docker container prune一键清理。
  • 未清理的镜像缓存:Docker会保留拉取过的镜像层,即使镜像被删除,缓存可能仍存在,执行docker system prune -a清理所有未被容器使用的镜像(注意:此操作会删除所有闲置镜像,谨慎执行)。
  • Kubelet镜像GC未触发:Kubernetes默认会在Node磁盘使用率超过85%时自动清理闲置镜像,但如果你的Node磁盘使用率没到阈值,或者kubelet的imageGCHighThresholdPercent/imageGCLowThresholdPercent参数被修改过,GC就不会生效。可以检查kubelet配置文件(通常在/var/lib/kubelet/config.yaml)中的这两个参数,调整阈值触发GC。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:57:29