首页/云/Kubernetes 速查/配额作用域 scopes
调度与资源52 条

配额作用域 scopes

scopes 让配额只覆盖某类 Pod:Terminating/NotTerminating 区分是否设了 activeDeadlineSeconds,BestEffort/NotBestEffort 按 QoS 区分,用于分级管控。

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

scopes 让配额只覆盖某类 Pod

同一个命名空间里常混着长驻服务与批处理任务,用一条配额管全部就会互相挤占。ResourceQuota 的 scopes 能把配额限定到某一类 Pod:Terminating 与 NotTerminating 按是否设置了 activeDeadlineSeconds 区分批处理与长驻服务,BestEffort 与 NotBestEffort 按是否声明了 requests 或 limits 区分资源声明的规范程度。两对作用域各自互斥,可以给两类负载分别设额。

基本信息

适用对象各版本的 ResourceQuota
关键字段spec.scopes,数组形式,可写多个值
可用取值Terminating、NotTerminating、BestEffort、NotBestEffort
配对关系每对之内互斥,未落进作用域的对象不受该配额约束
查看入口kubectl describe resourcequota 的 Used 与 Hard 两列

典型使用场景

  • 分级管控:给批处理任务与在线服务各自设额度,避免互相挤占
  • 限制裸奔容器:单独约束未声明 requests 与 limits 的 Pod 数量
  • 容量分层:对规范声明资源的服务放宽额度,对不规范的收紧
  • 成本归因:按负载类型观察各自消耗,便于容量与费用分析
  • 迁移过渡:先把批任务收进单独的配额,再逐步规范在线服务

只约束非 BestEffort 的 Pod

只约束非 BestEffort 的 Pod
apiVersion: v1
kind: ResourceQuota
metadata:
  name: prod-quota
  namespace: prod
spec:
  hard:
    pods: "50"
  scopes:
    - NotBestEffort        # 只统计至少声明了 requests 或 limits 的 Pod
---
apiVersion: v1
kind: ResourceQuota
metadata:
  name: prod-batch-quota
  namespace: prod
spec:
  hard:
    pods: "20"
  scopes:
    - Terminating          # 只统计设置了 activeDeadlineSeconds 的批处理 Pod

核对生效范围

核对生效范围
kubectl describe resourcequota prod-quota -n prod
kubectl get resourcequota -n prod -o jsonpath='{.items[*].spec.scopes}'
kubectl get pods -n prod -o custom-columns='POD:.metadata.name,DEADLINE:.spec.activeDeadlineSeconds'

scope 与覆盖对象

scope覆盖对象典型用途
Terminating设置了 activeDeadlineSeconds 的 Pod批处理任务单独设额
NotTerminating未设置该字段的 Pod长驻服务配额
BestEffort未声明 requests 与 limits 的 Pod限制不规范容器的数量
NotBestEffort至少声明了 requests 或 limits 的 Pod管控已规范声明的负载
带作用域的配额对可限制的键有一定约束,按 QoS 划分时通常只统计 Pod 数量这类计数项,具体以对应版本的官方说明为准,配置后用 describe 核对范围是否符合预期。
成对的作用域要配各自的配额对象:只建一条 NotBestEffort 配额,未声明资源的 Pod 就完全不在约束范围内,看起来像配额失效。

易错点

  • scope 方向写反:管住的是不该管的负载类型,表现为另一类业务突然创建失败
  • 整个命名空间只用一条不带作用域的配额:批处理与长驻服务互相挤占,先触顶的往往是重要业务
  • 以为改了 scopes 只是微调:实际等于换了一条语义不同的配额,需先小范围验证
  • 依赖配额限制不规范声明却忽略了默认值兜底:未声明资源的 Pod 可能完全落在配额覆盖范围之外

数据来源与参考

  • Kubernetes 官方文档 · ResourceQuota 的 scopes
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