O Resource Quota utilizado nestes exemplos foi definido na página Creating a ResourceQuota e aplicado a um namespace chamado production. Com o Resource Quota aplicado queremos ver a imposição de regras em funcionamento.

apiVersion: v1
kind: ResourceQuota
metadata:
  name: awesome-quota
spec:
  hard:
    pods: 2
    requests.cpu: "1"
    requests.memory: 1024m
    limits.cpu: "4"
    limits.memory: 4096m

O primeiro teste será a tentativa de criação de um Pod com um container nginx sem a definição de requests e limits para CPU e memória. A criação será barrada pois a partir do momento que o Resource Quota é aplicado ao namespace devemos informar requests e limits para CPU e memória na definição dos containers deste namespace.

Manifesto Pod sem *Requests* e *Limits*

apiVersion: v1
kind: Pod
metadata:
  name: nginx
	namespace: production
spec:
  containers:
  - image: nginx:1.18.0
    name: nginx

Tentando Criar o Pod

**$ kubectl apply -f pod_sem_requests_limits.yaml --namespace=production** 
	Error from server (Forbidden):
	error when creating "pod_sem_requests_limits.yaml":
	pods "nginx" is forbidden: failed quota: awesome-quota:
	must specify
			limits.cpu,
			limits.memory,
			requests.cpu,
			requests.memory

Manifesto Pod com *Requests* e *Limits*

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: nginx:1.18.0
    name: nginx
    resources:
      requests:
        cpu: "0.5"
        memory: "512m"
      limits:
        cpu: "1"
        memory: "1024m"

Tentando Criar o Pod

**$ kubectl apply -f pod_com_requests_limits.yaml --namespace production** 
	pod/nginx created

# Com um Pod em execução, estado atual do ResourceQuota
**$ kubectl describe resourcequotas awesome-quota --namespace=production**
	Name:            awesome-quota
	Namespace:       production
	Resource         Used   Hard
	--------         ----   ----
	limits.cpu       1      4
	limits.memory    1024m  4096m
	pods             1      2
	requests.cpu     500m   1
	requests.memory  512m   1024m

# Com dois Pods em execução, chegamos ao limite do ResourceQuota
**$ kubectl describe resourcequotas awesome-quota --namespace=production**
	Name:            awesome-quota
	Namespace:       production
	Resource         Used   Hard
	--------         ----   ----
	limits.cpu       2      4
	limits.memory    2048m  4096m
	pods             2      2
	requests.cpu     1      1
	requests.memory  1024m  1024m

# Ao tentar criar outro Pod
**$ kubectl apply -f pod_com_requests_limits.yaml --namespace production**
	Error from server (Forbidden):
		error when creating "pod_com_requests_limits.yaml":
		pods "nginx32" is forbidden: exceeded quota: awesome-quota,
		requested:
			pods=1,
			requests.cpu=500m,
			requests.memory=512m,
		used:
			pods=2,
			requests.cpu=1,
			requests.memory=1024m,
		limited:
			pods=2,
			requests.cpu=1,
			requests.memory=1024m

Podemos criar até dois Pods com as configurações de CPU e memória mostradas no manifesto acima devido as restrições definidas no Resource Quota para CPU, memória e quantidade de Pods admitidos no namespace.