14.3. 限制范围
一个限制范围,由 LimitRange
对象定义,在 pod、容器、镜像、镜像流和持久性卷声明一级的一个 项目中枚举的计算资源约束,并指定 pod、容器、镜像、镜像流和持久性卷声明一级可以消耗的资源数量。
要创建和修改资源的所有请求都会针对项目中的每个 LimitRange
对象进行评估。如果资源违反了任何限制,则会拒绝该资源。如果资源没有设置显式值,如果约束支持默认值,则默认值将应用到资源。
对于 CPU 和内存限值,如果您指定一个最大值,但没有指定最小限制,资源会消耗超过最大值的 CPU 和内存资源。
您可以使用临时存储技术预览功能指定临时存储的限值和请求。此功能默认为禁用。要启用此功能,请参阅为临时存储配置。
限制范围由集群管理员设置,并可限定到给定项目。
14.3.1. 查看限制范围
您可以通过在 Web 控制台中导航到项目的 Quota 页面来查看项目中定义的任何限值范围。
您还可以通过执行以下步骤来使用 CLI 查看限制范围详情:
获取项目中定义的限值范围对象列表。例如,对于名为 demoproject 的项目:
$ oc get limits -n demoproject
输出示例
NAME AGE resource-limits 6d
描述限值范围。例如,对于名为 resource-limits 的限制范围:
$ oc describe limits resource-limits -n demoproject
输出示例
Name: resource-limits Namespace: demoproject Type Resource Min Max Default Request Default Limit Max Limit/Request Ratio ---- -------- --- --- --------------- ------------- ----------------------- Pod cpu 200m 2 - - - Pod memory 6Mi 1Gi - - - Container cpu 100m 2 200m 300m 10 Container memory 4Mi 1Gi 100Mi 200Mi - openshift.io/Image storage - 1Gi - - - openshift.io/ImageStream openshift.io/image - 12 - - - openshift.io/ImageStream openshift.io/image-tags - 10 - - -
通过在对象中运行 oc get --export
可以查看完整的限制范围定义。下面显示了一个限制范围定义示例:
核心限制范围对象定义
apiVersion: "v1" kind: "LimitRange" metadata: name: "core-resource-limits" 1 spec: limits: - type: "Pod" max: cpu: "2" 2 memory: "1Gi" 3 min: cpu: "200m" 4 memory: "6Mi" 5 - type: "Container" max: cpu: "2" 6 memory: "1Gi" 7 min: cpu: "100m" 8 memory: "4Mi" 9 default: cpu: "300m" 10 memory: "200Mi" 11 defaultRequest: cpu: "200m" 12 memory: "100Mi" 13 maxLimitRequestRatio: cpu: "10" 14
- 1
- 限制范围对象的名称。
- 2
- pod 可在所有容器间请求的最大 CPU 量。
- 3
- pod 可在所有容器间请求的最大内存量。
- 4
- pod 可在所有容器间请求的最小 CPU 量。如果没有设置
min
值,或者将min
设置为0
,则结果为没有限制,pod 消耗的消耗可能会超过max
CPU 值。 - 5
- pod 可在所有容器间请求的最小内存量。如果没有设置
min
值,或者将min
设置为0
,则结果为没有限制,pod 消耗的消耗可能会超过max
内存的值。 - 6
- pod 中单个容器可以请求的最大 CPU 量。
- 7
- pod 中单个容器可以请求的最大内存量。
- 8
- pod 中单个容器可以请求的最小 CPU 量。如果没有设置
min
值,或者将min
设置为0
,则结果为没有限制,pod 消耗的消耗可能会超过max
CPU 值。 - 9
- pod 中单个容器可以请求的最小内存量。如果没有设置
min
值,或者将min
设置为0
,则结果为没有限制,pod 消耗的消耗可能会超过max
内存的值。 - 10
- 如果没有在 pod 规格中指定限制,则容器的默认 CPU 限值。
- 11
- 如果没有在 pod 规格中指定限制,则容器的默认内存限值。
- 12
- 如果您没有在 pod 规格中指定请求,则容器的默认 CPU 请求。
- 13
- 如果您没有在 pod 规格中指定请求,则容器的默认内存请求。
- 14
- 容器最大的限制与请求的比率。
如需有关如何测量 CPU 和内存的更多信息,请参阅 Compute Resources。