对 namespace 的资源消耗总量限制
可限制 namespace 中某种类型的对象的总数上限,也可限制 pod 使用的资源总上限

注意点

资源创建或者更新请求违反了配额约束,那么该请求会报错(HTTP 403 FORBIDDEN), 并在消息中给出有可能违反的约束

命名空间下的计算资源 (如 cpu 和 memory)的配额被启用,必须为 这些资源设定请求值(request)和约束值(limit),否则配额系统将拒绝 Pod 的创建。
可使用 LimitRanger 准入控制器来为没有设置计算资源需求的 Pod 设置默认值

启用资源配额

资源配额的支持在很多 Kubernetes 版本中是默认启用的。 当
API 服务器 的命令行标志 —enable-admission-plugins= 中包含 ResourceQuota 时, 资源配额会被启用

当命名空间中存在一个 ResourceQuota 对象时,对于该命名空间而言,资源配额就是开启的

配额分类

计算资源配额

limits.cpu 所有非终止状态的 Pod,其 CPU 限额总量不能超过该值。
limits.memory 所有非终止状态的 Pod,其内存限额总量不能超过该值。
requests.cpu 所有非终止状态的 Pod,其 CPU 需求总量不能超过该值。
requests.memory 所有非终止状态的 Pod,其内存需求总量不能超过该值。
hugepages- 对于所有非终止状态的 Pod,针对指定尺寸的巨页请求总数不能超过此值。
cpu 与 requests.cpu 相同。
memory 与 requests.memory 相同

存储资源配额

requests.storage 所有 PVC,存储资源的需求总量不能超过该值。
persistentvolumeclaims 在该命名空间中所允许的 PVC
总量。
.storageclass.storage.k8s.io/requests.storage 在所有与 相关的持久卷申领中,存储请求的总和不能超过该值。
.storageclass.storage.k8s.io/persistentvolumeclaims 在与 storage-class-name 相关的所有持久卷申领中,命名空间中可以存在的持久卷申领
总数

本地临时存储的配额

requests.ephemeral-storage 在命名空间的所有 Pod 中,本地临时存储请求的总和不能超过此值。
limits.ephemeral-storage 在命名空间的所有 Pod 中,本地临时存储限制值的总和不能超过此值。
ephemeral-storage 与 requests.ephemeral-storage 相同

对象数量配额

配额作用域

配额优先级

配额限制范围

容器 CPU 最小和最大约束

  1. apiVersion: v1
  2. kind: LimitRange
  3. metadata:
  4. name: cpu-min-max-lr
  5. namespace: quota
  6. spec:
  7. limits:
  8. - max:
  9. cpu: "80m"
  10. min:
  11. cpu: "20m"
  12. type: Container

没有声明默认值,默认值也会被自动创建
image.png
default 创建 pod 默认的 limits
defaultRequest 创建 pod 默认的 requests

创建 pod 不用指定 cpu 参数, pod的 requests 和 limits 用到 limitrange 的对应默认值
image.png