Container
A LimitRange
object enumerates the minimum and maximum resource usage values
per object in a project.
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.
Type | ResourceName | Description | Default Value Supported |
---|---|---|---|
|
|
Minimum/maximum CPU allowed per container. |
yes |
|
|
Minimum/maximum memory allowed per container. |
yes |
|
|
Minimum/maximum CPU allowed across all containers in a pod. |
no |
|
|
Minimum/maximum memory allowed across all containers in a pod. |
no |
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.
{
"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. |
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>