Kubernetes 비용 최적화 실전 가이드 — 라이트사이징, Spot 노드, FinOps 도구 비교
K8s 클러스터 운영 비용의 40%가 리소스 낭비에서 발생한다. VPA 기반 라이트사이징으로 requests/limits를 실사용량에 맞추고, Spot 노드 풀 3단 구조, Karpenter 오토스케일링, 비프로덕션 환경 스케줄링, Kubecost·OpenCost·CAST AI FinOps 도구까지 단계별 비용 절감 전략을 정리한다.
Kubernetes 클러스터 운영 비용의 60~70%는 컴퓨팅 리소스 낭비에서 발생한다. 리소스 요청(requests)과 실사용량(usage)의 격차를 줄이는 라이트사이징, Spot/Preemptible 노드 활용, 네임스페이스별 비용 할당, FinOps 도구 도입까지 실전 비용 최적화 전략을 단계별로 정리한다.
Kubernetes 비용은 어디에서 새는가
CNCF FinOps 보고서(2025)에 따르면 기업이 프로비저닝한 K8s 리소스 중 평균 40%가 실제로 사용되지 않는다. 비용이 새는 대표적인 지점은 다음과 같다:
과도한 리소스 요청: 개발자가 OOM 방지를 위해 CPU/메모리 requests를 실사용량의 2~5배로 잡는다
항상 켜진 비프로덕션 환경: 개발·스테이징 클러스터가 24/7 가동되지만 업무 시간에만 사용
미사용 PV/LoadBalancer: 삭제된 Pod의 Persistent Volume이나 LoadBalancer가 과금 중
노드 단편화: 작은 Pod들이 큰 노드에 분산 배치되어 노드당 활용률이 30% 미만
K8s 리소스 요청량과 실사용량 격차 — 평균 40%가 낭비
리소스 라이트사이징 — 가장 즉각적인 비용 절감
라이트사이징은 Pod의 resources.requests와 resources.limits를 실사용량에 맞게 조정하는 작업이다. 이것만으로 30~50% 비용 절감이 가능한 경우가 많다.
VPA (Vertical Pod Autoscaler) 활용: VPA를 mode: "Off"로 설정하면 자동 조정 없이 추천값만 확인할 수 있다. 추천값을 검토한 후 수동으로 반영하는 것이 안전하다.
VPA 추천값 확인 (recommender-only 모드)
# VPA 설치 (recommender만)
kubectl apply -f https://github.com/kubernetes/autoscaler/releases/latest/download/vpa-v1-crd-gen.yaml
kubectl apply -f https://github.com/kubernetes/autoscaler/releases/latest/download/vpa-v1-rbac.yaml
# VPA 오브젝트 생성 (Off 모드 — 추천만)
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: my-app-vpa
spec:
targetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
updatePolicy:
updateMode: "Off" # 추천값만 제공, 자동 변경 없음
# 추천값 확인
kubectl describe vpa my-app-vpa
# → Lower Bound / Target / Upper Bound 확인
# Target 값을 requests로, Upper Bound를 limits로 설정
라이트사이징 실전 원칙:
최소 7일간 메트릭을 수집한 후 조정하라. 주말 트래픽 패턴까지 반영해야 한다
CPU requests는 P95, 메모리 requests는 P99를 기준으로 잡아라. CPU는 throttling이 발생해도 Pod이 죽지 않지만, 메모리 초과는 OOM Kill로 이어진다