Namespace limits
You can update the limits on your namespaces if you experience any constraints.
By default, the following limits are applied to IBM Cloud Pak® for Multicloud Management namespaces:
Namespace | CPU Maximum | CPU Minimum | CPU default requests | Memory Maximum | Memory Minimum | Memory default requests |
---|---|---|---|---|---|---|
cert-manager | 800m | 0m | 300m | 1Gi | 0Mi | 300Mi |
default | 500m | 0m | 200m | 500Mi | 0Mi | 200Mi |
ibmcom | 500m | 0m | 200m | 500Mi | 0Mi | 200Mi |
icp-system | 500m | 0m | 200m | 500Mi | 0Mi | 200Mi |
kube-public | 500m | 0m | 200m | 500Mi | 0Mi | 200Mi |
multicluster-endpoint | 1500m | 0m | 300m | 2Gi | 0Gi | 300Mi |
services | 500m | 0m | 200m | 500Mi | 0Mi | 200Mi |
-
CPU represents how much processing power from your system that any Kubernetes pod can use. CPU is measured in cores. The values that are specified in the table are "millicores" or "millicpu". The maximum CPU of the default namespace is
500 millicores
. -
Memory is the amount of hard disk memory from your system that any Kubernetes pod can use. The constraints are based on the namespace where the Kubernetes pod runs.
-
The maximum value caps the amount of CPU or memory that is used by the Kubernetes pods in a namespace. The minimum value forces every Kubernetes pod within the namespace to use at least the CPU and memory that are listed.
Updating limits
If a namespace requires more memory, for example, when you are deploying CAM in the services
namespace, you can increase the limits by following the steps:
-
Edit the
LimitRange
object for the namespace you want to change the limits on. The following example shows theLimitRange
object for thedefault
namespace:kubectl edit LimitRange default-limit -n default
-
Change the maximum or minimum values of CPU, memory, or both:
apiVersion: v1 kind: LimitRange metadata: name: default-limit spec: limits: - max: cpu: "1000m" memory: "1Gi" min: cpu: "0m" memory: "0Mi" type: Container
-
Save your changes. Then, verify that the changes are applied by running the following command:
kubectl describe namespace default
Disclaimers
- If a
LimitRange
does not set a default limit, the default limit implicitly becomes the maximum of theLimitRange
. For example, the following LimitRange for thekube-public
namespace has a maximum CPU of 100m and a maximum memory of 100Mi. The default forkube-public
becomes CPU=100m and memory=100Mi.apiVersion: v1 kind: LimitRange metadata: name: kube-public-limit spec: limits: - max: cpu: "100m" memory: "100Mi" min: cpu: "0m" memory: "0Mi" type: Container
- When a service is deployed to a namespace and it does not specify a resource limit on its container or containers, then the container inherits the default limits of the namespace.
- The implication of the previous two disclaimers is that if a container is deployed to a namespace without a resource limit, and the namespace does not have a default value set, then the limits of the container become the maximum limit of the namespace. As a result, you are not able to deploy the container because it shows that the namespace does not have enough memory, CPU, or both to support deploying it.
For more information about LimitRanges, see the Kubernetes documentation .