학습일지/Autoscale
KubeCon2024 - Scaling New Heights with KEDA: Performance, Extensions, and Beyond
inspirit941
2024. 10. 30. 00:21
반응형
https://youtu.be/_5_njiPr5vg?si=W0MJDjYMbLMRYPU5
발표자
- Jorge Turrado: SCRM에서 SRE 담당. KEDA maintainer
- Zbynek Roubalik: Kedify CTO, Knative TOC, KEDA maintainer
- Enterprise Autoscaling platform for our customers.
Data Processing 관점에서, 한번에 데이터 처리가 많이 필요한 경우 / 그렇지 않은 경우가 있다. 리소스 효율화를 위해서라도, 필요한 순간에만 애플리케이션이 실행되면 좋을 것 같다.
- HPA: target workload의 CPU / Memory 확인해서 autoscale. 단, 리소스 사용량과 Actual Need이 다른 경우 사용하기 어렵다.
- 예컨대 위 그림의 경우 'RabbitMQ라는 외부 시스템에서 얼마나 많은 메시지가 들어오는지' 가 autoscale 판단에 중요한 요인.
- scale to zero가 불가능하다.
- KEDA: Custom Metric을 정의하고 수집해서, application scale의 기준으로 활용한다.
- scale to zero 가능.
- 위 예시의 경우, RabbitMQ에서 발생하는 데이터를 수정하거나 변경하지 않는다. Metric 체크만 하는 것
Architecture
- k8s의 리소스를 최대한 활용.
- operator pattern. ScaledJob / ScaledObject 라는 리소스를 관리함.
- scaling Metadata 정의하는 역할
- External Metric 수집한 정보를 HPA에 전달.
- 1 to N, N to 1은 HPA가 담당하고
- scale Zero는 KEDA가 담당
ScaledObject: /scale 정의된 모든 종류의 k8s Resource에 적용 가능. 크게 세 가지 섹션으로 구분된다
- scaleTarget: 어떤 애플리케이션을 scale out할 것인지
- configuration부분 (min, max replica)
- trigger: connectors to external services (예시는 rabbitmq)
- 여러 개의 external service를 정의할 수 있다.
ScaledJob: Long-Running Process를 위한 작업.
- 외부 이벤트 기반으로 job 생성 / 실행.
New Features
Scaling Modifier
HPA는 기본적으로 takes decision based on the Maximun. 예컨대 multiple Trigger를 설정해두면
- 정의된 Metric 토대로 계산해서 각각의 trigger별로 Replica 개수가 도출됨
- 그 중 값이 가잔 큰 걸 선택함
Scaling Modifier: Maximun 선택을 원하지 않는 사람들을 위한 기능.
- 커스텀할 수 있는 수식 지원. (formula)
Monitoring Updates
Prometheus, OpenTelemtry Collector 지원
- 에러 모니터링, 환경설정 변경 등등... 에 유연하게 대응하기 위함
- Prometheus 기준, serviceMonitor 배포하면 된다
cloudevent 지원
- scale 변경 이벤트 발생하면 cloudevent emit 가능
- 플러그인 형태로 사용 가능
Authentication
Secure 위한 작업들. KEDA 동작을 위해 외부 컴포넌트에 접근해야 하므로 특히 중요하다.
Performance
grafana k6와의 intergration 지원
- testing KEDA with 1000 scale object, 1 metric
- 사용자 인프라에서 KEDA 테스트를 쉽게 할 수 있는 repo로 개선해나갈 예정
https://github.com/kedacore/keda-performance
RoadMap
Predictive Scaling
- 과거 metric 정보가 있고, 비슷한 시기에 비슷한 정도의 metric 변화를 예측할 수 있다면 predictive scale이 가능할 것.
- 매주 금요일에 traffic spike가 발생했다? -> 금요일에 미리 scale out해둔다던가
Storage Scaling
cloudevents 강화
HTTP Add On
- http 요청은 이벤트가 아니다. 이벤트라고 간주한다면, Synchronous Event인 셈. 제때 받아서 응답하지 못하면 사라지는 이벤트.
- scale Zero 상태에서 hold the http request 역할을 하는 interceptor 구현.
Timeout 초과하기 전까지는 request를 holding -> scale up되면 전달.
반응형