티스토리 뷰

반응형

쿠버네티스 실습: AI 기반 자율 확장(Auto-Scaling)과 비용 최적화 — 예측형 인프라 운영 설계

앞선 글에서는 AIOps 기반 이상 탐지 시스템을 구축해,
Prometheus와 Falco, Loki 데이터를 학습하여 이상 패턴을 자동으로 인식하고 대응하는
지능형 보안·운영 자동화 환경을 완성했습니다.

이제는 그 위에서 비용 효율적이고 자율적으로 확장되는 클러스터 운영을 실현합니다.
즉, 이번 글의 목표는 다음과 같습니다:

“AI가 워크로드를 예측하여 Pod를 자동 확장·축소하고, 클라우드 리소스 비용을 실시간으로 최적화하는 쿠버네티스 운영 환경 구축”


1) 목표 아키텍처

[Prometheus + KEDA Metrics Adapter]
      │
      ▼
[AI 예측 모델 (AIOps Engine)]
      │
      ▼
[Horizontal Pod Autoscaler (HPA)]
      │
      ▼
[Cluster Autoscaler + Spot Instance Manager]
      │
      ▼
[Cost Analyzer (Kubecost / OpenCost)]

핵심 구성요소

구성 요소 역할

Prometheus / Metrics Adapter 메트릭 수집 및 HPA 피드 제공
KEDA (Kubernetes Event-Driven Autoscaler) 이벤트 기반 자동 확장
AI 예측 모델 CPU/메모리/트래픽 추세 학습
Cluster Autoscaler 노드 단위 자동 확장
Kubecost 비용 추적 및 예측
Spot Manager (Karpenter or AWS ASG) 비용 절감형 노드 프로비저닝

2) KEDA 설치 (Event-driven Autoscaler)

KEDA는 Prometheus, Kafka, Redis, HTTP 요청 수 등을 기반으로
Pod의 리플리카 수를 자동 조정합니다.

helm repo add kedacore https://kedacore.github.io/charts
helm repo update
helm install keda kedacore/keda --namespace keda --create-namespace

확인:

kubectl get pods -n keda
NAME                     READY   STATUS    AGE
keda-operator-xxxxxxx    1/1     Running   1m

3) Prometheus 메트릭 기반 스케일러 정의

keda-scaler.yaml

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: backend-scaler
  namespace: team-a
spec:
  scaleTargetRef:
    name: backend
  pollingInterval: 30
  cooldownPeriod: 300
  minReplicaCount: 2
  maxReplicaCount: 10
  triggers:
  - type: prometheus
    metadata:
      serverAddress: http://prometheus.monitoring.svc:9090
      metricName: cpu_usage
      threshold: "80"
      query: sum(rate(container_cpu_usage_seconds_total[2m])) by (pod)

→ Pod CPU 사용률이 80% 이상이면 자동으로 스케일 아웃.


4) AI 기반 예측 확장 (Predictive Scaling)

반응형

단순 HPA는 “현재”의 부하를 기준으로 작동하지만,
AIOps는 “미래” 부하를 예측하여 미리 확장합니다.

예측 파이프라인 예시 (ai_autoscaler.py):

import pandas as pd
from sklearn.linear_model import LinearRegression
import numpy as np
import requests
import time

while True:
    # 1. Prometheus에서 최근 10분 메트릭 가져오기
    query = 'sum(rate(container_cpu_usage_seconds_total[1m])) by (pod)'
    resp = requests.get(f"http://prometheus.monitoring.svc:9090/api/v1/query", params={'query': query})
    data = [float(x['value'][1]) for x in resp.json()['data']['result']]
    timestamps = np.arange(len(data)).reshape(-1, 1)
    
    # 2. 간단한 선형 회귀로 5분 후 CPU 사용률 예측
    model = LinearRegression().fit(timestamps, data)
    next_pred = model.predict([[len(data) + 5]])[0]
    
    print(f"Predicted CPU: {next_pred}")
    
    # 3. 예측값이 0.8 초과 시 HPA 리플리카 증가
    if next_pred > 0.8:
        requests.patch(
            "https://kubernetes.default.svc/apis/apps/v1/namespaces/team-a/deployments/backend",
            headers={"Authorization": "Bearer "},
            json={"spec": {"replicas": 5}},
            verify=False
        )
    
    time.sleep(60)

→ AI가 “CPU가 곧 폭등할 것”을 감지하면 선제적으로 확장합니다.


5) Cluster Autoscaler 설정

Node 리소스가 부족하면 자동으로 노드를 추가하는 컴포넌트입니다.

AWS EKS 예시

helm install cluster-autoscaler \
  autoscaler/cluster-autoscaler-chart \
  --set autoDiscovery.clusterName=fuelstation-cluster \
  --set awsRegion=ap-northeast-2 \
  --set expander=least-waste

→ Pod 리소스 요구량이 증가하면 새 EC2 노드가 자동으로 추가됩니다.


6) Kubecost로 비용 가시화

Kubecost는 클러스터 자원 사용량과 실제 클라우드 비용을 연결합니다.

helm repo add kubecost https://kubecost.github.io/cost-analyzer/
helm install kubecost kubecost/cost-analyzer -n kubecost --create-namespace

