티스토리 뷰
728x90
🌐 쿠버네티스 클라우드 네이티브 오토스케일링 방법
클라우드 네이티브 환경에서는 애플리케이션 부하에 따라 Pod 수를 자동으로 조정(오토스케일링) 하는 것이 필수적입니다.
특히, 다양한 언어/런타임으로 개발된 서비스를 통합 관리해야 할 때,
Prometheus 기반 메트릭 수집과 Custom Metrics 기반 Horizontal Pod Autoscaler (HPA) 조합은 가장 강력한 패턴입니다.
이번 글에서는 GitOps, Prometheus, Prometheus Adapter, HPA를 활용한
클라우드 네이티브 오토스케일링 방법을 소개합니다.
1. 오토스케일링 전체 흐름
클라우드 네이티브 오토스케일링의 핵심 구성은 다음과 같습니다:
- Git에 deployment.yaml, hpa.yaml 등을 작성하여 소스 관리
- Argo CD가 Git 저장소를 모니터링하고 Kubernetes 클러스터에 자동 적용
- Kubernetes에 배포된 애플리케이션은 /metrics 엔드포인트로 메트릭을 노출
- Prometheus가 메트릭을 수집(scrape)하여 저장
- Prometheus Adapter가 수집된 메트릭을 Kubernetes Custom Metrics API로 변환
- HPA가 Custom Metrics API를 통해 메트릭을 조회하여 스케일링을 결정
- 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
'쿠버네티스' 카테고리의 다른 글
쿠버네티스 설치후 StorageClass 설치 방법 (0) | 2025.04.12 |
---|---|
MetalLB와 물리 장비 연동을 통한 Kubernetes LoadBalancer 구성 정리 (0) | 2025.04.06 |
ConfigMap을 활용한 유용한 응용 팁 (0) | 2025.04.06 |
Kubernetes ConfigMap을 이용해서 데이터를 마운트 (0) | 2025.04.06 |
쿠버네티스 시크릿(Secret) 자동 변경 (0) | 2025.04.06 |