Try Sailor Cloud - 25% off!

Claim Now
Back to all posts

Kubernetes Resource Management: Requests and Limits

Kubernetes Resource Management: Requests and Limits

Proper resource management prevents resource contention and ensures application stability.

Requests vs Limits

ConceptDescription
RequestsGuaranteed resources for scheduling
LimitsMaximum resources allowed

Setting Resources

spec:
  containers:
  - name: app
    image: my-app
    resources:
      requests:
        memory: "256Mi"
        cpu: "250m"
      limits:
        memory: "512Mi"
        cpu: "500m"

CPU Units

  • 1 = 1 vCPU/core
  • 100m = 100 millicores = 0.1 CPU
  • 500m = 0.5 CPU

Memory Units

  • Ki = Kibibytes (1024 bytes)
  • Mi = Mebibytes (1024 Ki)
  • Gi = Gibibytes (1024 Mi)

Quality of Service (QoS) Classes

Guaranteed

All containers have equal requests and limits:

resources:
  requests:
    memory: "256Mi"
    cpu: "500m"
  limits:
    memory: "256Mi"
    cpu: "500m"

Burstable

At least one container has requests < limits:

resources:
  requests:
    memory: "128Mi"
  limits:
    memory: "256Mi"

BestEffort

No requests or limits set. First to be evicted under pressure.

What Happens When Limits Exceeded?

ResourceBehavior
CPUThrottled (slowed down)
MemoryOOMKilled (terminated)

LimitRange

Set namespace defaults and constraints:

apiVersion: v1
kind: LimitRange
metadata:
  name: cpu-mem-limits
spec:
  limits:
  - default:
      cpu: 500m
      memory: 256Mi
    defaultRequest:
      cpu: 100m
      memory: 128Mi
    max:
      cpu: "2"
      memory: 1Gi
    min:
      cpu: 50m
      memory: 64Mi
    type: Container

ResourceQuota

Limit total resources per namespace:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
spec:
  hard:
    requests.cpu: "10"
    requests.memory: 20Gi
    limits.cpu: "20"
    limits.memory: 40Gi

Best Practices

  1. Always set requests: Ensures proper scheduling
  2. Set limits: Prevents runaway containers
  3. Start conservative: Monitor and adjust
  4. Use LimitRanges: Enforce defaults
  5. Monitor usage: Right-size based on actual usage

Debugging Resources

# Check resource usage
kubectl top pods
kubectl top nodes

# Describe pod resources
kubectl describe pod my-pod | grep -A 10 Resources

Practice Resource Management

Resource questions appear in CKA and CKAD exams. Practice at Sailor.sh.

Start Free Practice