首页/云/云与容器速查/ResourceQuota 与 LimitRange
Kubernetes68 条

ResourceQuota 与 LimitRange

ResourceQuota 限命名空间总量(CPU/内存/对象数),LimitRange 定单容器默认值与上下限:多团队共享集群的『防超卖、防裸奔』组合拳。

云与容器速查云更新于 2026-10-13

配额与默认值是什么

ResourceQuota 与 LimitRange 都是命名空间级对象,解决两个层面的问题:前者限制整个命名空间的资源总量与对象数量,防止某个团队把集群吃干;后者规定单个容器(或存储声明)的默认值与上下限,让没写资源声明的工作负载也能被补齐或被拦住。多团队共享集群时这两个对象通常要一起配,只配一半会带来要么创建失败、要么无人约束的尴尬局面。

基本信息

ResourceQuota 字段requests.cpu、limits.memory、pods、services、count/jobs.batch 等
LimitRange 字段default、defaultRequest、max、min、maxLimitRequestRatio
生效方式配额按命名空间累计,超限创建返回 403 并在事件里提示
联动规则配额里出现 requests.cpu 时,容器必须声明 requests 才能创建
查看kubectl describe quota -n 命名空间 与 kubectl describe limitrange
适用范围只作用于本命名空间,不跨命名空间累计

典型使用场景

  • 多团队共享集群:按命名空间切分资源,防止互相抢占
  • 新命名空间开箱可用:用 LimitRange 给未声明资源的容器补默认值
  • 限制单容器最大值,避免一个大 Pod 吃掉整台节点
  • 按部门统计资源占用,为成本归口提供依据
  • 测试环境压低上限,逼出真实的资源需求

组合示例

组合示例
apiVersion: v1
kind: ResourceQuota   # 命名空间总量上限
metadata:
  name: dev-quota
  namespace: dev
spec:
  hard:
    requests.cpu: "8"
    requests.memory: 16Gi
    limits.cpu: "16"
    limits.memory: 32Gi
    pods: "50"
---
apiVersion: v1
kind: LimitRange   # 单容器默认值与上下限
metadata:
  name: dev-defaults
  namespace: dev
spec:
  limits:
    - type: Container
      default: { cpu: 500m, memory: 512Mi }
      defaultRequest: { cpu: 100m, memory: 128Mi }
      max: { cpu: "4", memory: 8Gi }

两个对象的分工

对象作用范围典型配置行为
ResourceQuota命名空间总量requests.cpu、limits.memory、pods超额创建报 403 并写事件
LimitRange单个容器或存储声明default、defaultRequest、max、min未声明时补默认值,超限则拒绝
配额里只要出现 requests.cpu 之类的键,所有容器就必须显式声明对应 requests;这正是需要同时配 LimitRange 的原因。
kubectl get resourcequota -n dev -o yaml 里的 status.used 与 status.hard 是判断“还剩多少额度”的最直接依据。
LimitRange 还能约束存储声明与比值:maxLimitRequestRatio 限制 limits 与 requests 的倍数,避免申请很小、上限开得极大的取巧写法。
配额是团队自治的基础设施:没有配额,任何命名空间都能把集群资源吃光,事后也说不清是谁的负载。

易错点

  • 配额按 requests 计算却只盯 limits:容量口径混乱,实际已经超卖而不自知
  • 只配配额不配 LimitRange:新工作负载创建即被拒,团队误判为权限问题
  • 上限压得过死:Pod 一上线就被 OOMKilled 或调度不上,容量评估失去依据
  • 只限制 Pod 数量不管对象数:Job、Service、ConfigMap 泛滥同样拖垮集群
  • 改配额前不核对已用量:把 hard 调低到低于 used,存量的变更操作会立刻失败

数据来源与参考

  • Kubernetes Docs:Resource Quotas
  • Kubernetes Docs:Limit Ranges

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