Chapter 13. Resource Limits


13.1. Overview

A LimitRange object enumerates the minimum and maximum resource usage values per object in a project.

13.2. Limits

A LimitRange object can enumerate the following limits for each object type and resource value that is created or modified in the project. If a usage limit is defined, and the incoming resource exceeds the allowed range, then the resource is forbidden from the project.

For some fields, in the absence of a value on the incoming resource, it is possible to apply a default value, if it is specified in the LimitRange definition.

Table 13.1. Limits
TypeResourceNameDescriptionDefault Value Supported

Container

cpu

Minimum/maximum CPU allowed per container.

yes

Container

memory

Minimum/maximum memory allowed per container.

yes

Pod

cpu

Minimum/maximum CPU allowed across all containers in a pod.

no

Pod

memory

Minimum/maximum memory allowed across all containers in a pod.

no

13.3. Limit Enforcement

Once a LimitRange is created in a project, all resource create and modification requests are evaluated against each LimitRange object in the project. If the resource violates a minimum or maximum constraint enumerated, then the resource is rejected. If the resource does not set an explicit value, and if the constraint supports a default value, then the default value is applied to the resource.

For example, if the container does not express a CPU resource requirement, but the LimitRange specifies a default value for container CPU, then the default value is set to the allowed CPU usage for that container, and the minimum (if specified) is set as the minimum requested value for that container.

Example 13.1. Limit Range Object Definition

{
  "apiVersion": "v1",
  "kind": "LimitRange",
  "metadata": {
    "name": "limits" 1
  },
  "spec": {
    "limits": [
    {
      "type": "Pod",
      "max": {
        "memory": "1Gi", 2
        "cpu": "2" 3
      },
      "min": {
        "memory": "1Mi", 4
        "cpu": "250m" 5
      }
    },
    {
      "type": "Container",
      "max": {
        "memory": "1Gi", 6
        "cpu": "2" 7
      },
      "min": {
        "memory": "1Mi", 8
        "cpu": "250m" 9
      },
      "default": {
        "memory": "1Mi", 10
        "cpu": "250m" 11
      }
    }
    ]
  }
}
1
The name of the limit range document.
2
The maximum amount of memory that a pod can consume on a node across all containers.
3
The maximum amount of cpu that a pod can consume on a node across all containers.
4
The minimum amount of memory that a pod can consume on a node across all containers.
5
The minimum amount of cpu that a pod can consume on a node across all containers.
6
The maximum amount of memory that a single container in a pod can consume.
7
The maximum amount of cpu that a single container in a pod can consume.
8
The maximum amount of memory that a single container in a pod can consume.
9
The maximum amount of cpu that a single container in a pod can consume.
10
The default amount of memory that a container will request if not specified.
11
The default amount of cpu that a container will request if not specified.

13.4. Creating a Limit Range

To apply a limit range to a project, create a limit range object definition on your file system to your specifications, then run:

$ oc create -f <limit_range_file>

13.5. Viewing Limits

To view limits enforced in a project:

$ oc get limits
NAME
limits

$ oc describe limits limits
Name:           limits
Type            Resource        Min     Max     Default
----            --------        ---     ---     ---
Pod             memory          1Mi     1Gi     -
Pod             cpu             250m    2       -
Container       memory          1Mi     1Gi     1Mi
Container       cpu             250m    250m    250m

13.6. Deleting Limits

If you do not want to enforce limits in a project, you can remove any active limit range by name:

$ oc delete limits <limit_name>
Red Hat logoGithubRedditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

© 2024 Red Hat, Inc.