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?
The correct syntax uses 'kubectl autoscale deployment' with --cpu-percent, --min, and --max flags.
If CPU usage is below the target, what does HPA do?
AIncreases pods
BDecreases pods
CRestarts pods
DDoes nothing
✗ Incorrect
HPA reduces the number of pods to save resources when CPU usage is low.
Which Kubernetes API is required for HPA to get metrics?
AAuthentication API
BStorage API
CNetworking API
DMetrics API
✗ Incorrect
HPA relies on the Metrics API to fetch CPU and custom metrics.
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
✗ Incorrect
HPA supports custom metrics like memory if properly configured.
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
Step 1: Understand HPA functionality
HPA monitors resource usage like CPU or memory and adjusts pod count automatically.
Step 2: Differentiate from other scaling types
HPA scales pods, not nodes or manual actions, and does not handle backups.
Final Answer:
Automatically adjust the number of pods based on resource usage -> Option B
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
Step 1: Recall correct kubectl autoscale syntax
The correct command is kubectl autoscale deployment [name] --cpu-percent=[value] --min=[minPods] --max=[maxPods].
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.
Final Answer:
kubectl autoscale deployment webapp --cpu-percent=50 --min=2 --max=5 -> Option C
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
Step 1: Check metric type and data availability
HPA needs metrics from pods. If memory metrics are not exposed or collected, HPA cannot scale.
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.
Final Answer:
The pods do not expose memory metrics, so HPA has no data -> Option A
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?