Kubernetes 환경에서는 Application Traffic이 항상 일정하지 않습니다.
예를 들어 쇼핑몰, 검색 서비스, API 서버 같은 Application은 특정 시간대에 사용자 요청이 급증하고, 사용자가 적은 시간에는 Resource 사용량이 감소합니다.
이때 항상 많은 Pod를 유지하면 불필요한 Resource 비용이 발생하고, 반대로 적은 Pod만 유지하면 Traffic 증가 시 성능 저하가 발생할 수 있습니다.
Kubernetes에서는 이러한 문제를 해결하기 위해 Horizontal Pod Autoscaler(HPA)를 제공합니다.
HPA는 CPU, Memory 또는 Custom Metric을 기준으로 Pod 개수를 자동으로 증가하거나 감소시키는 Kubernetes Scaling 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| HPA | Pod 개수 자동 조절 |
| Metrics Server | Resource 사용량 수집 |
| Deployment | Replica 관리 |
| Pod | Application 실행 |
HPA 구조를 이해하면 Kubernetes 환경에서 Traffic 변화에 자동 대응하고 효율적인 Resource 운영 환경을 구축할 수 있습니다.
Kubernetes HPA란 무엇인가?
HPA(Horizontal Pod Autoscaler)는 Kubernetes에서 Pod Replica 개수를 자동으로 조절하는 Controller입니다.
현재 Application 상태를 확인하고 목표 Metric 값에 맞춰 Deployment Replica 수를 변경합니다.
기본 구조:
현재 상태
Pod 2개 실행
↓
CPU 사용량 증가
↓
HPA 감지
↓
Replica 증가
↓
Pod 추가 생성
반대로 사용량이 감소하면 Pod 개수를 줄여 Resource를 절약합니다.
Kubernetes HPA가 필요한 이유
운영 환경에서는 Application 부하가 계속 변합니다.
문제:
| 상황 | 문제 |
|---|---|
| Traffic 증가 | 서비스 응답 속도 저하 |
| Traffic 감소 | Resource 낭비 |
| 수동 Scaling | 운영 부담 증가 |
| 예측 어려운 부하 | 장애 위험 증가 |
HPA는 이러한 문제를 자동으로 해결합니다.
Kubernetes HPA 동작 구조
HPA는 Metric 데이터를 기반으로 Scaling 여부를 판단합니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| Metrics Server | CPU, Memory 수집 |
| HPA Controller | Scaling 판단 |
| Deployment | Replica 변경 |
| ReplicaSet | Pod 생성 관리 |
동작 과정:
| 단계 | 내용 |
|---|---|
| 1단계 | Pod Resource 사용량 확인 |
| 2단계 | 목표 Metric 비교 |
| 3단계 | 필요 Replica 계산 |
| 4단계 | Deployment 변경 |
| 5단계 | Pod 증가 또는 감소 |
Kubernetes Controller 구조를 활용하여 자동 Scaling을 수행합니다.
Kubernetes HPA Scaling 방식
HPA는 현재 Metric과 목표 Metric의 차이를 계산하여 Replica 개수를 결정합니다.
예:
현재:
Pod 2개
CPU 사용률:
90%
목표:
50%
결과:
↓
Pod 증가 필요
반대로:
현재 CPU:
20%
목표:
50%
↓
Pod 감소
Application 부하에 따라 자동 조절됩니다.
Kubernetes CPU 기반 HPA
가장 일반적인 방식은 CPU 사용률 기반 Scaling입니다.
예:
목표 CPU:
50%
현재 CPU:
80%
↓
Replica 증가
사용량:
30%
↓
Replica 감소
Web Server와 API Server 환경에서 많이 사용됩니다.
Kubernetes Memory 기반 HPA
Memory 사용량을 기준으로 Scaling할 수도 있습니다.
예:
Application Memory 증가
↓
HPA 감지
↓
Pod 증가
Memory 기반 Scaling은 Cache 사용량이 많거나 Memory 부하가 발생하는 Application에서 활용됩니다.
Kubernetes Custom Metrics HPA
CPU와 Memory 외에도 다양한 Metric을 사용할 수 있습니다.
예:
| Metric | 활용 |
|---|---|
| HTTP Request 수 | Web Traffic Scaling |
| Queue Length | Message 처리 |
| Transaction 수 | 서비스 부하 확인 |
Prometheus 같은 Monitoring 시스템과 연동하여 사용할 수 있습니다.
Kubernetes Metrics Server란?
Metrics Server는 Kubernetes Cluster 내부 Resource 사용량을 수집하는 Component입니다.
HPA는 Metrics Server에서 제공하는 데이터를 기반으로 Scaling 판단을 수행합니다.
구조:
Node
↓
Kubelet
↓
Metrics Server
↓
HPA
↓
Deployment
Metrics Server가 없으면 CPU·Memory 기반 HPA 동작이 어렵습니다.
Kubernetes HPA와 Deployment 관계
HPA는 직접 Pod를 생성하지 않습니다.
Deployment의 Replica 값을 변경하고 실제 Pod 생성은 ReplicaSet이 담당합니다.
구조:
HPA
↓
Deployment replicas 변경
↓
ReplicaSet
↓
Pod 생성
기존 Kubernetes Controller Architecture를 활용합니다.
Kubernetes HPA 주요 설정
HPA는 Scaling 범위를 설정할 수 있습니다.
| 설정 | 설명 |
|---|---|
| minReplicas | 최소 Pod 개수 |
| maxReplicas | 최대 Pod 개수 |
| metrics | Scaling 기준 |
| behavior | Scaling 속도 제어 |
운영 환경에서는 적절한 범위 설정이 중요합니다.
Kubernetes HPA Scale Up 과정
Traffic 증가:
사용자 증가
↓
Request 증가
↓
CPU 상승
↓
HPA 판단
↓
Replica 증가
↓
Pod 추가 생성
서비스 안정성을 유지합니다.
Kubernetes HPA Scale Down 과정
Traffic 감소:
사용자 감소
↓
Resource 사용량 감소
↓
HPA 판단
↓
Pod 감소
↓
Resource 절약
불필요한 비용을 줄일 수 있습니다.
Kubernetes HPA와 Cluster Autoscaler 차이
HPA와 Cluster Autoscaler는 관리 대상이 다릅니다.
| 구분 | HPA | Cluster Autoscaler |
|---|---|---|
| 대상 | Pod | Node |
| 확장 단위 | Application | Infrastructure |
| 기준 | Metric | Node Resource 부족 |
| 목적 | 서비스 확장 | 서버 확장 |
두 기능을 함께 사용하면 완전한 자동 확장 구조를 만들 수 있습니다.
Kubernetes HPA와 VPA 차이
Scaling 방향이 다릅니다.
| 구분 | HPA | VPA |
|---|---|---|
| 변경 대상 | Pod 개수 | CPU·Memory 크기 |
| 방식 | 수평 확장 | 수직 확장 |
| 목적 | Traffic 대응 | Resource 최적화 |
Application 특성에 따라 선택합니다.
Kubernetes HPA 활용 사례
| Application | 활용 |
|---|---|
| Web Server | 사용자 증가 대응 |
| API Server | Request 증가 대응 |
| Microservice | 서비스별 Scaling |
| Batch 처리 | 작업량 조절 |
Cloud 환경에서 많이 활용되는 기능입니다.
Kubernetes HPA 운영 시 고려사항
자동 Scaling도 정확한 설정이 필요합니다.
| 항목 | 설명 |
|---|---|
| Resource Request | 정확한 기준 설정 |
| Metric 선택 | 서비스 특성 고려 |
| maxReplicas | 비용 관리 |
| Scaling Delay | 급격한 변화 방지 |
잘못된 설정은 불필요한 Pod 증가를 발생시킬 수 있습니다.
Kubernetes HPA 장점
| 장점 | 설명 |
|---|---|
| 자동 Scaling | Traffic 변화 대응 |
| 비용 최적화 | Resource 절약 |
| 서비스 안정성 | 부하 대응 |
| 운영 자동화 | 수동 관리 감소 |
HPA는 Kubernetes 자동 운영 환경의 핵심 기능입니다.
자주 묻는 질문
HPA는 Pod를 직접 생성하나요?
아닙니다.
HPA는 Deployment Replica 수를 변경하고 ReplicaSet이 Pod를 생성합니다.
HPA는 CPU만 사용할 수 있나요?
아닙니다.
Memory와 Custom Metric도 사용할 수 있습니다.
HPA와 Cluster Autoscaler는 같이 사용할 수 있나요?
가능합니다.
HPA는 Pod를 조절하고 Cluster Autoscaler는 필요한 Node를 추가합니다.
마무리
Kubernetes Horizontal Pod Autoscaler(HPA)는 Application 부하 변화에 따라 Pod 개수를 자동 조절하는 Kubernetes 핵심 Scaling 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| HPA | Pod 자동 Scaling |
| Metrics Server | 사용량 측정 |
| Deployment | Replica 관리 |
| Pod | Application 실행 |
HPA 구조를 이해하면 Kubernetes 환경에서 Traffic 변화에 자동 대응하고 효율적인 Cloud Native 운영 환경을 구축할 수 있습니다.
다음 글에서는 Kubernetes Vertical Pod Autoscaler(VPA) 완벽 가이드! Container Resource 자동 최적화 구조 이해하기를 알아보겠습니다.