📖 Scenario: You are managing a Kubernetes cluster where you need to ensure that your application pods have proper memory allocation. This helps the cluster schedule pods efficiently and prevents pods from using too much memory and affecting others.
🎯 Goal: You will create a Kubernetes pod configuration YAML file that sets memory requests and limits for a container. This ensures the pod requests a minimum amount of memory and does not exceed a maximum amount.
📋 What You'll Learn
Create a pod manifest YAML with a container named myapp
Set the container's memory request to 128Mi
Set the container's memory limit to 256Mi
Use the resources field under the container spec to define requests and limits
💡 Why This Matters
🌍 Real World
Setting memory requests and limits is essential in real Kubernetes clusters to avoid resource contention and ensure fair resource distribution among applications.
💼 Career
Understanding how to configure resource requests and limits is a key skill for DevOps engineers and site reliability engineers managing containerized applications.
Progress0 / 4 steps
1
Create the basic pod YAML structure
Create a YAML manifest for a pod named memory-demo with one container named myapp using the image nginx. Include the apiVersion, kind, metadata, and spec sections.
Kubernetes
Hint
Start with the basic pod YAML structure including apiVersion, kind, metadata, and spec. Add one container named myapp with image nginx.
2
Add memory requests configuration
Add a resources section under the container myapp and set the memory request to 128Mi.
Kubernetes
Hint
Under the container, add resources: then requests: and set memory: "128Mi".
3
Add memory limits configuration
Extend the resources section to add a memory limit of 256Mi alongside the existing memory request.
Kubernetes
Hint
Under resources:, add limits: and set memory: "256Mi" to limit the container's memory usage.
4
Display the complete pod YAML
Print the complete YAML manifest for the pod named memory-demo with the container myapp having memory requests of 128Mi and limits of 256Mi.
Kubernetes
Hint
Show the full YAML manifest you created with memory requests and limits included.
Practice
(1/5)
1. What does the memory request specify in a Kubernetes pod configuration?
easy
A. The total memory available on the node
B. The maximum amount of memory the container can use
C. The amount of memory the container has currently used
D. The minimum amount of memory guaranteed for the container
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 D
2. Which of the following is the correct way to specify memory requests and limits in a Kubernetes pod YAML?
easy
A. resources:
requests:
memory: "256Mi"
limits:
memory: "512Mi"
B. resources:
memory:
request: 256
limit: 512
C. memory:
requests: 256Mi
limits: 512Mi
D. resources:
requests:
mem: 256Mi
limits:
mem: 512Mi
Solution
Step 1: Recall correct YAML structure for resources
In Kubernetes, memory requests and limits are under resources.requests.memory and resources.limits.memory with 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 A
Quick Check:
Correct YAML keys and units = resources:
requests:
memory: "256Mi"
limits:
memory: "512Mi" [OK]
Hint: Use resources.requests.memory and resources.limits.memory keys [OK]
Common Mistakes:
Using wrong keys like 'mem' or 'memory' outside resources
What happens if the container tries to use 300Mi of memory?
medium
A. The container is allowed to use 300Mi without issues
B. The container is throttled but not killed
C. The container is killed by Kubernetes for exceeding the memory limit
D. The container's memory usage is capped at 256Mi but continues running
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 C
Quick Check:
Memory usage > limit = container killed [OK]
Hint: Memory over limit kills container, not throttled [OK]
Common Mistakes:
Thinking container is throttled instead of killed
Confusing requests with limits
Assuming container can burst beyond limit safely
4. You set memory requests to 512Mi and limits to 256Mi in your pod YAML. What is the problem?
medium
A. Memory limits cannot be lower than 256Mi
B. Memory requests cannot be higher than memory limits
C. This configuration is valid and will work fine
D. Requests and limits must be equal
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 B
Quick Check:
Requests ≤ Limits rule violated [OK]
Hint: Requests must be ≤ limits, else config error [OK]
Common Mistakes:
Setting requests higher than limits
Assuming limits can be lower than requests
Thinking requests and limits can be any values
5. You want to ensure your pod always has at least 200Mi memory but never uses more than 400Mi. How should you set memory requests and limits in the pod spec?
hard
A. requests.memory: "200Mi" and limits.memory: "400Mi"
B. requests.memory: "400Mi" and limits.memory: "200Mi"
C. requests.memory: "200Mi" only, no limits
D. limits.memory: "400Mi" only, no requests
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 A
Quick Check:
Requests = 200Mi, Limits = 400Mi [OK]
Hint: Requests = min guaranteed, limits = max allowed [OK]
Common Mistakes:
Swapping requests and limits values
Setting only requests or only limits
Setting requests higher than limits
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.