LimitRange
LimitRange 是限制命名空间内可为每个适用的对象类别 (例如 Pod 或 PersistentVolumeClaim) 指定的资源分配量(限制和请求)的策略对象。
一个 LimitRange(限制范围) 对象提供的限制能够做到:
- 在一个命名空间中实施对每个 Pod 或 Container 最小和最大的资源使用量的限制。
- 在一个命名空间中实施对每个 PersistentVolumeClaim 能申请的最小和最大的存储空间大小的限制。
- 在一个命名空间中实施对一种资源的申请值和限制值的比值的控制。
- 设置一个命名空间中对计算资源的默认申请/限制值,并且自动的在运行时注入到多个 Container 中。
当某命名空间中有一个 LimitRange 对象时,将在该命名空间中实施 LimitRange 限制。
举例:
apiVersion: v1
kind: LimitRange
metadata:
name: cpu-resource-constraint
spec:
limits:
- default: # 此处定义默认限制值
cpu: 500m
defaultRequest: # 此处定义默认请求值
cpu: 500m
max: # 最大请求CPU 为 1 核
cpu: "1"
min: # CPU 的最小限制为 100 毫核
cpu: 100m
type: Container
字段解释
- type: Container :指定了这个 LimitRange 的类型是容器级别的。这意味着这些限制将应用于每个容器,而不是 Pod 或其他资源。
- type: Pod :指定为 Pod 类型 这样可以为 Pod 中的所有容器定义资源限制和请求的范围。
这两个类型根据需求选择其中一个即可。
注意
- LimitRange 用于限制单个 Pod 或者容器的资源使用。
- LimitRange 可以限制单个 Pod 或者容器的 CPU、内存、存储等资源的使用量。
- LimitRange 可以确保 Pod 不会超出指定的资源限制。
- LimitRange 设置在命名空间级别。
Resource Quotas
通过 ResourceQuota 对象来定义每个命名空间的资源消耗总量提供限制。 它可以限制命名空间中某种类型的对象的总数目上限,也可以限制命名空间中的 Pod 可以使用的计算资源的总上限。
资源配额的工作方式如下:
- 不同的团队可以在不同的命名空间下工作。这可以通过 RBAC 强制执行。
- 集群管理员可以为每个命名空间创建一个或多个 ResourceQuota 对象。
- 当用户在命名空间下创建资源(如 Pod、Service 等)时,Kubernetes 的配额系统会跟踪集群的资源使用情况, 以确保使用的资源用量不超过 ResourceQuota 中定义的硬性资源限额。
- 如果资源创建或者更新请求违反了配额约束,那么该请求会报错(HTTP 403 FORBIDDEN), 并在消息中给出有可能违反的约束。
- 如果命名空间下的计算资源 (如 cpu 和 memory)的配额被启用, 则用户必须为这些资源设定请求值(request)和约束值(limit),否则配额系统将拒绝 Pod 的创建。 提示: 可使用 LimitRanger 准入控制器来为没有设置计算资源需求的 Pod 设置默认值。
举例
apiVersion: v1
kind: ResourceQuota
metadata:
name: resource-quota

最低0.47元/天 解锁文章
2934

被折叠的 条评论
为什么被折叠?



