https://kubernetes.io/ko/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/
HorizontalPodAutoscaler 연습
HorizontalPodAutoscaler(약어: HPA)는 워크로드 리소스(예: 디플로이먼트 또는 스테이트풀셋)를 자동으로 업데이트하며, 워크로드의 크기를 수요에 맞게 자동으로 스케일링하는 것을 목표로 한다. 수평
kubernetes.io

HPA
Horizontal scaling means that the response to increased load is to deploy more Pods. This is different from vertical scaling, which for Kubernetes would mean assigning more resources (for example: memory or CPU) to the Pods that are already running for the workload.
- CPU, 메모리 등의 부하를 관찰하여 Deployment 등의 Pod 개수를 자동으로 늘리거나 줄이는 기능입니다.
- HPA는 Deployment의 scale 서브리소스를 통해 필요한 replica 수를 조정합니다.
- 그러면 Deployment/ReplicaSet 컨트롤러가 실제 Pod를 생성하거나 제거합니다.
중요한 것은 HPA는 노드를 늘려주는 것이 아닌 파드 개수를 늘려주는 것입니다.

- HPA는 Pod를 직접적으로 생성하지 않고 Deployment 리소스에 명령을 내려 파드의 개수를 늘립니다.
- HPA는 Metric을 기반으로 Deployment 같은 workload의 원하는 replica 수를 자동 조절하고, 실제 Pod 생성/삭제는 Deployment와 ReplicaSet이 수행합니다
HPA 속성
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: nginx-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx-deployment
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
| 속성 | 의미 |
| apiVersion: autoscaling/v2 | HPA의 API 버전. CPU뿐 아니라 Memory, Custom Metric 등 다양한 Metric 사용 가능 |
| kind: HorizontalPodAutoscaler | 생성할 Kubernetes 리소스가 HPA라는 의미 |
| metadata.name | HPA 리소스 이름 |
| spec.scaleTargetRef | HPA가 어떤 리소스의 replica를 조절할지 지정 |
| scaleTargetRef.apiVersion | 대상 리소스의 API 버전 |
| scaleTargetRef.kind | 대상 리소스 종류. 여기서는 Deployment |
| scaleTargetRef.name | 대상 Deployment 이름 |
| minReplicas: 2 | 아무리 부하가 낮아도 최소 Pod 2개 유지 |
| maxReplicas: 10 | 아무리 부하가 높아도 최대 Pod 10개까지만 증가 |
| metrics | HPA가 스케일링 판단에 사용할 Metric |
| type: Resource | CPU/Memory 같은 Kubernetes Resource Metric 사용 |
| resource.name: cpu | CPU 사용량 기준 |
| target.type: Utilization | CPU request 대비 사용률을 기준으로 판단 |
| averageUtilization: 50 | 대상 Pod들의 평균 CPU 사용률을 50% 정도로 유지하도록 replica 조절 |
* averageUtilization: 50은 CPU limit의 50%가 아닙니다.
Deployment에 다음처럼 CPU request가 있다면:
resources:
requests:
cpu: 500m
실제 사용량이 250m이면:
250m / 500m × 100
= 50%
가 되는 구조입니다.
'쿠버네티스' 카테고리의 다른 글
| [쿠버네티스] 쿠버네티스의 구조 (0) | 2026.09.12 |
|---|---|
| [쿠버네티스] Labels and Selectors (0) | 2026.09.02 |
| [쿠버네티스] Deployment - 2 (0) | 2026.09.01 |
| [쿠버네티스] Deployment - 1 (0) | 2026.08.12 |
| [쿠버네티스] 레플리카셋(ReplicaSet) (0) | 2026.08.04 |