Kubernetes Horizontal Pod Autoscaler(HPA) 완벽 가이드! CPU·Memory 기반 Pod 자동 Scaling 구조 이해하기

Kubernetes 환경에서는 Application Traffic이 항상 일정하지 않습니다.

예를 들어 쇼핑몰, 검색 서비스, API 서버 같은 Application은 특정 시간대에 사용자 요청이 급증하고, 사용자가 적은 시간에는 Resource 사용량이 감소합니다.

이때 항상 많은 Pod를 유지하면 불필요한 Resource 비용이 발생하고, 반대로 적은 Pod만 유지하면 Traffic 증가 시 성능 저하가 발생할 수 있습니다.

Kubernetes에서는 이러한 문제를 해결하기 위해 Horizontal Pod Autoscaler(HPA)를 제공합니다.

HPA는 CPU, Memory 또는 Custom Metric을 기준으로 Pod 개수를 자동으로 증가하거나 감소시키는 Kubernetes Scaling 기능입니다.

구성 요소역할
HPAPod 개수 자동 조절
Metrics ServerResource 사용량 수집
DeploymentReplica 관리
PodApplication 실행

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 ServerCPU, Memory 수집
HPA ControllerScaling 판단
DeploymentReplica 변경
ReplicaSetPod 생성 관리

동작 과정:

단계내용
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 LengthMessage 처리
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 개수
metricsScaling 기준
behaviorScaling 속도 제어

운영 환경에서는 적절한 범위 설정이 중요합니다.

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는 관리 대상이 다릅니다.

구분HPACluster Autoscaler
대상PodNode
확장 단위ApplicationInfrastructure
기준MetricNode Resource 부족
목적서비스 확장서버 확장

두 기능을 함께 사용하면 완전한 자동 확장 구조를 만들 수 있습니다.

Kubernetes HPA와 VPA 차이

Scaling 방향이 다릅니다.

구분HPAVPA
변경 대상Pod 개수CPU·Memory 크기
방식수평 확장수직 확장
목적Traffic 대응Resource 최적화

Application 특성에 따라 선택합니다.

Kubernetes HPA 활용 사례

Application활용
Web Server사용자 증가 대응
API ServerRequest 증가 대응
Microservice서비스별 Scaling
Batch 처리작업량 조절

Cloud 환경에서 많이 활용되는 기능입니다.

Kubernetes HPA 운영 시 고려사항

자동 Scaling도 정확한 설정이 필요합니다.

항목설명
Resource Request정확한 기준 설정
Metric 선택서비스 특성 고려
maxReplicas비용 관리
Scaling Delay급격한 변화 방지

잘못된 설정은 불필요한 Pod 증가를 발생시킬 수 있습니다.

Kubernetes HPA 장점

장점설명
자동 ScalingTraffic 변화 대응
비용 최적화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 기능입니다.

구성 요소역할
HPAPod 자동 Scaling
Metrics Server사용량 측정
DeploymentReplica 관리
PodApplication 실행

HPA 구조를 이해하면 Kubernetes 환경에서 Traffic 변화에 자동 대응하고 효율적인 Cloud Native 운영 환경을 구축할 수 있습니다.

다음 글에서는 Kubernetes Vertical Pod Autoscaler(VPA) 완벽 가이드! Container Resource 자동 최적화 구조 이해하기를 알아보겠습니다.

댓글 남기기