What if one team's app crashes the whole cluster because it used too many resources? Resource quotas stop that from happening.
Why Resource quotas per namespace in Kubernetes? - Purpose & Use Cases
Imagine you manage a shared playground where many kids want to play with limited toys. Without rules, some kids grab all the toys, leaving none for others.
Manually tracking who uses what resources in a Kubernetes cluster is like watching every kid all the time. It's slow, tiring, and mistakes happen--some teams use too much, others get none.
Resource quotas per namespace set clear limits on how much each team can use. This way, everyone gets a fair share automatically, and the system keeps things balanced without constant watching.
No limits set; teams deploy freely and can consume all resources.apiVersion: v1
kind: ResourceQuota
metadata:
name: team-quota
namespace: team-namespace
spec:
hard:
pods: '10'
requests.cpu: '4'
requests.memory: 8Gi
limits.cpu: '8'
limits.memory: 16GiIt enables fair, automatic sharing of cluster resources so no team can accidentally block others.
A company runs multiple projects in one Kubernetes cluster. Using resource quotas per namespace, each project gets a fixed amount of CPU and memory, preventing one project from crashing the whole system.
Manual resource tracking is slow and error-prone.
Resource quotas set clear, automatic limits per namespace.
This keeps cluster resources fairly shared and stable.
Practice
ResourceQuota in a Kubernetes 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 AQuick Check:
ResourceQuota limits resources = D [OK]
- Thinking ResourceQuota speeds up pods
- Confusing quotas with backups
- Assuming quotas delete pods automatically
Solution
Step 1: Recall ResourceQuota syntax for limits
ResourceQuota uses thehardfield with resource names likelimits.cpuas keys and string values.Step 2: Check each option's syntax
hard: limits.cpu: "2" correctly useshard:withlimits.cpu: "2". resources: limits: cpu: "2" uses wrong keys, C misseslimits., D uses number instead of string.Final Answer:
hard: limits.cpu: "2" -> Option AQuick Check:
ResourceQuota hard limits use string values with resource keys [OK]
- Using numeric values instead of strings
- Omitting 'limits.' prefix in resource keys
- Placing limits under wrong YAML keys
dev:
apiVersion: v1
kind: ResourceQuota
metadata:
name: dev-quota
namespace: dev
spec:
hard:
pods: "3"
requests.cpu: "1"
requests.memory: "1Gi"
What happens if you try to create a 4th pod in dev namespace?Solution
Step 1: Understand pod count limit in ResourceQuota
The quota limits pods to 3 in thedevnamespace.Step 2: Effect of creating 4th pod
Creating a 4th pod exceeds the pod count quota, so Kubernetes rejects the creation with an error.Final Answer:
The pod creation will fail due to exceeding the pod count quota -> Option CQuick Check:
Pod count quota exceeded = creation fails [OK]
- Assuming pod is created with limited resources
- Thinking quota only warns but allows creation
- Confusing CPU/memory limits with pod count
apiVersion: v1
kind: ResourceQuota
metadata:
name: test-quota
namespace: test
spec:
hard:
cpu: "2"
memory: "4Gi"
What is the likely error?Solution
Step 1: Check resource keys in ResourceQuota
ResourceQuota requires full resource names likelimits.cpuorrequests.memory, not justcpuormemory.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 DQuick Check:
Use full resource keys like limits.cpu [OK]
- Using short keys like 'cpu' instead of 'limits.cpu'
- Assuming missing namespace causes syntax error
- Using numeric values instead of strings
Solution
Step 1: Understand ResourceQuota limits
To limit pods and memory requests, specify those keys underhard. 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 BQuick Check:
Omit CPU limit to allow unlimited CPU [OK]
- Setting CPU limit to 0 or negative disables pods
- Using 'unlimited' as a value (not valid)
- Trying to limit CPU when unlimited is desired
Ready to prove it?
Pass the test and this pattern moves unknown
