Kubernetes Pod ephemeral-storage配额超限1280Mi问题咨询
问题原因与ephemeral-storage配额计算规则
1280Mi的计算逻辑
报错中的总请求值计算方式为:
- 基础值:容器配置中显式声明的
ephemeral-storagelimits值1Gi,换算为二进制单位即1024Mi - 追加值:256Mi的默认临时存储预留配额
两者相加刚好为1280Mi,超出命名空间设定的1Gi硬限,因此Pod在准入阶段被拒绝。
256Mi的追加值来自Kubernetes ResourceQuota插件的默认统计逻辑:当Pod中存在未显式配置sizeLimit的临时存储卷时,插件会自动追加固定额度的预留配额,避免Pod运行时无限制占用节点临时存储。你当前集群的默认预留值为256Mi/Pod,和挂载的临时卷数量无关。
存储卷对ephemeral-storage配额的占用规则
Kubernetes确实会为部分类型的挂载卷额外统计ephemeral-storage配额,具体规则如下:
- 计入ephemeral-storage配额的卷类型:
- 默认磁盘模式的
emptyDir卷 - 非subPath方式挂载的
configMap、secret、downwardAPI、projected类临时卷 - 容器运行时产生的日志、容器可写层写入的文件
- 默认磁盘模式的
- 配额统计规则:
- 如果上述临时卷显式配置了
sizeLimit字段,ResourceQuota会将所有卷的sizeLimit值累加,再加上所有容器声明的ephemeral-storage requests/limits值,作为Pod的总ephemeral-storage请求值做配额校验 - 如果临时卷未配置
sizeLimit,ResourceQuota会使用集群/命名空间预置的默认值统计配额;未配置预置默认值时,部分旧版本Kubernetes会追加固定预留额度(即你遇到的256Mi场景),新版本则按0统计,但Pod运行时临时存储用满会直接触发kubelet驱逐 - subPath方式挂载的configMap/secret不会单独统计卷配额,其文件拷贝占用的空间计入容器可写层,已经包含在容器声明的ephemeral-storage配额内
- 如果上述临时卷显式配置了
- 不计入ephemeral-storage配额的卷类型:
- 绑定持久卷声明(PVC)的存储,占用
requests.storage类别的持久存储配额 - 配置
medium: Memory的emptyDir内存盘,占用内存资源配额
- 绑定持久卷声明(PVC)的存储,占用
修复方案
二选一即可:
- 调大命名空间
general-resourcequota中limits.ephemeral-storage的硬配额至1.3Gi以上,覆盖默认预留额度 - 为所有
emptyDir卷显式配置合理的sizeLimit,同时调整容器的ephemeral-storage声明值,保证两者总和不超过1Gi配额,参考配置:
containers: resources: limits: ephemeral-storage: "768Mi" requests: ephemeral-storage: "768Mi" volumes: - name: app-logs emptyDir: sizeLimit: 80Mi - name: app-tmp emptyDir: sizeLimit: 80Mi - name: app-backups emptyDir: sizeLimit: 96Mi
上述配置总ephemeral-storage占用为768+80+80+96=1024Mi即1Gi,刚好满足配额要求,且显式配置sizeLimit后ResourceQuota不会再追加默认的256Mi预留值。
内容的提问来源于stack exchange,提问作者Haster
相关产品推荐
相关产品推荐

