Kubernetes 환경에서는 Application의 Traffic이 항상 일정하지 않습니다.
평상시에는 적은 Resource만 필요하지만, 사용자가 증가하면 더 많은 처리 능력이 필요합니다.
예:
평상시
↓
Pod 2개 운영
↓
갑작스러운 Traffic 증가
↓
CPU 사용률 상승
↓
Pod 자동 증가
↓
서비스 안정화
이러한 자동 확장 기능을 제공하는 것이 Kubernetes Horizontal Pod Autoscaler(HPA)입니다.
HPA는 CPU, Memory, Custom Metric 등을 기반으로 Pod 개수를 자동으로 조절하는 Kubernetes 핵심 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| HPA | Replica 자동 조정 |
| Metrics Server | 사용량 수집 |
| Controller Manager | Scaling 실행 |
| Deployment | Replica 관리 |
| Pod | 실제 Application |
HPA 구조를 이해하면 Cloud 환경에서 안정적인 Auto Scaling Architecture를 구축할 수 있습니다.
Kubernetes HPA란?
HPA(Horizontal Pod Autoscaler)는 Application의 Pod 개수를 자동으로 증가하거나 감소시키는 기능입니다.
기존 방식:
Traffic 증가
↓
관리자가 Pod 개수 변경
↓
Deployment 수정
HPA 방식:
Metric 확인
↓
현재 상태 분석
↓
Replica 변경
↓
자동 확장
운영 자동화를 가능하게 합니다.
Kubernetes HPA가 필요한 이유
Application Traffic은 계속 변합니다.
예:
쇼핑몰 이벤트
↓
접속자 증가
↓
API 요청 증가
↓
CPU 상승
↓
서비스 지연
HPA를 적용하면 필요한 만큼 Pod를 자동으로 확장합니다.
Kubernetes HPA Architecture
구조:
Pod
↓
Metrics Server
↓
HPA Controller
↓
Deployment / ReplicaSet
↓
Pod 증가 또는 감소
Metrics 기반으로 Replica 수를 조정합니다.
Kubernetes HPA 동작 과정
전체 흐름:
사용자 요청 증가
↓
Container 부하 증가
↓
Metrics Server 측정
↓
HPA Controller 계산
↓
Replica 변경
↓
새로운 Pod 생성
↓
Traffic 분산
자동 확장 과정입니다.
Kubernetes HPA 주요 Metric
HPA는 다양한 Metric을 사용할 수 있습니다.
| Metric | 설명 |
|---|---|
| CPU | CPU 사용률 |
| Memory | Memory 사용량 |
| Custom Metric | Application 지표 |
| External Metric | 외부 지표 |
운영 환경에서는 Custom Metric 활용도 증가하고 있습니다.
Kubernetes HPA CPU 기반 Scaling
가장 일반적인 방식입니다.
예:
Target CPU:
70%
현재:
90%
결과:
Pod 증가
CPU 부하에 따라 Replica 수가 조절됩니다.
Kubernetes HPA Memory 기반 Scaling
Memory 기준 확장도 가능합니다.
예:
Memory 사용량 증가
↓
HPA 감지
↓
Pod 증가
Memory Leak이나 Cache 증가 상황에서 활용됩니다.
Kubernetes HPA Replica 계산 방식
HPA는 목표값과 현재값을 비교합니다.
기본 계산:
현재 Metric 값 ÷ 목표 Metric 값
예:
현재 CPU:
90%
목표:
45%
결과:
Replica 증가 필요
Controller가 계산하여 조정합니다.
Kubernetes HPA 설정 예시
예:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: web-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: web
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
CPU 70% 이상이면 Pod 확장을 시작합니다.
Kubernetes HPA와 Metrics Server
HPA는 직접 CPU를 측정하지 않습니다.
구조:
kubelet
↓
Metrics Server
↓
HPA Controller
Metrics Server가 Resource 데이터를 제공합니다.
Kubernetes HPA와 Cluster Autoscaler 관계
두 기능은 함께 사용됩니다.
HPA:
Pod 증가
↓
Node 부족 발생
↓
Cluster Autoscaler
↓
Node 추가
구조:
HPA = Application 확장
Cluster Autoscaler = Infrastructure 확장
Cloud 환경에서 중요합니다.
Kubernetes HPA와 VPA 차이
| 구분 | HPA | VPA |
|---|---|---|
| 확장 방식 | Pod 개수 증가 | Resource 증가 |
| 관리 대상 | Replica | CPU·Memory |
| 목적 | Traffic 대응 | Resource 최적화 |
| 방식 | Horizontal | Vertical |
서로 다른 역할을 합니다.
Kubernetes HPA 장애 분석
확장이 동작하지 않을 경우 확인합니다.
HPA 상태 확인
kubectl get hpa
상세 확인
kubectl describe hpa web-hpa
확인:
- Metric 연결
- Current Value
- Desired Replica
- Event 오류
Kubernetes HPA와 Resource Request 관계
중요한 부분입니다.
CPU 기반 HPA는 Resource Request 값을 기준으로 계산합니다.
Request 설정 없음
↓
정확한 계산 불가
↓
Scaling 실패 가능
따라서 Request 설정이 필요합니다.
Kubernetes HPA 운영 전략
Production 환경:
Metric 설정
↓
최소 Replica 설정
↓
최대 Replica 제한
↓
Scaling 테스트
↓
Monitoring
안정적인 Auto Scaling 환경을 구축합니다.
Kubernetes HPA와 Cloud 비용 관리
HPA는 비용 최적화와 연결됩니다.
Traffic 감소
↓
Pod 감소
↓
사용 Resource 감소
↓
Cloud 비용 절감
효율적인 Infrastructure 운영이 가능합니다.
Kubernetes HPA Monitoring
확인 항목:
- Replica 변화
- CPU 사용률
- Scaling Event
- Response Time
Application 성능과 함께 확인해야 합니다.
Kubernetes HPA 장점
| 장점 | 설명 |
|---|---|
| 자동 확장 | Traffic 대응 |
| 안정성 증가 | 서비스 보호 |
| 비용 최적화 | 불필요한 Resource 감소 |
| 운영 자동화 | 수동 관리 감소 |
HPA는 Kubernetes 운영 자동화의 핵심 기능입니다.
자주 묻는 질문
HPA는 Node를 추가하나요?
아닙니다.
HPA는 Pod 개수만 조절하고 Node 추가는 Cluster Autoscaler가 담당합니다.
HPA와 VPA를 동시에 사용할 수 있나요?
가능하지만 Metric 기준을 잘 설계해야 합니다.
HPA는 CPU만 사용할 수 있나요?
아닙니다.
Memory와 Custom Metric도 사용할 수 있습니다.
마무리
Kubernetes HPA는 Application Traffic 변화에 따라 Pod 개수를 자동으로 조절하는 핵심 Autoscaling 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| Metrics Server | 사용량 측정 |
| HPA Controller | Replica 계산 |
| Deployment | Pod 관리 |
| Cluster Autoscaler | Node 확장 |
HPA 구조를 이해하면 Kubernetes 환경에서 안정적인 자동 확장 Architecture를 구축할 수 있습니다.
다음 글에서는 Kubernetes Infrastructure 자동 확장 영역인 Kubernetes Cluster Autoscaler 완벽 가이드! Node 자동 추가와 Cloud Infrastructure 확장 구조 이해하기를 진행하겠습니다.