对 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 总量。 |
| 在所有与 |
|
| 在与 storage-class-name 相关的所有持久卷申领中,命名空间中可以存在的持久卷申领 总数 |
本地临时存储的配额
| requests.ephemeral-storage | 在命名空间的所有 Pod 中,本地临时存储请求的总和不能超过此值。 |
|---|---|
| limits.ephemeral-storage | 在命名空间的所有 Pod 中,本地临时存储限制值的总和不能超过此值。 |
| ephemeral-storage | 与 requests.ephemeral-storage 相同 |
对象数量配额
配额作用域
配额优先级
配额限制范围
容器 CPU 最小和最大约束
apiVersion: v1kind: LimitRangemetadata:name: cpu-min-max-lrnamespace: quotaspec:limits:- max:cpu: "80m"min:cpu: "20m"type: Container
没有声明默认值,默认值也会被自动创建
default 创建 pod 默认的 limits
defaultRequest 创建 pod 默认的 requests
创建 pod 不用指定 cpu 参数, pod的 requests 和 limits 用到 limitrange 的对应默认值
