티스토리 뷰

728x90

🌐 쿠버네티스 클라우드 네이티브 오토스케일링 방법

클라우드 네이티브 환경에서는 애플리케이션 부하에 따라 Pod 수를 자동으로 조정(오토스케일링) 하는 것이 필수적입니다.
특히, 다양한 언어/런타임으로 개발된 서비스를 통합 관리해야 할 때,
Prometheus 기반 메트릭 수집Custom Metrics 기반 Horizontal Pod Autoscaler (HPA) 조합은 가장 강력한 패턴입니다.

이번 글에서는 GitOps, Prometheus, Prometheus Adapter, HPA를 활용한
클라우드 네이티브 오토스케일링 방법을 소개합니다.


1. 오토스케일링 전체 흐름

클라우드 네이티브 오토스케일링의 핵심 구성은 다음과 같습니다:

  1. Git에 deployment.yaml, hpa.yaml 등을 작성하여 소스 관리
  2. Argo CD가 Git 저장소를 모니터링하고 Kubernetes 클러스터에 자동 적용
  3. Kubernetes에 배포된 애플리케이션은 /metrics 엔드포인트로 메트릭을 노출
  4. Prometheus가 메트릭을 수집(scrape)하여 저장
  5. Prometheus Adapter가 수집된 메트릭을 Kubernetes Custom Metrics API로 변환
  6. HPA가 Custom Metrics API를 통해 메트릭을 조회하여 스케일링을 결정
  7. Kubernetes가 필요에 따라 Pod 수를 자동으로 조정 (scale up/down)

2. 아키텍처 다이어그램

구성 요소 설명:

  • Git: 배포 정의 파일 관리
  • Argo CD: GitOps 방식으로 Kubernetes에 자동 배포
  • Application: 메트릭을 /metrics 경로로 노출
  • Prometheus: 메트릭 수집 및 저장
  • Prometheus Adapter: Prometheus 데이터를 Kubernetes Custom Metrics로 변환
  • HPA: 메트릭을 기준으로 Pod 수를 자동 조정

3. 세부 동작 시퀀스


4. 다양한 애플리케이션 지원

클라우드 네이티브 오토스케일링은 앱 종류에 상관없이 적용할 수 있습니다.
핵심은 메트릭만 Prometheus 포맷으로 노출하는 것입니다.

앱 종류 메트릭 노출 방법
Java (Spring Boot) /actuator/prometheus 내장 제공
Go promhttp 라이브러리 사용
Node.js prom-client 라이브러리 사용
Python prometheus_client 모듈 사용
기타 앱 Sidecar Exporter 사용 (ex. nginx-exporter)

→ 언어/플랫폼 관계없이 메트릭만 맞추면 통합 관리 가능


5. HPA를 통한 오토스케일링

HPA는 Custom Metrics API를 통해 메트릭 값을 조회하고, 다음 기준에 따라 스케일링을 수행합니다:

  • 메트릭이 임계치 초과: Pod 수 증가 (Scale Out)
  • 메트릭이 임계치 미만: Pod 수 감소 (Scale In)

HPA 설정 예시:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: my-app-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app
  minReplicas: 2
  maxReplicas: 10
  metrics:
    - type: External
      external:
        metric:
          name: http_requests_per_second
          selector:
            matchLabels:
              app: my-app
        target:
          type: Value
          value: 100

 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함