📖 Scenario: You are managing a Kubernetes cluster for a small company. To keep resources fair and avoid one team using too much, you want to set limits on how much CPU and memory each team can use in their own namespace.
🎯 Goal: Create a Kubernetes resource quota for a namespace called team-a that limits CPU and memory usage. Then, check the quota status.
📋 What You'll Learn
Create a namespace called team-a
Create a resource quota named team-a-quota in the team-a namespace
Limit CPU requests to 2 cores and memory requests to 4Gi
Limit CPU limits to 4 cores and memory limits to 8Gi
Display the resource quota details for team-a namespace
💡 Why This Matters
🌍 Real World
Resource quotas help teams share a Kubernetes cluster fairly by limiting how much CPU and memory each namespace can use.
💼 Career
Setting and managing resource quotas is a common task for Kubernetes administrators and DevOps engineers to ensure cluster stability and fair resource distribution.
Progress0 / 4 steps
1
Create the team-a namespace
Write the kubectl command to create a namespace called team-a.
Kubernetes
Hint
Use kubectl create namespace team-a to create the namespace.
2
Create the resource quota YAML file
Create a YAML file named team-a-quota.yaml with a resource quota named team-a-quota in the team-a namespace. It should limit CPU requests to 2 cores, memory requests to 4Gi, CPU limits to 4 cores, and memory limits to 8Gi.
Kubernetes
Hint
Remember to set apiVersion: v1, kind: ResourceQuota, and specify hard limits under spec.
3
Apply the resource quota to the team-a namespace
Use the kubectl command to apply the team-a-quota.yaml file to the cluster.
Kubernetes
Hint
Use kubectl apply -f team-a-quota.yaml to apply the quota.
4
Check the resource quota status
Write the kubectl command to show the resource quota details for the team-a namespace.
Kubernetes
Hint
Use kubectl get resourcequota -n team-a to see the quota status.
Practice
(1/5)
1. What is the main purpose of a ResourceQuota in a Kubernetes namespace?
easy
A. To limit the amount of resources like CPU and memory used in that namespace
B. To increase the CPU speed of all pods in the namespace
C. To delete unused pods automatically
D. To backup data stored in the namespace
Solution
Step 1: Understand ResourceQuota purpose
A ResourceQuota sets limits on resource usage like CPU, memory, pods, and storage within a namespace.
Step 2: Compare options with purpose
Only To limit the amount of resources like CPU and memory used in that namespace correctly describes limiting resource usage. Other options describe unrelated actions.
Final Answer:
To limit the amount of resources like CPU and memory used in that namespace -> Option A
Quick Check:
ResourceQuota limits resources = D [OK]
Hint: ResourceQuota controls resource limits per namespace [OK]
Common Mistakes:
Thinking ResourceQuota speeds up pods
Confusing quotas with backups
Assuming quotas delete pods automatically
2. Which of the following is the correct YAML snippet to define a CPU limit of 2 cores in a ResourceQuota?
easy
A. hard:
limits.cpu: "2"
B. resources:
limits:
cpu: "2"
C. hard:
cpu: "2"
D. hard:
limits.cpu: 2
Solution
Step 1: Recall ResourceQuota syntax for limits
ResourceQuota uses the hard field with resource names like limits.cpu as keys and string values.
Step 2: Check each option's syntax
hard:
limits.cpu: "2" correctly uses hard: with limits.cpu: "2". resources:
limits:
cpu: "2" uses wrong keys, C misses limits., D uses number instead of string.
Final Answer:
hard:
limits.cpu: "2" -> Option A
Quick Check:
ResourceQuota hard limits use string values with resource keys [OK]
Hint: ResourceQuota limits use 'hard' with string values [OK]
Common Mistakes:
Using numeric values instead of strings
Omitting 'limits.' prefix in resource keys
Placing limits under wrong YAML keys
3. Given this ResourceQuota YAML applied to namespace dev:
D. Resource keys 'cpu' and 'memory' are invalid; should use 'limits.cpu' and 'limits.memory'
Solution
Step 1: Check resource keys in ResourceQuota
ResourceQuota requires full resource names like limits.cpu or requests.memory, not just cpu or memory.
Step 2: Validate YAML fields
API version is present, namespace existence is unrelated to syntax error, and values must be strings (which they are).
Final Answer:
Resource keys 'cpu' and 'memory' are invalid; should use 'limits.cpu' and 'limits.memory' -> Option D
Quick Check:
Use full resource keys like limits.cpu [OK]
Hint: Use full resource keys like limits.cpu in quotas [OK]
Common Mistakes:
Using short keys like 'cpu' instead of 'limits.cpu'
Assuming missing namespace causes syntax error
Using numeric values instead of strings
5. You want to limit a namespace to 5 pods and 2Gi memory requests, but allow unlimited CPU. Which ResourceQuota YAML snippet achieves this?
hard
A. spec:
hard:
pods: "5"
requests.memory: "2Gi"
requests.cpu: "0"
B. spec:
hard:
pods: "5"
requests.memory: "2Gi"
C. spec:
hard:
pods: "5"
requests.memory: "2Gi"
limits.cpu: "unlimited"
D. spec:
hard:
pods: "5"
requests.memory: "2Gi"
requests.cpu: "-1"
Solution
Step 1: Understand ResourceQuota limits
To limit pods and memory requests, specify those keys under hard. Omitting CPU means no limit on CPU.
Step 2: Evaluate options for CPU limits
spec:
hard:
pods: "5"
requests.memory: "2Gi" omits CPU limits, allowing unlimited CPU. Options A, C, D try to set CPU limits with invalid or restrictive values.
Final Answer:
spec:
hard:
pods: "5"
requests.memory: "2Gi" -> Option B
Quick Check:
Omit CPU limit to allow unlimited CPU [OK]
Hint: Omit resource in quota to allow unlimited usage [OK]
Common Mistakes:
Setting CPU limit to 0 or negative disables pods
Using 'unlimited' as a value (not valid)
Trying to limit CPU when unlimited is desired
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.