Scooter-2022 / AI-HPA

딥러닝 기반 Kubernetes Autoscaler 성능 개선 프로젝트
1 stars 3 forks source link

[feat/#39] Doc: Readme #40

Closed NayeonKeum closed 2 years ago

NayeonKeum commented 2 years ago

작업 내용

참고 사항

resolves: #39

NayeonKeum commented 2 years ago

딥러닝 기반 Kubernetes Autoscaler 성능 개선 프로젝트


팀원

(팀장)금나연 김상홍 김지혜 유지연


프로젝트 선정 배경

Kubernetes Default Autoscaler - HPA

Reactive 방식으로 특정 주기마다 metrics server로부터 자원 사용량을 확인하여 미리 지정해둔 threshold를 넘어가면 스케일링이 됨

Proactive Autoscaler - PHPA

특정 구간의 사용량을 예측하여 미리 스케일링함으로써 HPA에서 발생하는 대기 시간 문제를 해결함


HPA-반응시간


대기시간을 없애면서 예측 정확도를 높을 수 있는

새로운 Autoscaler의 도입 필요



프로젝트 주제: AI-HPA

딥러닝 기반 모델 성능 비교를 통해 최적의 예측 모델 선정

사용자가 predictive scaling을 원하는 특정 서비스에만 적용 가능

Kubernetes의 standard pod의 형태로 실행 가능하게 제공



아키텍처

CPU 분석 기법


CPU-분석기법


Collect Update Predict
애플리케이션 메트릭을 수집하여 중앙 집중식 시계열 데이터베이스로 보내 수집된 메트릭을 활용하고 분석 단계에서 사용 Collector에서 특정 구간의 데이터를 쿼리하여 학습시킨 모델에 적용. 예측된 다음 시점의 워크로드에 대하여 설정한 알고리즘을 바탕으로 다음 시점의 파드 수 예측 Kubernetes 엔진(kube-apiserver)은 예측 단계로부터 명령을 받아 Pod의 복제본 수를 변경

아키텍처 구현

AI-HPA-아키텍처

1. 서비스별 메트릭 수집

Autoscaling하려는 deployment로부터 생성된 파드들의 CPU 사용량을 합산해 해당 서비스의 총 CPU 사용량을 수집

2. 트래픽 예측

사용자가 정해둔 CPU limit을 기준으로 딥러닝 모델은 특정 시점의 Pod 개수를 예측

3. Replicaset 업데이트

Kubernetes 엔진(kube-apiserver)은 Automatic Scaler의 명령을 통해 적절한 Pod 복제본 수 변경



딥러닝 모델

Bi-LSTM(Bidirectional LSTM)


모델 레포지토리 링크


Bi-LSTM-Arch


표준 LSTM과 달리 입력이 양방향으로 흐르고, 양방향의 정보를 활용 시퀀스의 양방향에서 순차적 종속성을 모델링하는 도구 정보 흐름의 방향을 반대로 하는 LSTM 레이어를 추가

출처


Hyper-parameter info

최적의 파라미터 및 손실함수 결정

Bi-LSTM-hyper-param

차별성 검증

HPA, PHPA 와의 차별성 검증

학습된 모델, Kubernetes에서 제공하는 기본 Autoscaler HPA, 오픈소스 Predictice HPA, 총 세 가지 모델에 랜덤으로 발생시킨 트래픽으로 성능 비교 예측 정확도를 바탕으로 개발한 모델의 스케일링 효과를 검증


이미지

{{ 이미지 첨부 }}



시연

{{ 시연 영상 첨부 }}



CI/CD 파이프라인

개발 과정 자동화

CICD-pipe
NayeonKeum commented 2 years ago

더 없으면 머지 함니다

bconfiden2 commented 2 years ago

시연 영상은 제외 해도 되지 않을까?

hellouz818 commented 2 years ago

시연 영상은 제외 해도 되지 않을까?

나는 길지 않고 작동한다는게 보여서 있어도 나쁘지 않을거라고 생각했어..!

bconfiden2 commented 2 years ago

오키오키

NayeonKeum commented 2 years ago

굿!