본문으로 건너뛰기

4.8. HPA (Horizontal Pod Autoscaler)

개요

HPA (Horizontal Pod Autoscaler) 페이지는 MCM 컨트롤 플레인에서 관리하는 모든 HPA를 통합적으로 관리하는 페이지입니다. HPA는 CPU 사용률이나 메모리 사용량 등의 메트릭을 기반으로 파드 복제본 수를 자동으로 조정하는 Kubernetes 리소스입니다.

주요 목적:

  • 멀티클러스터 HPA 통합 관리
  • 자동 스케일링 설정 및 모니터링
  • 리소스 사용량 기반 동적 스케일링
  • PropagationPolicy를 통한 HPA 배포

HPA 사용 사례:

  • 트래픽 증가 시 자동 스케일 아웃
  • 리소스 사용률 기반 용량 최적화
  • 비용 효율적인 리소스 관리
  • 애플리케이션 가용성 보장
  • 피크 타임 대응 자동화

화면 구성

HPA 페이지는 테이블 형태로 HPA 목록을 표시합니다.

HPA 메인 화면

페이지 상단 요소

요소설명
네임스페이스 필터특정 네임스페이스의 HPA만 표시
새로고침 버튼HPA 목록 갱신
생성 버튼새 HPA 생성 다이얼로그 열기
검색창HPA 이름으로 검색

테이블 컬럼

컬럼설명정렬
이름HPA 이름
네임스페이스HPA가 속한 네임스페이스
스케일 대상스케일링 대상 리소스 (예: Deployment/my-deployment)
최소 복제본최소 유지 파드 수
최대 복제본최대 확장 파드 수
복제본현재 복제본 / 원하는 복제본
경과시간HPA 생성 후 경과 시간
작업편집/삭제 버튼-

복제본 표시

복제본 컬럼은 HPA의 현재 스케일링 상태를 표시합니다:

  • 형식: 현재 복제본/원하는 복제본
  • 예: 2/0 - 현재 2개 파드, 원하는 복제본 0개 (스케일 다운 대기)
  • 예: 3/5 - 현재 3개 파드, 5개로 스케일 업 진행 중

HPA 상세 정보

HPA 행을 클릭하면 상세 정보 패널이 열립니다.

HPA 상세 정보

상세 패널 헤더

요소설명
HPA 이름선택한 HPA 이름
네임스페이스HPA가 속한 네임스페이스
복제본 상태현재 복제본 / 원하는 복제본 (예: 2/0)

액션 버튼

버튼기능
새로고침HPA 정보 갱신
편집YAML 편집 모드
삭제HPA 삭제

탭 메뉴

개요 탭

HPA의 기본 정보, 스케일 구성, 메트릭 정보를 표시합니다.

기본 정보:

항목설명
이름HPA 이름
네임스페이스HPA가 속한 네임스페이스
상태복제본 상태 (예: 2/0 준비됨)
경과시간생성 후 경과 시간
생성일HPA 생성 일시

스케일 구성:

항목설명
스케일 대상스케일링 대상 리소스 (예: Deployment/my-deployment)
최소 복제본최소 유지 파드 수
최대 복제본최대 확장 파드 수
현재 복제본현재 실행 중인 파드 수
원하는 복제본HPA가 원하는 파드 수

메트릭:

HPA가 모니터링하는 메트릭 정보를 표시합니다:

항목설명
목표 CPU목표 CPU 사용률 (예: 75%)
목표 메모리목표 메모리 사용률 (설정된 경우)
사용자 정의 메트릭커스텀 메트릭 (설정된 경우)

멀티클러스터 정책 탭

HPA에 적용된 멀티 클러스터 정책 정보를 표시합니다.

멀티클러스터 정책 탭

전파 정책 (PropagationPolicy):

컬럼설명
이름PropagationPolicy 이름
네임스페이스정책이 속한 네임스페이스
범위네임스페이스 범위 정책 / 클러스터 범위 정책
대상 클러스터타겟 클러스터 목록

오버라이드 정책 (OverridePolicy):

클러스터별 커스텀 설정이 있는 경우 표시됩니다.

레이블 탭

HPA에 적용된 Kubernetes 레이블 목록을 표시합니다.

어노테이션 탭

HPA에 적용된 어노테이션 목록을 표시합니다.

이벤트 탭

HPA 관련 Kubernetes 이벤트를 표시합니다.

HPA 생성

새로운 HPA를 MCM 컨트롤 플레인에 생성합니다.

입력 항목

항목필수설명
이름HPA 이름
네임스페이스배포할 네임스페이스
스케일 대상스케일링 대상 리소스
최소 복제본최소 파드 수 (기본값: 1)
최대 복제본최대 파드 수
목표 CPU 사용률-목표 CPU 사용률 (%)
목표 메모리 사용률-목표 메모리 사용률 (%)

YAML 편집

"YAML 편집" 탭에서 HPA 정의를 직접 작성할 수 있습니다.

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: my-hpa
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-deployment
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 75

HPA 작업

HPA 편집

  1. HPA 선택
  2. 상세 패널에서 "편집" 버튼 클릭
  3. YAML 에디터에서 HPA 정의 수정
  4. "저장" 버튼 클릭

참고: HPA를 수정하면 즉시 스케일링 동작에 영향을 미칩니다. 운영 환경에서는 신중하게 변경하세요.

HPA 삭제

⚠️ 주의: HPA를 삭제하면 자동 스케일링이 중지됩니다. 삭제 후에는 수동으로 복제본 수를 관리해야 합니다.

  1. 삭제할 HPA 선택
  2. 상세 패널에서 "삭제" 버튼 클릭
  3. 확인 다이얼로그에서 HPA 이름 입력
  4. "삭제" 버튼 클릭

