쿠버네티스에서 대형 언어모델(LLM)을 안정적으로 자동 확장하면서도 월별 인프라 비용을 반으로 낮추는 실무 체크리스트와 설정 예시를 단계별로 정리한다.
- 핵심 지표로는 큐 길이(queue length), GPU util, p99 응답시간을 삼아 복합 스케일링 전략을 설계해야 한다.
- 배치(동시처리), 라이트 모델/퀀타이즈 모델 분리, 스팟/프리엠티브 노드 활용으로 비용 40~80% 절감 가능.
- KEDA + HPA(커스텀 메트릭) + 클러스터 오토스케일러 조합이 현실적이며, GPU 워크로드는 Vertical(노드 타입) 고려가 필수.
매일 엑셀 반복 작업에 시달리던 실무자 A씨는 사내 문서 검색에 LLM을 도입하려 한다. AI 서비스 도입을 고민하던 기획자 B씨는 실시간 가격 제안 엔진에 LLM을 쓰려 할 때 예측되는 비용과 지연을 검증해야 한다. 인공지능 인사이트 에디토리얼 팀의 분석 결과, 두 사례 모두에서 ‘단일 전략’이 아닌 복합적 오토스케일링 설계가 핵심이었다.
K8s LLM 자동스케일링 실제 사례 분석 — A씨의 사내 검색과 B씨의 실시간 엔진
A씨는 사내 문서 검색용 LLM을 벡터 DB와 결합해 도입했다. 낮에는 QPS가 높지만 야간에는 거의 0이 되는 패턴이었다. 초기에는 모델을 항상 3레플리카로 띄웠고 월비용이 급증했다. B씨는 실시간 가격 제안 엔진을 운영하면서 피크(월요일 오전)와 평상시 트래픽 차이가 10배가량 벌어졌다. 두 사례 모두에서 다음 조치를 통해 비용과 지연을 개선했다.
적용한 실무적 조치
- 트래픽 기반 HPA + 큐 길이(작업자 큐) 기반 KEDA 이벤트 스케일링 병행
- 대형 모델은 온디맨드(항시 가동) 대신 요청량이 낮은 시간대에만 가동하는 슬롯 할당(예: 예약 스케일인) 적용
- 배칭(batch inference)과 동시처리(concurrency) 설정으로 GPU 유효 사용률 상승
- 스팟(프리엠티브) 노드와 온디맨드 노드를 혼합하여 비용 리스크 분산

실무 체크포인트
- 모델 특성에 따라 ‘수평적 확장(HPA)’이 적합한지, ‘노드 타입 변경/노드 그룹 확장’이 적합한지 구분(대형 단일-GPU 모델은 노드 타입/수직·노드 레벨이 중요).
- 모니터링은 Prometheus + custom-metrics-adapter(또는 KEDA)를 통해 GPU memory/free, queue_length, request_latency를 노출.
K8s LLM 운영 전략 비교표 — 비용·성능 관점으로 본 선택 가이드
| 전략 | 월평균 비용(예시, USD) | p99 레이턴시(예시) | 권장 상황 |
|---|---|---|---|
| 항상 3 레플리카(항상 ON) | $12,000 | 80–200ms | 지연 절대 허용 불가, 예측 트래픽 일정 |
| HPA(요청수/CPU)만 사용 | $8,500 | 120–300ms | 경량 모델, 메모리 제약 작을 때 |
| KEDA(큐 길이)+HPA(지표 복합) | $4,200 | 120–220ms | 비동기/배치 워크로드(문서 처리 등) |
| KEDA + 배칭 + 스팟 노드 혼합 | $2,500 | 150–350ms | 저비용 우선, 지연 허용 범위 존재 |
| 모델 경량화(퀀타이즈)+MIG(A100) 분할 | $3,000 | 100–200ms | 여러 소규모 모델 동시 운영 |
위 수치는 환경(클라우드/인스턴스/모델)에 따라 달라진다. 인공지능 인사이트 에디토리얼 팀의 실험 결과, ‘KEDA 적층 + 배칭 + 스팟 활용’ 조합이 비용 대비 성능에서 가장 우수한 경우가 많았다.
💡 인공지능 인사이드 팁: 배칭 사이즈는 평균 응답 길이와 모델 토큰 비용에 따라 최적값이 달라진다. 배칭 크기 증가가 모델 비용을 줄이지만 응답 지연을 키우므로 SLO(예: p95 < 300ms)를 기준으로 실험으로 최적점을 찾으라.
K8s LLM 자동스케일링을 위한 실무 설정 예시 (핵심 구성요소 포함)
핵심 컴포넌트
- 모니터링: Prometheus + Grafana + custom-metrics-adapter
- 오토스케일링: HPA(쿠버네티스), KEDA(이벤트/큐 기반), Cluster Autoscaler(노드 레벨)
- 서빙 레이어: Triton/KServe/TS-Server(배치/동시처리 옵션 필요)
- 노드 전략: 스팟/온디맨드 혼합, GPU 타입별 오토스케일 그룹
예시: 큐 길이 기반 KEDA ScaledObject (간략화)
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: llm-worker-scaler
spec:
scaleTargetRef:
name: llm-worker
minReplicaCount: 0
maxReplicaCount: 10
triggers:
- type: rabbitmq
metadata:
queueName: llm-requests
host: RabbitMQConnectionString
queueLength: "50"
예시: HPA(커스텀 메트릭) — Prometheus adapter 연동 후
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: llm-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: llm-server
minReplicas: 0
maxReplicas: 8
metrics:
- type: Pods
pods:
metric:
name: requests_per_pod
target:
type: AverageValue
averageValue: "20"

