What if one app could silently crash all your others just by using too much memory?
Why Memory requests and limits in Kubernetes? - Purpose & Use Cases
Imagine running many apps on a shared computer without telling it how much memory each app needs. Sometimes one app uses too much memory, making others slow or crash.
Manually guessing memory needs is slow and risky. If you give too little memory, apps crash. Too much memory wastes resources. Without limits, one app can hog all memory, breaking others.
Memory requests and limits let you tell Kubernetes exactly how much memory each app needs and the max it can use. This keeps apps stable and the system balanced automatically.
Run app without memory settings kubectl run myapp --image=myimage
Set memory request and limit kubectl run myapp --image=myimage --requests='memory=200Mi' --limits='memory=500Mi'
This lets Kubernetes manage resources smartly, keeping apps healthy and the system running smoothly even with many apps.
A company runs many microservices on the same cluster. Setting memory requests and limits prevents one service from crashing others during traffic spikes.
Manual memory management causes crashes and slowdowns.
Memory requests reserve needed memory; limits cap max usage.
Using them keeps apps stable and resources balanced automatically.
Practice
memory request specify in a Kubernetes pod configuration?Solution
Step 1: Understand memory request meaning
Memory request is the minimum memory Kubernetes guarantees to a container so it can run without being killed due to lack of memory.Step 2: Differentiate from memory limit
Memory limit is the max memory allowed, not the minimum guaranteed.Final Answer:
The minimum amount of memory guaranteed for the container -> Option DQuick Check:
Memory request = minimum guaranteed memory [OK]
- Confusing memory request with memory limit
- Thinking request is the max memory
- Assuming request is current usage
Solution
Step 1: Recall correct YAML structure for resources
In Kubernetes, memory requests and limits are underresources.requests.memoryandresources.limits.memorywith values as strings including units like "Mi".Step 2: Check each option for syntax correctness
resources: requests: memory: "256Mi" limits: memory: "512Mi" matches the correct syntax. Options A, B, and C use wrong keys or structure.Final Answer:
resources: requests: memory: "256Mi" limits: memory: "512Mi" -> Option AQuick Check:
Correct YAML keys and units = resources: requests: memory: "256Mi" limits: memory: "512Mi" [OK]
- Using wrong keys like 'mem' or 'memory' outside resources
- Omitting quotes or units for memory values
- Swapping 'request' and 'requests'
resources:
requests:
memory: "128Mi"
limits:
memory: "256Mi"
What happens if the container tries to use 300Mi of memory?Solution
Step 1: Understand memory limit enforcement
Memory limit is the maximum memory a container can use. If it exceeds this, Kubernetes kills the container.Step 2: Apply to given values
The limit is 256Mi. Using 300Mi exceeds this limit, so the container will be terminated.Final Answer:
The container is killed by Kubernetes for exceeding the memory limit -> Option CQuick Check:
Memory usage > limit = container killed [OK]
- Thinking container is throttled instead of killed
- Confusing requests with limits
- Assuming container can burst beyond limit safely
Solution
Step 1: Recall relationship between requests and limits
Memory requests must be less than or equal to memory limits. Requests are minimum guaranteed, limits are max allowed.Step 2: Analyze given values
Requests = 512Mi, Limits = 256Mi. Requests are higher than limits, which is invalid and causes an error.Final Answer:
Memory requests cannot be higher than memory limits -> Option BQuick Check:
Requests ≤ Limits rule violated [OK]
- Setting requests higher than limits
- Assuming limits can be lower than requests
- Thinking requests and limits can be any values
Solution
Step 1: Identify minimum guaranteed memory
Minimum memory guaranteed is set by requests.memory, so set it to 200Mi.Step 2: Identify maximum allowed memory
Maximum memory allowed is set by limits.memory, so set it to 400Mi.Step 3: Verify correct order
Requests must be ≤ limits, so 200Mi ≤ 400Mi is valid.Final Answer:
requests.memory: "200Mi" and limits.memory: "400Mi" -> Option AQuick Check:
Requests = 200Mi, Limits = 400Mi [OK]
- Swapping requests and limits values
- Setting only requests or only limits
- Setting requests higher than limits
Ready to prove it?
Pass the test and this pattern moves unknown
