Bird
Raised Fist0
Kubernetesdevops~20 mins

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

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

In Kubernetes, what happens when a container exceeds its CPU request but stays below its CPU limit?

AThe container is allowed to use unlimited CPU resources.
BThe container is throttled to stay within the CPU limit but can use more CPU than requested.
CThe container is paused until CPU usage drops below the request.
DThe container is immediately terminated for exceeding the CPU request.
Attempts:
2 left
💡 Hint

Think about how Kubernetes manages guaranteed CPU resources versus maximum allowed CPU.

💻 Command Output
intermediate
1:30remaining
CPU Limit Enforcement Output

Given this pod spec snippet with CPU requests and limits, what will be the CPU usage behavior if the container tries to use 2 CPUs but the limit is set to 1 CPU?

resources:
  requests:
    cpu: "500m"
  limits:
    cpu: "1"
AThe container will be throttled and cannot use more than 1 CPU.
BThe container will use 2 CPUs without restriction.
CThe container will be killed for exceeding the CPU limit.
DThe container will only use 500m CPU and no more.
Attempts:
2 left
💡 Hint

CPU limits set the maximum CPU a container can use.

❓ Configuration
advanced
2:00remaining
Correct CPU Resource Configuration

Which of the following Kubernetes container resource configurations correctly sets a CPU request of 250m and a CPU limit of 500m?

A
resources:
  requests:
    cpu: "250m"
  limits:
    cpu: "500m"
B
resources:
  requests:
    cpu: 250
  limits:
    cpu: 500
C
resources:
  requests:
    cpu: "0.25"
  limits:
    cpu: "0.5"
D
resources:
  requests:
    cpu: "250"
  limits:
    cpu: "500"
Attempts:
2 left
💡 Hint

CPU values in Kubernetes are usually specified in millicores with 'm' suffix.

❓ Troubleshoot
advanced
1:30remaining
Diagnosing CPU Throttling Issues

A developer complains their pod is running slower than expected. The pod has CPU requests and limits set. Which kubectl command helps check if the pod is being CPU throttled?

Akubectl exec <pod-name> -- top
Bkubectl get pods --all-namespaces
Ckubectl logs <pod-name>
Dkubectl describe pod <pod-name>
Attempts:
2 left
💡 Hint

Look for events and resource usage details in pod descriptions.

🔀 Workflow
expert
2:30remaining
Optimizing CPU Requests and Limits for a Production Pod

You want to optimize CPU resource settings for a production pod that sometimes spikes in CPU usage but should not be throttled during spikes. Which approach is best?

ASet CPU request to maximum spike and no CPU limit.
BSet CPU request and limit both to the maximum expected spike.
CSet CPU request to average usage and CPU limit to maximum expected spike.
DSet CPU request to zero and CPU limit to maximum spike.
Attempts:
2 left
💡 Hint

Think about balancing guaranteed resources and allowing burst capacity.

Practice

(1/5)
1. What does setting a cpu request in a Kubernetes pod specification do?
easy
A. It guarantees a minimum amount of CPU for the container.
B. It limits the maximum CPU the container can use.
C. It sets the CPU priority for the container.
D. It reserves memory for the container.

Solution

  1. Step 1: Understand CPU request meaning

    CPU request is the minimum CPU resource Kubernetes guarantees to a container.
  2. Step 2: Differentiate from CPU limit

    CPU limit sets the maximum CPU usage, not the minimum guaranteed.
  3. Final Answer:

    It guarantees a minimum amount of CPU for the container. -> Option A
  4. Quick Check:

    CPU request = minimum CPU guaranteed [OK]
Hint: Requests guarantee minimum CPU, limits cap maximum CPU [OK]
Common Mistakes:
  • Confusing CPU request with CPU limit
  • Thinking requests set maximum CPU
  • Mixing CPU with memory resource
2. Which of the following is the correct way to specify CPU requests and limits in a pod YAML?
easy
A. resources: cpu: request: 500m limit: 1
B. resources: requests: cpu: 500 limits: cpu: 1000
C. resources: requests: cpu: "500m" limits: cpu: "1"
D. resources: requests: cpu: "1.0" limits: cpu: "0.5"