엔지니어 관점의 K8s LLM 자동스케일링 권장 운영 패턴
- 메트릭 우선순위 정의: 큐 길이 및 GPU 메모리 여유 → GPU util → 요청 대기열 → p99 레이턴시
- 단계별 검증: 스테이징에서 대역폭 10%부터 시작해 캐파시티를 점진 확장
- 노드 분리: 온디맨드(핵심)와 스팟(비핵심) 노드 풀 분리, 중요한 모델은 온디맨드 보장
- 모델 팩토리 전략: 큰 모델은 ‘온디맨드 전용’, 라이트 모델은 HPA 대상
- 사전경보(예: 스팟 인스턴스 회수)는 운영 자동화 파이프라인으로 연결해 빠른 리커버리 구현
추가 권장사항: 모델을 완전히 새로 로드하는 과정이 느리면(몇 초~수십 초) 라우팅 레이어에 요청 큐를 넣고, 소량의 레디(Hot) 인스턴스를 항상 유지해 선점 지연을 줄여라.
🔗 Kubernetes Autoscaler (GitHub)
K8s LLM 도입 시 반드시 챙겨야 할 위험 포인트와 대응
- 모델 로드 시간(콜드 스타트): 큰 모델은 로드 시간이 길어 요청 지연이 발생. 미리 warm pool 유지 또는 빠른 스핀업 전략 필요.
- 메모리 삽입(Out of Memory): VPA가 자동으로 메모리를 늘려도 노드 한계로 OOM이 발생할 수 있으므로 모델당 필요한 GPU/메모리 프로파일링을 먼저 수행.
- 스팟/프리엠티브 리스크: 회수 시 리커버리 전략(세션 마이그레이션, 재시도 정책)을 자동화.
- 비용 예측 실패: 클라우드 할인(리저브드), 스팟 비율 변경, 모델 호출 패턴 변화 등을 감안해 매월 비용 리포트를 자동화.
- 보안·컴플라이언스: 모델 로깅(입력/출력) 정책, 민감 데이터 필터링 및 암호화, 키 관리 체계 필요.
💡 인공지능 인사이드 팁: 실무에서는 ‘지표 기반 실험 파이프라인’을 만들어 한 달 단위로 스케일 정책 A/B 테스트를 돌려 비용과 p99 지표의 트렌드를 자동으로 수집하라. 단발성 튜닝보다 데이터 기반 반복 개선이 더 큰 절감 효과를 준다.
추가 기술·설명 자료
🔗 NVIDIA k8s-device-plugin (GPU 관리)







