Skip to content

Latest commit

 

History

History
 
 

task-local-002-configure-default-memory-requests-and-limits-for-a-namespace

Configure Default Memory Requests and Limits for a Namespace

administer-cluster/manage-resources/memory-default-namespace/

  • create the namespace
$ kubectl create namespace default-mem-example

namespace/default-mem-example created
  • Create limit range object
apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
    - default:
        memory: 512Mi
      defaultRequest:
        memory: 256Mi
      type: Container
$ kubectl apply -f . --namespace=default-mem-example
limitrange/mem-limit-range created
  • Create a pod without specifying a memory request and limit.
apiVersion: v1
kind: Pod
metadata:
  name: default-mem-demo
spec:
  containers:
    - name: default-mem-demo-ctr
      image: nginx
$ kubectl apply -f . --namespace=default-mem-example
pod/default-mem-demo created
limitrange/mem-limit-range unchanged
  • Now check the memory stats of the pod created. Both are as per defaults
$ kubectl get pod default-mem-demo -o yaml --namespace=default-mem-example | egrep -i "resources:" -A 4 | egrep -v "f:"
--
    resources:
      limits:
        memory: 512Mi
      requests:
        memory: 256Mi

What if you specify a Container's limit, but not its request?

  • Create the pod
apiVersion: v1
kind: Pod
metadata:
  name: default-mem-demo-2
spec:
  containers:
    - name: default-mem-demo-2-ctr
      image: nginx
      resources:
        limits:
          memory: "1Gi"
$ kubectl apply -f . --namespace=default-mem-example
limitrange/mem-limit-range unchanged
pod/default-mem-demo-2 created
pod/default-mem-demo created
  • check the stats.
$ kubectl get pod default-mem-demo-2 -o yaml --namespace=default-mem-example | egrep -i "resources:" -A 4 | egrep -v "f:|{|-"
    resources:
      limits:
        memory: 1Gi
      requests:
        memory: 1Gi

What if you specify a Container's request, but not its limit?

  • Apply the changes
apiVersion: v1
kind: Pod
metadata:
  name: default-mem-demo-3
spec:
  containers:
    - name: default-mem-demo-3-ctr
      image: nginx
      resources:
        requests:
          memory: "128Mi"
$ kubectl apply -f . --namespace=default-mem-example                                                                         
limitrange/mem-limit-range unchanged
pod/default-mem-demo-2 unchanged
pod/default-mem-demo unchanged
pod/default-mem-demo-3 created
  • check the changes
$ kubectl get pod default-mem-demo-3 -o yaml --namespace=default-mem-example | egrep -i "resources:" -A 4 | egrep -v "f:|{|-"
    resources:
      limits:
        memory: 512Mi
      requests:
        memory: 128Mi
  • Remove the resources
$ kubectl delete -f . --namespace=default-mem-example                                                                        
limitrange "mem-limit-range" deleted
pod "default-mem-demo-2" deleted
pod "default-mem-demo" deleted
pod "default-mem-demo-3" deleted