목록 보기
Custom Metric(ex. RPS)으로 HPA 설정하기
데브옵스

Custom Metric(ex. RPS)으로 HPA 설정하기

스캐터랩 핑퐁
스캐터랩 핑퐁
2022년 11월 16일

두줄요약

Kubernetes HPA에서 Prometheus와 prometheus-adapter로 RPS Custom Metric을 노출하는 방법을 설명했습니다. Istio 메트릭 기반 RPS와 CPU 기준을 함께 설정해 pod 수를 확장합니다.

구조와 흐름

  • HPA 컨트롤러의 주기적 메트릭 수집, 목표 레플리카 계산, 워크로드 스케일 요청 흐름
  • Resource·Custom·External Metric별 분리된 Metric API와 수집 파이프라인
  • 목표 pod 수를 현재 pod 수와 현재·목표 메트릭 비율로 계산하는 방식

선택 이유

  • CPU·메모리 외 I/O, 스레드, 네트워크 병목을 함께 반영하기 위한 RPS 기준
  • 유저 발화 응답 API 중심의 요청 특성에 적합한 RPS 지표
  • cAdvisor 미제공 지표를 위한 Prometheus와 prometheus-adapter 조합

해결 방법

  • Istio의 istio_requests_total을 rate·sum으로 집계하고 가용 pod 수로 나눈 RPS 기록 규칙
  • prometheus-adapter를 Custom Metric API Server로 배포하고 custom.metrics.k8s.io 노출 확인
  • HPA Object 메트릭에 서비스 RPS 목표값을 설정하고 CPU Resource 메트릭 병행

성능/운영 포인트

  • 복수 메트릭 설정 시 각 기준의 목표 pod 수 중 최댓값 선택
  • HPA pod 확장에 대비한 Node 스케일링 필요성
  • GPU 사용량·응답 속도 등 서비스별 custom metric 확장 가능성

다음 읽기

#Kubernetes 주제를 이어서 읽기

루다 선톡을 대비하는법

선톡으로 인한 급격한 트래픽에 대비해 발송 예정 메시지 수 기반의 Prescaler를 설계했습니다.\nCustom Resource와 Controller로 HPA의 minReplicas를 사전 조정했습니다.

스캐터랩 핑퐁
스캐터랩 핑퐁
데브옵스

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...