https://drive.google.com/file/d/1i6DcsQp3H-3PkiLRQQR5dnn5O_dCDg_b/view?usp=sharing

๐Ÿ” YAML Breakdown

apiVersion: v1
kind: Pod
metadata:
  name: nnappone
  namespace: learning
  labels:
    app: nnappone
spec:
  containers:
    - name: crackone-app
      image: nginx
      resources:
        requests:
          memory: "150Mi"   # โ† Minimum guaranteed
        limits:
          memory: "250Mi"   # โ† Maximum allowed
# โŒ No CPU resources defined!

๐Ÿ” Key Observation:


๐Ÿ“Œ What Makes a Pod "Burstable"?

A Pod is Burstable if at least one of these is true:

โœ… Your Pod qualifies because:

๐ŸŽฏ Kubernetes Rule:

Burstable = Not BestEffort AND Not Guaranteed


๐Ÿ†š QoS Comparison (Memory Focus)

QoS Class Memory requests Memory limits CPU Defined? Eviction Priority
BestEffort โŒ โŒ โŒ ๐Ÿ”ด First
Burstable โœ… (150Mi) โœ… (250Mi) โŒ ๐ŸŸก Medium
Guaranteed โœ… (e.g., 200Mi) โœ… (=200Mi) โœ… (equal req/lim) ๐ŸŸข Last

๐Ÿ’ก Burstable Behavior:


๐Ÿงช Lab: Deploy Burstable Pod & Verify QoS

๐Ÿ”ง Steps

# 1. Create namespace
kubectl create namespace learning

# 2. Apply the Pod
kubectl apply -f pod-simple-qos-burstable.yml

# 3. Check Pod status
kubectl get pods -n learning

# 4. Describe Pod โ†’ check QoS Class and resources
kubectl describe pod nnappone -n learning | grep -A 5 -B 2 "QoS\\\\|Limits\\\\|Requests"

# โœ… Expected output:
# Requests:
#   memory: 150Mi
# Limits:
#   memory: 250Mi
# QoS Class: Burstable

# 5. (Optional) Extract QoS via JSONPath
kubectl get pod nnappone -n learning -o jsonpath='{.status.qosClass}{"\\\\n"}'

# 6. Clean up
kubectl delete pod nnappone -n learning
kubectl delete namespace learning