Scale out resource vertically by resource quota

Set default resource quota for namespace

1
2
3
4
5
6
7
8
9
10
11
# kubectl describe quota --namespace=quota-example
Name: compute-resources
Namespace: quota-example
Resource Used Hard
-------- ---- ----
limits.cpu 200m 2
limits.memory 512Mi 2Gi
pods 1 4
requests.cpu 100m 1
requests.memory 256Mi 1Gi

Deploy pod/deployment/rs to namespace, then deployment will use default resource quota without explicit specification.

1
2
3
4
5
6
7
8
9
kubectl run nginx --image=nginx --replicas=1 --namespace=quota-example
deployment "nginx" created
[root@cdsdev-radiant-0001 quota]# kubectl describe limits limits --namespace=quota-example
Name: limits
Namespace: quota-example
Type Resource Min Max Default Request Default Limit Max Limit/Request Ratio
---- -------- --- --- --------------- ------------- -----------------------
Container cpu - - 100m 200m -
Container memory - - 256Mi 512Mi -

kubectl describe rs --namespace=quota-example

1
2
3
4
5
6
7
8
9
10
11
12
Name: nginx-2040093540
Namespace: quota-example
Image(s): nginx
Selector: pod-template-hash=2040093540,run=nginx
Labels: pod-template-hash=2040093540,run=nginx
Replicas: 1 current / 1 desired
Pods Status: 1 Running / 0 Waiting / 0 Succeeded / 0 Failed
No volumes.
Events:
FirstSeen LastSeen Count From SubobjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
53s 53s 1 {replicaset-controller } Normal SuccessfulCreate Created pod: nginx-2040093540-iizoo

kubectl describe quota --namespace=quota-example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Name: best-effort
Namespace: quota-example
Scopes: BestEffort
* Matches all pods that have best effort quality of service.
Resource Used Hard
-------- ---- ----
pods 0 10
Name: compute-resources
Namespace: quota-example
Resource Used Hard
-------- ---- ----
limits.cpu 200m 2
limits.memory 512Mi 2Gi
pods 1 4
requests.cpu 100m 1
requests.memory 256Mi 1Gi
kubectl replace -f compute-resources.yaml --namespace=quota-example
resourcequota "compute-resources" replaced
[root@cdsdev-radiant-0001 quota]# kubectl describe quota --namespace=quota-example
Name: best-effort
Namespace: quota-example
Scopes: BestEffort
* Matches all pods that have best effort quality of service.
Resource Used Hard
-------- ---- ----
pods 0 10
Name: compute-resources
Namespace: quota-example
Resource Used Hard
-------- ---- ----
limits.cpu 200m 4
limits.memory 512Mi 4Gi
pods 1 4
requests.cpu 100m 2
requests.memory 256Mi 2Gi