首页/云/Kubernetes 速查/ResourceQuota 限制命名空间总量
调度与资源52 条

ResourceQuota 限制命名空间总量

对命名空间内所有 Pod 的 requests/limits 求和设上限,并可按对象数量设限;触顶后新 Pod/对象会被拒绝创建。

Kubernetes 速查云更新于 2026-10-13

机制定位

ResourceQuota 给命名空间设总量上限:按所有 Pod 的 requests/limits 求和限制 CPU 与内存,也可以限制对象数量(Pod 数、Service 数、LoadBalancer 数等)。适用平台是 Kubernetes。它的作用是防止某个命名空间把整集群资源吃光,代价是触顶后新对象会被拒绝创建——报错信息会明确写 exceeded quota,属于典型的「突然部署不上」现场。

基本信息

适用平台Kubernetes,命名空间级对象(v1/ResourceQuota)
统计对象命名空间内 Pod 的 requests 与 limits,以及各类对象数量
触顶行为创建或更新被准入层拒绝,报 exceeded quota
配套对象LimitRange 可提供默认 requests/limits,配合配额使用

典型使用场景

  • 多团队共享集群:为每个命名空间设上限,避免互相争抢
  • 成本治理:限制 LoadBalancer、PVC 总量这类会直接产生费用的资源
  • 环境隔离:测试环境给更小的配额,防止误把压测流量打满集群
  • 排查创建失败:确认是被配额拒绝而不是被调度器拒绝
  • 容量预留:通过配额把关键命名空间需要的资源先占住

配额示例

配额示例
apiVersion: v1
kind: ResourceQuota
metadata:
  name: prod-quota
  namespace: prod
spec:
  hard:
    requests.cpu: "20"
    requests.memory: 40Gi
    limits.cpu: "40"
    limits.memory: 80Gi
    pods: "100"
    services.loadbalancers: "5"

查看用量

查看用量
kubectl get resourcequota -n prod                        # 概览
kubectl describe resourcequota prod-quota -n prod         # 已用与硬上限对照
kubectl get resourcequota prod-quota -n prod -o jsonpath='{.status.used}'
kubectl get events -n prod --field-selector reason=FailedCreate --sort-by=.lastTimestamp | tail -5

常见报错与含义

报错关键词含义处理
exceeded quota: podsPod 数量已达上限清理无用 Pod 或调大配额
exceeded quota: requests.cpurequests 之和超上限下调申请量或扩容配额
must specify requests.cpu有配额要求但 Pod 未写 requests补 requests 或用 LimitRange 兜底
exceeded quota: services.loadbalancers负载均衡类 Service 数量超限回收闲置入口或调整配额
配额开启后,新建 Pod 必须写 requests/limits(或由 LimitRange 提供默认值),否则直接被拒,这是新命名空间最容易被卡住的一步。
「已用」统计的是 requests 之和而不是实际使用量:配额满不等于节点没资源,反过来配额宽松也可能因为节点容量不足而 Pending。

配置与维护要点

  • 配额落地前先定基线:按命名空间的真实用量留出余量再设上限,避免上线当天就触顶
  • 配合 LimitRange 设默认值:否则新建 Pod 没写 requests 会被直接拒绝
  • 对象数量与资源量一起管:只限 CPU 内存时,空对象仍会大量堆积
  • 配额调整要留观察期:下调后任何更新都可能被拒,先盘点存量再分批调整

易错点

  • 配额开启后新建 Pod 必须写 requests/limits(或由 LimitRange 兜底),否则直接被拒,表现为升级后突然无法创建
  • 「已用」统计的是 requests 之和不是实际用量:配额满不等于节点没资源,两个层面要分开判断
  • 只加资源配额不加对象数量配额:无实际资源占用的对象(如大量空 Service、ConfigMap)仍会堆积
  • 配额下调前不盘点存量:新上限低于当前已用量时,后续任何更新都会被拒绝,需要先清理或分批调整

数据来源与参考

  • Kubernetes 官方文档 · ResourceQuotas
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