Bird
Raised Fist0
Kubernetesdevops~5 mins

Horizontal Pod Autoscaler in Kubernetes - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Horizontal Pod Autoscaler (HPA) in Kubernetes?
HPA automatically adjusts the number of pods in a deployment or replica set based on observed CPU utilization or other select metrics to keep applications running smoothly.
Click to reveal answer
beginner
Which metric is most commonly used by HPA to scale pods?
CPU utilization is the most common metric used by HPA to decide when to add or remove pods.
Click to reveal answer
intermediate
What command creates a Horizontal Pod Autoscaler for a deployment named 'webapp' targeting 50% CPU usage?
kubectl autoscale deployment webapp --cpu-percent=50 --min=1 --max=5
Click to reveal answer
beginner
What happens if the CPU usage goes above the target set in HPA?
HPA increases the number of pods to distribute the load and reduce CPU usage per pod.
Click to reveal answer
intermediate
Can Horizontal Pod Autoscaler scale based on custom metrics other than CPU?
Yes, HPA can scale pods based on custom metrics like memory usage, request rate, or any metric exposed via the Kubernetes metrics API.
Click to reveal answer
What does Horizontal Pod Autoscaler adjust in Kubernetes?
ANumber of pods
BPod CPU speed
CNode count
DContainer image version
Which command creates an HPA for deployment 'app' with max 10 pods and target 60% CPU?
Akubectl autoscale deployment app --cpu-percent=60 --min=1 --max=10
Bkubectl scale deployment app --cpu=60 --max=10
Ckubectl set hpa app --cpu=60 --max=10
Dkubectl create hpa app --cpu=60 --max=10
If CPU usage is below the target, what does HPA do?
AIncreases pods
BDecreases pods
CRestarts pods
DDoes nothing
Which Kubernetes API is required for HPA to get metrics?
AAuthentication API
BStorage API
CNetworking API
DMetrics API
Can HPA scale pods based on memory usage?
AOnly if pods use less than 50% memory
BNo, only CPU is supported
CYes, with custom metrics configured
DOnly on nodes with special labels
Explain how Horizontal Pod Autoscaler helps maintain application performance in Kubernetes.
Think about how adding or removing pods affects workload handling.
You got /4 concepts.
    Describe the steps to create and verify a Horizontal Pod Autoscaler for a deployment.
    Focus on commands and what you check after creation.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a Horizontal Pod Autoscaler (HPA) in Kubernetes?
      easy
      A. Manually increase pod count when needed
      B. Automatically adjust the number of pods based on resource usage
      C. Scale the number of nodes in the cluster
      D. Backup pod data automatically

      Solution

      1. Step 1: Understand HPA functionality

        HPA monitors resource usage like CPU or memory and adjusts pod count automatically.
      2. Step 2: Differentiate from other scaling types

        HPA scales pods, not nodes or manual actions, and does not handle backups.
      3. Final Answer:

        Automatically adjust the number of pods based on resource usage -> Option B
      4. Quick Check:

        HPA = automatic pod scaling [OK]
      Hint: HPA changes pod count automatically by resource use [OK]
      Common Mistakes:
      • Confusing HPA with manual scaling
      • Thinking HPA scales nodes instead of pods
      • Assuming HPA handles backups
      2. Which of the following is the correct command to create a Horizontal Pod Autoscaler for a deployment named webapp targeting 50% CPU usage with minimum 2 and maximum 5 pods?
      easy
      A. kubectl autoscale deployment webapp --cpu=50 --min=2 --max=5
      B. kubectl create hpa webapp --cpu=50 --min-pods=2 --max-pods=5
      C. kubectl autoscale deployment webapp --cpu-percent=50 --min=2 --max=5
      D. kubectl autoscale deployment webapp --cpu-percent=50 --min-pods=2 --max-pods=5

      Solution

      1. Step 1: Recall correct kubectl autoscale syntax

        The correct command is kubectl autoscale deployment [name] --cpu-percent=[value] --min=[minPods] --max=[maxPods].
      2. Step 2: Match options with correct syntax

        kubectl autoscale deployment webapp --cpu-percent=50 --min=2 --max=5 matches the correct syntax exactly with proper flags and values.
      3. Final Answer:

        kubectl autoscale deployment webapp --cpu-percent=50 --min=2 --max=5 -> Option C
      4. Quick Check:

        Correct autoscale syntax = kubectl autoscale deployment webapp --cpu-percent=50 --min=2 --max=5 [OK]
      Hint: Use kubectl autoscale with --cpu-percent, --min, --max [OK]
      Common Mistakes:
      • Using wrong flags like --min-pods or --cpu
      • Misspelling 'autoscale' or 'deployment'
      • Omitting required flags
      3. Given this HPA YAML snippet:
      apiVersion: autoscaling/v2
      kind: HorizontalPodAutoscaler
      metadata:
        name: myapp-hpa
      spec:
        scaleTargetRef:
          apiVersion: apps/v1
          kind: Deployment
          name: myapp
        minReplicas: 1
        maxReplicas: 4
        metrics:
        - type: Resource
          resource:
            name: cpu
            target:
              type: Utilization
              averageUtilization: 60

      What happens if the CPU usage stays at 80% for a while?
      medium
      A. The number of pods will increase up to 4 to reduce CPU load
      B. The number of pods will decrease to 1
      C. The number of pods will stay the same regardless of CPU
      D. The deployment will be deleted automatically

      Solution

      1. Step 1: Understand HPA scaling behavior

        HPA increases pods when CPU usage exceeds target averageUtilization (60%). Here CPU is 80%, which is higher.
      2. Step 2: Check min and max replicas limits

        Pods can scale between 1 and 4. Since CPU is high, pods will increase up to max 4 to reduce load.
      3. Final Answer:

        The number of pods will increase up to 4 to reduce CPU load -> Option A
      4. Quick Check:

        CPU > target => pods increase [OK]
      Hint: CPU above target means pods scale up within min-max [OK]
      Common Mistakes:
      • Thinking pods scale down when CPU is high
      • Ignoring min/max replica limits
      • Assuming deployment deletion on high CPU
      4. You applied this HPA YAML but it does not scale pods as expected:
      apiVersion: autoscaling/v2
      kind: HorizontalPodAutoscaler
      metadata:
        name: test-hpa
      spec:
        scaleTargetRef:
          apiVersion: apps/v1
          kind: Deployment
          name: test-app
        minReplicas: 2
        maxReplicas: 5
        metrics:
        - type: Resource
          resource:
            name: memory
            target:
              type: Utilization
              averageUtilization: 70

      What is the most likely reason for no scaling?
      medium
      A. The pods do not expose memory metrics, so HPA has no data
      B. minReplicas is set too low
      C. maxReplicas is less than minReplicas
      D. The deployment name is incorrect

      Solution

      1. Step 1: Check metric type and data availability

        HPA needs metrics from pods. If memory metrics are not exposed or collected, HPA cannot scale.
      2. Step 2: Verify other spec values

        minReplicas and maxReplicas are valid (2 and 5). Deployment name looks correct. So likely missing metrics cause no scaling.
      3. Final Answer:

        The pods do not expose memory metrics, so HPA has no data -> Option A
      4. Quick Check:

        Missing metrics = no scaling [OK]
      Hint: HPA needs metrics; no metrics means no scaling [OK]
      Common Mistakes:
      • Assuming minReplicas too low stops scaling
      • Confusing minReplicas and maxReplicas values
      • Ignoring metric availability
      5. You want to create an HPA that scales a deployment named api-server based on both CPU usage (target 70%) and custom metric requests_per_second (target 100). The minimum pods should be 3 and maximum 10. Which YAML snippet correctly defines this HPA?
      hard
      A. apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: api-server-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: api-server minReplicas: 3 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70 - type: Resource resource: name: requests_per_second target: type: AverageValue averageValue: "100"
      B. apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: api-server-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: api-server minReplicas: 3 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: AverageValue averageValue: "70" - type: Pods pods: metric: name: requests_per_second target: type: AverageValue averageValue: "100"
      C. apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: api-server-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: api-server minReplicas: 3 maxReplicas: 10 targetCPUUtilizationPercentage: 70
      D. apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: api-server-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: api-server minReplicas: 3 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70 - type: Pods pods: metric: name: requests_per_second target: type: AverageValue averageValue: "100"

      Solution

      1. Step 1: Use autoscaling/v2 API for multiple metrics

        autoscaling/v2 supports multiple metrics including resource and custom metrics.
      2. Step 2: Check metric types and targets

        CPU uses type Utilization with averageUtilization; custom metric uses type Pods with metric name and AverageValue target.
      3. Step 3: Verify minReplicas and maxReplicas

        Minimum 3 and maximum 10 pods are correctly set in spec.
      4. Final Answer:

        YAML with cpu resource metric (Utilization) and pods metric for requests_per_second -> Option D
      5. Quick Check:

        Multiple metrics with correct types = apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: api-server-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: api-server minReplicas: 3 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70 - type: Pods pods: metric: name: requests_per_second target: type: AverageValue averageValue: "100" [OK]
      Hint: Use autoscaling/v2 with resource and pods metrics for multiple targets [OK]
      Common Mistakes:
      • Using autoscaling/v1 which does not support multiple metrics
      • Wrong metric types or target fields
      • Mixing resource and custom metric syntax incorrectly
      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