HPA (Horizontal Pod Autoscaler)
개념
수동 스케일링의 문제점 (Horizontal)
- 클러스터 운영자가 직접
kubectl top pod로 자원 사용량을 모니터링 해야한다. - 모니터링 하다가 특정 수치에 도달하면 직접
kubectl scale명령으로replica수를 조절해야한다. - 항상 모니터링해야 하며, 트래픽 급증 시 빠르게 대응하기 어렵다.
HPA
- CPU, 메모리, 혹은 커스텀 메트릭(예: 작업 큐 길이)을 지속적으로 모니터링 한다.
- 설정해 둔 기준치를 초과하면 자동으로
Pod개수를 증가시킨다. (Scale-out) - 사용량이 낮아지면 자동으로
Pod개수를 감소시킨다. (Scale-in) - 가능한 대상:
Deployment/StatefulSet/ReplicaSet
동작 방식
- 메트릭 수집
- Metric Server 필수
- 혹은,
DataDog나Dynatrace와 같은 외부 메트릭을 통합하여 동작하게도 가능하다.
Pod의 리소스request/limit기반으로 사용률을 계산하여 동작- 예: CPU limit = 500m일 때, 사용률 50%가 임계치라면 250m 사용시 스케일러가 동작한다.
생성 방법
Imperative(명령형) 방법
kubectl autoscale deployment myapp --cpu-percent=50 --min=1 --max=10
- cpu 메트릭 임계치가 50% 이며, 최소
Pod수는 1개 최대Pod수는 10개인HPA설정 생성
Declarative(선언적) 방법 - yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: myapp-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
apiVersion:autoscaling/v2kind:HorizontalPodAutoscalerspecscaleTargetRef: scale 할 대상 선택minReplicas: 최소Pod수maxReplicas: 최대Pod수metrics: 메트릭 설정
조회/삭제
kubectl get hpa
kubectl delete hpa myapp-hpa
레퍼런스
- https://kubernetes.io/ko/docs/tasks/run-application/horizontal-pod-autoscale/
- Udemy - Certified Kubernetes Administrator (CKA) with Practice Tests (Mumshad)- Udemy - Certified Kubernetes Administrator (CKA) with Practice Tests (Mumshad)