How Kubernetes knows resource requests and limits?

5/7/2019

Here is a yaml file that has been created to be deployed in kubernetes. I would like to know since there is no resource request and limits in the file, how kubernetes knows the resource requests and limits to run it? How can I fetch that information?

apiVersion: v1
 kind: Pod
 metadata:
   name: rss-site
   labels:
     app: web
 spec:
   containers:
     - name: front-end
       image: nginx
       ports:
         - containerPort: 80
     - name: rss-reader
       image: nickchase/rss-php-nginx:v1
       ports:
         - containerPort: 88
-- HamiBU
kubernetes

3 Answers

5/7/2019

You can "kubectl describe" your pod and see what actual resources got assigned. With LimitRange Kubernetes can assign default requests and limits to pod if not part of its spec.

If there are no requests/limits assigned - your pod will become of Best Effort quality of service and can be Evicted in case of resource pressure on node.

-- Vasily Angapov
Source: StackOverflow

5/7/2019

you can use the below steps to fetch the resource limits assigned to the pod.

Create the pod
-------------------
kubectl run test-resource-limits --image=busybox --limits "memory=100Mi" \
  --command -- /bin/sh -c "while true; do sleep 2; done"

Test the resource limits that are specified
-------------------------------------------
kubectl get pods test-resource-limits-7b8b46c8c7-jdjgs  \
  -o=jsonpath='{.spec.containers[0].resources}'
-- P Ekambaram
Source: StackOverflow

5/7/2019

If you don't specify resource requests and limits. Kubernetes will run your workload without them. meaning your pod could potentially use all the CPU and RAM on the node.

Caveat to that; if your namespace has defaults set with a limitRange the defaults will be applied to workloads that don't specify resource spec.

-- switchboard.op
Source: StackOverflow