사용 예시

시나리오 1: CPU 기반 HPA 생성

  1. "생성" 버튼 클릭
  2. HPA 정보 입력:
    • 이름: web-hpa
    • 네임스페이스: production
    • 스케일 대상: Deployment/web-app
    • 최소 복제본: 2
    • 최대 복제본: 10
    • 목표 CPU 사용률: 70%
  3. "생성" 버튼 클릭
  4. PropagationPolicy로 타겟 클러스터 지정
  5. HPA 스케일링 동작 모니터링

시나리오 2: HPA 스케일링 상태 확인

  1. HPA 목록에서 확인할 HPA 클릭
  2. 개요 탭에서 스케일 구성 확인:
    • 현재 복제본 수
    • 원하는 복제본 수
    • 최소/최대 복제본 설정
  3. 메트릭 섹션에서 목표 사용률 확인
  4. 이벤트 탭에서 스케일링 이벤트 확인

시나리오 3: 메모리 기반 HPA 생성

  1. "생성" 버튼 클릭 → YAML 편집 탭 선택
  2. 다음 YAML 작성:
    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
    name: memory-hpa
    namespace: production
    spec:
    scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: memory-app
    minReplicas: 2
    maxReplicas: 8
    metrics:
    - type: Resource
    resource:
    name: memory
    target:
    type: Utilization
    averageUtilization: 80
  3. "생성" 버튼 클릭

시나리오 4: 복합 메트릭 HPA 생성

  1. "생성" 버튼 클릭 → YAML 편집 탭 선택
  2. CPU와 메모리 모두 설정:
    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
    name: multi-metric-hpa
    namespace: production
    spec:
    scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: app
    minReplicas: 3
    maxReplicas: 15
    metrics:
    - type: Resource
    resource:
    name: cpu
    target:
    type: Utilization
    averageUtilization: 70
    - type: Resource
    resource:
    name: memory
    target:
    type: Utilization
    averageUtilization: 80
  3. "생성" 버튼 클릭

시나리오 5: 멀티클러스터 HPA 배포

  1. HPA 생성
  2. PropagationPolicy 생성:
    • 리소스 셀렉터: HPA 지정
    • 타겟 클러스터: 배포할 클러스터 선택
  3. 상세 패널에서 "멀티클러스터 정책" 탭 확인
  4. 각 클러스터에서 HPA가 동작하는지 확인

관련 개념

HPA 동작 원리

HPA는 다음과 같은 주기로 동작합니다:

  1. 메트릭 수집: 지정된 메트릭(CPU, 메모리 등)을 주기적으로 수집
  2. 사용률 계산: 현재 사용률과 목표 사용률 비교
  3. 복제본 계산: 원하는 복제본 수 계산
  4. 스케일링 실행: 필요시 복제본 수 조정

계산 공식:

원하는 복제본 = ceil(현재 복제본 * (현재 메트릭 값 / 목표 메트릭 값))

HPA vs VPA

특성HPAVPA
스케일링 방향수평 (파드 수 증가)수직 (리소스 증가)
조정 대상복제본 수CPU/메모리 요청량
사용 사례트래픽 증가 대응리소스 최적화
중단 시간없음파드 재시작 필요

스케일링 정책

스케일 업:

  • 메트릭이 목표치를 초과하면 스케일 업
  • 기본적으로 빠르게 스케일 업
  • scaleUp 정책으로 속도 제어 가능

스케일 다운:

  • 메트릭이 목표치 이하로 떨어지면 스케일 다운
  • 기본적으로 안정화 기간(5분) 후 스케일 다운
  • scaleDown 정책으로 속도 제어 가능

스케일링 동작 설정

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: advanced-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
minReplicas: 2
maxReplicas: 10
behavior:
scaleUp:
stabilizationWindowSeconds: 0
policies:
- type: Percent
value: 100
periodSeconds: 15
scaleDown:
stabilizationWindowSeconds: 300
policies:
- type: Percent
value: 50
periodSeconds: 60
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70

메트릭 타입

타입설명사용 예
ResourceCPU, 메모리 등 리소스 메트릭CPU 사용률 70%
Pods파드 메트릭 (커스텀)초당 요청 수
ObjectKubernetes 오브젝트 메트릭Ingress 요청 수
External외부 메트릭대기열 길이

멀티클러스터 HPA 고려사항

MCM를 통해 HPA를 멀티클러스터에 배포할 때:

PropagationPolicy:

  • HPA를 여러 클러스터에 복제
  • 각 클러스터에서 독립적으로 스케일링 동작
  • 로컬 메트릭 기반으로 각 클러스터가 자체 스케일링

OverridePolicy:

  • 클러스터별로 다른 스케일링 설정 적용
  • 예: 클러스터별 다른 최대 복제본 수
  • 예: 클러스터별 다른 목표 사용률

주의사항:

  • HPA는 각 클러스터에서 독립적으로 동작
  • 전체 클러스터 수준의 글로벌 스케일링은 별도 구성 필요
  • 클러스터 간 트래픽 분산은 Ingress/Service 레벨에서 관리

HPA 모범 사례

  1. 적절한 목표 사용률 설정: 일반적으로 50-80% 권장
  2. 최소 복제본 설정: 고가용성을 위해 최소 2개 이상 권장
  3. 최대 복제본 제한: 리소스 비용 고려하여 상한선 설정
  4. 리소스 요청 설정: HPA가 정확히 동작하려면 Pod에 리소스 요청 필수
  5. 점진적 스케일링: 급격한 스케일링 방지를 위해 정책 설정
  6. 모니터링: HPA 이벤트 및 메트릭 지속적 모니터링

다음 단계