Bird
Raised Fist0
Kubernetesdevops~5 mins

Resource requests and limits in Kubernetes - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Resource requests and limits
O(p x n)
Understanding Time Complexity

We want to understand how setting resource requests and limits affects scheduling and running containers in Kubernetes.

How does the system's work grow as we add more containers with these settings?

Scenario Under Consideration

Analyze the time complexity of scheduling pods with resource requests and limits.

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: app
    image: nginx
    resources:
      requests:
        cpu: "100m"
        memory: "200Mi"
      limits:
        cpu: "200m"
        memory: "400Mi"

This pod requests and limits CPU and memory resources for scheduling and runtime enforcement.

Identify Repeating Operations
  • Primary operation: Scheduler checks each node's available resources against pod requests.
  • How many times: For each pod, the scheduler loops through all nodes to find a fit.
How Execution Grows With Input

As the number of pods increases, the scheduler must check more pods against nodes.

Input Size (pods)Approx. Operations (node checks)
1010 x number_of_nodes
100100 x number_of_nodes
10001000 x number_of_nodes

Pattern observation: The work grows linearly with the number of pods times the number of nodes.

Final Time Complexity

Time Complexity: O(p x n)

This means the scheduler's work grows proportionally to the number of pods times the number of nodes.

Common Mistake

[X] Wrong: "Scheduling time depends only on the number of pods."

[OK] Correct: The scheduler must check each pod against all nodes, so nodes count matters too.

Interview Connect

Understanding how resource requests and limits affect scheduling helps you explain system behavior clearly and shows you grasp real cluster operations.

Self-Check

"What if the scheduler used a cache to track node resources instead of checking all nodes each time? How would the time complexity change?"

Practice

(1/5)
1. What does setting a resource request for a container in Kubernetes guarantee?
easy
A. The container will get at least the requested CPU and memory resources.
B. The container can never use more than the requested resources.
C. The container will be restarted if it uses more than the requested resources.
D. The container will share resources equally with all other containers.

Solution

  1. Step 1: Understand resource requests in Kubernetes

    Resource requests specify the minimum CPU and memory a container needs to run properly.
  2. Step 2: Clarify what is guaranteed by requests

    Kubernetes ensures the container gets at least the requested resources but does not limit usage to that amount.
  3. Final Answer:

    The container will get at least the requested CPU and memory resources. -> Option A
  4. Quick Check:

    Resource request = minimum guaranteed resources [OK]
Hint: Requests guarantee minimum resources, limits cap maximum [OK]
Common Mistakes:
  • Confusing requests with limits
  • Thinking requests cap usage
  • Assuming requests cause restarts
2. Which of the following is the correct way to specify CPU and memory requests in a Kubernetes Pod YAML?
easy
A. resources: requests: cpu: "0.5" memory: "256MB"
B. resources: limits: cpu: 500 memory: 256
C. resources: requests: cpu: 500m memory: 256MiB
D. resources: requests: cpu: "500m" memory: "256Mi"

Solution

  1. Step 1: Review correct syntax for resource requests

    CPU requests use millicores with "m" suffix as string, memory uses Mi or Gi units as string.
  2. Step 2: Identify correct option

    resources: requests: cpu: "500m" memory: "256Mi" uses "500m" for CPU and "256Mi" for memory correctly as strings.
  3. Final Answer:

    resources: requests: cpu: "500m" memory: "256Mi" -> Option D
  4. Quick Check:

    CPU in millicores and memory in Mi with quotes [OK]
Hint: Use quotes and correct units like "500m" and "256Mi" [OK]
Common Mistakes:
  • Omitting quotes around resource values
  • Using wrong units like MB instead of Mi
  • Specifying CPU as plain number without m
3. Given this Pod spec snippet, what is the maximum CPU the container can use?
resources:
  requests:
    cpu: "200m"
  limits:
    cpu: "500m"
medium
A. 500 millicores
B. 200 millicores
C. 700 millicores
D. Unlimited CPU

Solution

  1. Step 1: Understand CPU requests and limits

    Requests set minimum guaranteed CPU, limits set maximum allowed CPU usage.
  2. Step 2: Identify maximum CPU from limits

    The limit is "500m", meaning 500 millicores is the max CPU the container can use.
  3. Final Answer:

    500 millicores -> Option A
  4. Quick Check:

    CPU limit = max CPU usage [OK]
Hint: Limits define max usage, requests define minimum [OK]
Common Mistakes:
  • Confusing requests with limits
  • Adding requests and limits incorrectly
  • Assuming no max limit if requests set
4. You set a memory limit of 256Mi but forgot to set a memory request. What is the likely effect on your Pod scheduling?
medium
A. The Pod will use unlimited memory since request is missing.
B. The Pod may be scheduled with no guaranteed memory, risking eviction under pressure.
C. The Pod will be scheduled with 256Mi guaranteed memory automatically.
D. The Pod will fail to start due to missing memory request.

Solution

  1. Step 1: Understand default behavior when requests are missing

    If memory request is not set, Kubernetes treats it as zero, meaning no guaranteed memory.
  2. Step 2: Effect on scheduling and eviction

    Pod may be scheduled but can be evicted if node memory is low because it has no guaranteed reservation.
  3. Final Answer:

    The Pod may be scheduled with no guaranteed memory, risking eviction under pressure. -> Option B
  4. Quick Check:

    Missing request means no guaranteed resources [OK]
Hint: Always set requests to guarantee resources and avoid eviction [OK]
Common Mistakes:
  • Assuming limits imply requests
  • Thinking Pod fails without requests
  • Believing missing requests mean unlimited resources
5. You want to ensure a container always has at least 100m CPU and 128Mi memory but never uses more than 300m CPU and 256Mi memory. Which is the correct resource configuration snippet?
hard
A. resources: requests: cpu: "300m" memory: "256Mi" limits: cpu: "100m" memory: "128Mi"
B. resources: limits: cpu: "100m" memory: "128Mi" requests: cpu: "300m" memory: "256Mi"
C. resources: requests: cpu: "100m" memory: "128Mi" limits: cpu: "300m" memory: "256Mi"
D. resources: requests: cpu: "100" memory: "128" limits: cpu: "300" memory: "256"

Solution

  1. Step 1: Match minimum guaranteed resources to requests

    Requests must be set to 100m CPU and 128Mi memory to guarantee minimum.
  2. Step 2: Match maximum allowed resources to limits

    Limits must be set to 300m CPU and 256Mi memory to cap usage.
  3. Step 3: Verify correct syntax and order

    resources: requests: cpu: "100m" memory: "128Mi" limits: cpu: "300m" memory: "256Mi" correctly sets requests first, then limits with proper units and quotes.
  4. Final Answer:

    resources: requests: cpu: "100m" memory: "128Mi" limits: cpu: "300m" memory: "256Mi" -> Option C
  5. Quick Check:

    Requests = min, Limits = max with correct units [OK]
Hint: Requests are min, limits are max; use correct units and quotes [OK]
Common Mistakes:
  • Swapping requests and limits
  • Omitting units or quotes
  • Using plain numbers without units
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