Solution

  1. Step 1: Check correct YAML structure for resources

    The correct keys are requests and limits under resources, with CPU values as strings with units like "500m" or "1".
  2. Step 2: Validate resources: requests: cpu: "500m" limits: cpu: "1" format

    resources: requests: cpu: "500m" limits: cpu: "1" uses correct keys and units: "500m" means 0.5 CPU, "1" means 1 CPU core.
  3. Final Answer:

    resources: requests: cpu: "500m" limits: cpu: "1" -> Option C
  4. Quick Check:

    Correct YAML keys and CPU units = resources: requests: cpu: "500m" limits: cpu: "1" [OK]
Hint: Use 'requests' and 'limits' keys with CPU as string with units [OK]
Common Mistakes:
  • Using 'request' instead of 'requests'
  • Specifying CPU as numbers without quotes or units
  • Mixing up 'cpu' and 'memory' keys
3. Given this pod spec snippet:
resources:
  requests:
    cpu: "200m"
  limits:
    cpu: "500m"
What happens if the container tries to use 600m CPU?
medium
A. The container will be killed immediately.
B. The container will be throttled to 500m CPU.
C. The container will be allowed to use 600m CPU.
D. The container will be throttled to 200m CPU.

Solution

  1. Step 1: Understand CPU limit effect

    The CPU limit is the maximum CPU the container can use. Here it is 500m (0.5 CPU).
  2. Step 2: Predict container behavior when exceeding limit

    If the container tries to use 600m CPU, Kubernetes throttles it to the limit, 500m CPU.
  3. Final Answer:

    The container will be throttled to 500m CPU. -> Option B
  4. Quick Check:

    CPU limit caps usage = throttled to 500m [OK]
Hint: CPU usage above limit gets throttled to limit [OK]
Common Mistakes:
  • Thinking container can exceed CPU limit
  • Confusing throttling with killing container
  • Assuming CPU request is the max limit
4. You wrote this pod spec:
resources:
  requests:
    cpu: "100m"
  limits:
    cpu: "50m"
What is wrong with this configuration?
medium
A. CPU requests and limits cannot be set together.
B. CPU request is less than CPU limit, which is invalid.
C. CPU values must be integers, not strings.
D. CPU limit is less than CPU request, which is invalid.

Solution

  1. Step 1: Compare CPU request and limit values

    CPU request is 100m (0.1 CPU), CPU limit is 50m (0.05 CPU).
  2. Step 2: Validate Kubernetes rules for requests and limits

    CPU limit must be equal or greater than CPU request. Here limit < request, which is invalid.
  3. Final Answer:

    CPU limit is less than CPU request, which is invalid. -> Option D
  4. Quick Check:

    Limit >= Request rule violated = CPU limit is less than CPU request, which is invalid. [OK]
Hint: Limit must be >= request, else config is invalid [OK]
Common Mistakes:
  • Setting limit less than request
  • Thinking CPU values must be integers
  • Believing requests and limits can't coexist
5. You want to ensure a container always gets at least 250m CPU but never uses more than 750m CPU. Which YAML snippet correctly sets this with CPU requests and limits?
hard
A. resources: requests: cpu: "250m" limits: cpu: "750m"
B. resources: requests: cpu: "750m" limits: cpu: "250m"
C. resources: requests: cpu: 0.25 limits: cpu: 0.75
D. resources: requests: cpu: "0.75" limits: cpu: "0.25"

Solution

  1. Step 1: Identify correct CPU units and values

    CPU values can be specified as millicores with 'm' suffix, e.g., "250m" for 0.25 CPU.
  2. Step 2: Check request and limit order

    Request must be less than or equal to limit. resources: requests: cpu: "250m" limits: cpu: "750m" sets request to 250m and limit to 750m correctly.
  3. Final Answer:

    resources: requests: cpu: "250m" limits: cpu: "750m" -> Option A
  4. Quick Check:

    Request 250m ≤ Limit 750m with correct units = resources: requests: cpu: "250m" limits: cpu: "750m" [OK]
Hint: Use millicores with 'm' and keep request ≤ limit [OK]
Common Mistakes:
  • Swapping request and limit values
  • Using decimal numbers without quotes
  • Not using millicores for fractional CPU
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