웹 접속:

http://kubecost.kubecost.svc.cluster.local:9090

주요 패널:

  • Namespace별 비용 비율
  • HPA 확장 시점별 비용 증감
  • 노드별 효율성 점수 (Efficiency Score)
  • Spot/On-Demand 인스턴스 사용 비율

7) Spot Instance 자동화 (Karpenter)

Karpenter는 EKS/AKS/GKE에서 AI 기반 노드 최적화를 제공합니다.
사용량 패턴을 분석해 비용이 저렴한 스팟 노드를 우선 사용하도록 설정합니다.

karpenter-provisioner.yaml

apiVersion: karpenter.k8s.aws/v1alpha5
kind: Provisioner
metadata:
  name: default
spec:
  requirements:
    - key: "instance-lifecycle"
      operator: In
      values: ["spot", "on-demand"]
  consolidation:
    enabled: true
  limits:
    resources:
      cpu: 1000
  provider:
    instanceProfile: "KarpenterNodeRole"

→ 부하가 줄면 자동으로 스팟 노드 정리, 비용 최소화.


8) AI 기반 코스트 예측

AI 모델을 활용해 미래 리소스 사용량과 비용을 예측합니다.

import pandas as pd
from prophet import Prophet

cost_data = pd.read_csv('kubecost_usage.csv')
cost_data.columns = ['ds', 'y']

model = Prophet()
model.fit(cost_data)
future = model.make_future_dataframe(periods=7)
forecast = model.predict(future)
print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail(7))

→ 다음 7일간의 예상 비용을 추정해 예산 초과 시 Slack 경고를 보냅니다.


9) 실시간 시나리오

상황 AI 동작 결과

트래픽 급증 예측 선제적 Pod 확장 5초 내 안정화
CPU 지속 저부하 Pod 축소 + 노드 축소 비용 절감
비정상 Pod 반복 재시작 Falco 이벤트 감지 → 격리 장애 확산 방지
비용 예산 초과 예상 Slack 알림 및 제한 조정 예산 보호

10) 정리

  • KEDA + HPA: 메트릭 기반 자동 확장
  • AIOps 예측 모델: 부하 예측 및 선제적 대응
  • Cluster Autoscaler + Karpenter: 노드 수준 비용 최적화
  • Kubecost: 실시간 비용 추적 및 예측
  • 결과: 완전 자율형(AI-Driven) 인프라 — “비용 효율 + 무중단 확장 + 사전 대응”

다음 글에서는 이 AI 기반 인프라 환경을 Multi-Tenant SaaS 환경으로 확장하여,
팀별 자원 격리·청구·자동 스케일링 정책을 관리하는 SaaS형 Kubernetes 운영 아키텍처를 구축하겠습니다.


 

쿠버네티스,AIOps,KEDA,ClusterAutoscaler,Kubecost,Karpenter,AutoScaling,비용최적화,AI인프라,DevOps,K8s실습

 

 


✅ 참고할 최신 자료

  • KEDA(Kubernetes Event-Driven Autoscaling): 이벤트 기반 확장 도구로, 외부 이벤트나 서비스 메트릭을 통해 자동 스케일링을 지원합니다. (KEDA)
  • “AI-Powered Kubernetes Autoscaling” 가이드: AI 예측 기반 자동 확장을 다루며, “예측형(Prospective) 스케일링”이 가능하다는 내용이 소개되어 있습니다. (overcast blog)
  • “Kubernetes Autoscaling in 2025: Best Practices” 글에서는 이벤트-기반 및 예측 스케일링이 중요하다는 점을 강조하고 있습니다. (sedai.io)
  • 블로그 “Predictive Autoscaling in Kubernetes with Keda and Prophet”는 실제 머신러닝 모델을 이용해서 예측 스케일링을 구현한 사례입니다. (minimaldevops.com)

⚠️ 보완/강화 제안

다음 항목들을 고려하시면 글의 깊이와 실무감이 더 강화됩니다:

  • AI/머신러닝 기반 예측 확장 시 주의사항
    • 데이터 품질(히스토리 메트릭, 계절성, 이벤트) 문제
    • 예측 오차로 인한 과잉/부족 리소스 리스크
    • 예측 모델을 운용하면서 지속적으로 검증하고 재학습하는 절차
  • 이벤트 기반 스케일링과 예측 기반 스케일링의 차이 설명
    • 이벤트 기반(큐 길이, 메시지 수) vs 메트릭 기반(CPU/메모리) vs 예측 기반(머신러닝)
    • 각각의 장단점과 적합한 워크로드 유형
  • 비용 최적화 측면에서 실무 팁 추가
    • 스팟 인스턴스, 노드 풀 혼합 전략
    • 비용 분석 도구(예: Kubecost) 활용
    • 스케일링 정책이 과도히 급격하면 오히려 비용 증가될 수 있다는 경고
  • 실제 YAML/스크립트 예시에서 버전 주의사항, 클러스터 리소스 한계, 테스트 방법 등 현실적 고려사항
  • 멀티클러스터나 하이브리드 환경에서의 스케일링 정책 조정 및 운영 복잡성 언급

 

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/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
글 보관함
반응형