Bird
Raised Fist0
Kubernetesdevops~20 mins

Memory requests and limits in Kubernetes - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Memory Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding Memory Requests vs Limits

In Kubernetes, what happens if a container uses more memory than its memory request but less than its memory limit?

AThe container is terminated immediately by the system.
BThe container may be evicted depending on node pressure.
CThe container is allowed to use the extra memory without any restrictions.
DThe container's CPU usage is limited but memory usage is ignored.
Attempts:
2 left
💡 Hint

Think about how Kubernetes manages resources when the node is under memory pressure.

💻 Command Output
intermediate
2:00remaining
Check Memory Limits in a Pod

You run the command kubectl describe pod mypod. Which section shows the memory requests and limits for containers?

Kubernetes
kubectl describe pod mypod
AIn the <strong>Volumes</strong> section describing storage.
BUnder the <strong>Events</strong> section at the bottom of the output.
CIn the <strong>Conditions</strong> section near the top.
DUnder the <strong>Containers</strong> section, look for <code>Limits:</code> and <code>Requests:</code> lines.
Attempts:
2 left
💡 Hint

Memory settings are part of container resource specifications.

❓ Configuration
advanced
2:00remaining
YAML for Memory Requests and Limits

Which YAML snippet correctly sets a memory request of 256Mi and a memory limit of 512Mi for a container?

A
resources:
  requests:
    memory: 256MB
  limits:
    memory: 512MB
B
resources:
  memory:
    request: 256Mi
    limit: 512Mi
C
resources:
  requests:
    memory: "256Mi"
  limits:
    memory: "512Mi"
D
resources:
  requests:
    memory: 256
  limits:
    memory: 512
Attempts:
2 left
💡 Hint

Check the correct indentation and units for memory in Kubernetes YAML.

❓ Troubleshoot
advanced
2:00remaining
Pod Evicted Due to Memory Limit

A pod is repeatedly evicted with the message OOMKilled. What is the most likely cause?

AThe pod's memory usage exceeded its memory limit.
BThe pod's disk space was full.
CThe pod's CPU usage exceeded its CPU request.
DThe pod's network bandwidth was exceeded.
Attempts:
2 left
💡 Hint

OOMKilled means Out Of Memory killed by the system.

✅ Best Practice
expert
2:00remaining
Setting Memory Requests and Limits for Stability

Which practice helps ensure stable Kubernetes cluster performance regarding memory requests and limits?

ASet memory requests based on typical usage and limits slightly above peak usage to balance stability and flexibility.
BSet memory requests low and limits very high to allow containers to burst freely.
CSet memory requests equal to limits for all containers to avoid resource contention.
DDo not set memory requests or limits and let Kubernetes manage automatically.
Attempts:
2 left
💡 Hint

Think about balancing guaranteed resources and flexibility.

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

  1. 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.
  2. Step 2: Differentiate from memory limit

    Memory limit is the max memory allowed, not the minimum guaranteed.
  3. Final Answer:

    The minimum amount of memory guaranteed for the container -> Option D
  4. Quick Check:

    Memory request = minimum guaranteed memory [OK]
Hint: Requests = minimum guaranteed memory, limits = max allowed [OK]
Common Mistakes:
  • Confusing memory request with memory limit
  • Thinking request is the max memory
  • Assuming request is current usage
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

  1. 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".
  2. 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.
  3. Final Answer:

    resources: requests: memory: "256Mi" limits: memory: "512Mi" -> Option A
  4. 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
  • Omitting quotes or units for memory values
  • Swapping 'request' and 'requests'
3. Given this pod spec snippet:
resources:
  requests:
    memory: "128Mi"
  limits:
    memory: "256Mi"
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

  1. Step 1: Understand memory limit enforcement

    Memory limit is the maximum memory a container can use. If it exceeds this, Kubernetes kills the container.
  2. Step 2: Apply to given values

    The limit is 256Mi. Using 300Mi exceeds this limit, so the container will be terminated.
  3. Final Answer:

    The container is killed by Kubernetes for exceeding the memory limit -> Option C
  4. 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

  1. 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.
  2. Step 2: Analyze given values

    Requests = 512Mi, Limits = 256Mi. Requests are higher than limits, which is invalid and causes an error.
  3. Final Answer:

    Memory requests cannot be higher than memory limits -> Option B
  4. 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

  1. Step 1: Identify minimum guaranteed memory

    Minimum memory guaranteed is set by requests.memory, so set it to 200Mi.
  2. Step 2: Identify maximum allowed memory

    Maximum memory allowed is set by limits.memory, so set it to 400Mi.
  3. Step 3: Verify correct order

    Requests must be ≤ limits, so 200Mi ≤ 400Mi is valid.
  4. Final Answer:

    requests.memory: "200Mi" and limits.memory: "400Mi" -> Option A
  5. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard