Kubernetes Horizontal Pod Autoscaler (HPA)

안서현·2024년 11월 18일

Kubernetes Horizontal Pod Autoscaler (HPA)

HPA는 Pod의 수를 자동으로 조정해주는 기능입니다. 즉, 트래픽이 많아지면 Pod 수를 늘리고, 트래픽이 줄어들면 Pod 수를 줄이는 역할을 합니다.

Kubernetes의 매트릭을 수집해 설정된 기준과 비교해 적절한 Pod 수를 계산하고, 이를 기반으로 스케일링 작업을 수행합니다.

이러한 과정에서 CPU 사용률, 메모리 사용량, 사용자가 정의한 매트릭 등 데이터를 통해 Pod의 수를 효율적으로 관리할 수 있습니다.

HPA 동작 과정

  1. Metric 수집 : Metrics Server 혹은 Prometheus 등의 도구에서 CPU, 메모리 등 데이터 수집
  2. 스케일링 결정 : HPA는 수집된 메트릭 값을 기준으로 스케일링이 필요한지 판단
  3. Pod 개수 조정 : HPA는 Deployment를 통해 Pod의 개수를 늘리거나 줄여 부하를 분산시키고 자원을 효율적으로 사용
  • Auto Scailing mechanism
    • 현재 메트릭 값과 원하는 메트릭 갑의 비율을 사용해 적정 Pod 개수를 계산
        원하는 Replica 수 = ceil(현재 Replica 수 * (현재 메트릭 값 / 원하는 메트릭 값))
    • Replica 수 : 실행 중인 Pod의 개수
    • 메트릭 값 : Metrics Server로부터 수집된 CPU, 메모리, 커스텀 메트릭의 사용량
    • ceil : 소수점 값 올림
    • ex) 현재 메트릭 값 : 200m / 원하는 메트릭 값 : 100m / 현재 Pod 수 : 3
      -> 원하는 Replica 수 = ceil(3 * (200/100)) = ceil(6) = 6
      -> Pod 개수 6개로 늘림
  • 식 유도 과정
    1. Pod 하나당 평균 부하를 계산 : 전체 부하 ÷ 현재 Pod 개수
    1. 필요한 Pod 개수를 구함 : 전체 부하 ÷ 원하는 메트릭 값
    2. 현재 Pod 수를 고려해 적정 Pod 개수를 계산
    3. 소수점은 올림 처리해 정수로 표현
profile
안녕하세요!

0개의 댓글