Configure Default CPU Requests and Limits for a Namespace [page]deterministic
Define a default CPU resource limits for a namespace, so that every new Pod in that namespace has a CPU resource limit configured.
This page shows how to configure default CPU requests and limits for a [namespace](#gloss:namespace).
A Kubernetes cluster can be divided into namespaces. If you create a Pod within a namespace that has a default CPU [limit](/docs/concepts/configuration/manage-resources-containers/#requests-and-limits), and any container in that Pod does not specify its own CPU limit, then the [control plane](#gloss:control-plane) assigns the default CPU limit to that container.
Kubernetes assigns a default CPU [request](/docs/concepts/configuration/manage-resources-containers/#requests-and-limits), but only under certain conditions that are explained later in this page.
##
You must have access to create namespaces in your cluster.
If you're not already familiar with what Kubernetes means by 1.0 CPU, read [meaning of CPU](/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu).
## Create a namespace
Create a namespace so that the resources you create in this exercise are isolated from the rest of your cluster.
```shell kubectl create namespace default-cpu-example ```
## Create a LimitRange and a Pod
Here's a manifest for an example [LimitRange](#gloss:limitrange). The manifest specifies a default CPU request and a default CPU limit.
Create the LimitRange in the default-cpu-example namespace:
```shell kubectl apply -f https://k8s.io/examples/admin/resource/cpu-defaults.yaml --namespace=default-cpu-example ```
Now if you create a Pod in the default-cpu-example namespace, and any container in that Pod does not specify its own values for CPU request and CPU limit, then the control plane applies default values: a CPU request of 0.5 and a default CPU limit of 1.
Here's a manifest for a Pod that has one container. The container does not specify a CPU request and limit.
Create the Pod.
```shell kubectl apply -f https://k8s.io/examples/admin/resource/cpu-defaults-pod.yaml --namespace=default-cpu-example ```
View the Pod's specification:
```shell kubectl get pod default-cpu-demo --output=yaml --namespace=default-cpu-example ```
The output shows that the Pod's only container has a CPU request of 500m `cpu` (which you can read as “500 millicpu”), and a CPU limit of 1 `cpu`. These are the default values specified by the LimitRange.
```shell containers: - image: nginx imagePullPolicy: Always name: default-cpu-demo-ctr resources: limits: cpu: "1" requests: cpu: 500m ```
## What if you specify a container's limit, but not its request?
Here's a manifest for a Pod that has one container. The container specifies a CPU limit, but not a request:
Create the Pod:
```shell kubectl apply -f https://k8s.io/examples/admin/resource/cpu-defaults-pod-2.yaml --namespace=default-cpu-example ```
View the [specification](/docs/concepts/overview/working-with-objects/#object-spec-and-status) of the Pod that you created:
``` kubectl get pod default-cpu-demo-2 --output=yaml --namespace=default-cpu-example ```
The output shows that the container's CPU request is set to match its CPU limit. Notice that the container was not assigned the default CPU request value of 0.5 `cpu`:
``` resources: limits: cpu: "1" requests: cpu: "1" ```
## What if you specify a container's request, but not its limit?
Here's an example manifest for a Pod that has one container. The container specifies a CPU request, but not a limit:
Create the Pod:
```shell kubectl apply -f https://k8s.io/examples/admin/resource/cpu-defaults-pod-3.yaml --namespace=default-cpu-example ```
View the specification of the Pod that you created:
``` kubectl get pod default-cpu-demo-3 --output=yaml --namespace=default-cpu-example ```
The output shows that the container's CPU request is set to the value you specified at the time you created the Pod (in other words: it matches the manifest). However, the same container's CPU limit is set to 1 `cpu`, which is the default CPU limit for that namespace.
``` resources: limits: …(trimmed)