[nGrinder] single endpoint load test script 기반 pod autoscaling 테스트
Last updated
Last updated
스케일 다운 지연 문제의 원인은 기본 스케일 다운 정책의 안정화 기간(5분) 때문임.
이를 해결하기 위해 behavior
필드를 활용하여 안정화 기간을 줄이는 등의 정책을 커스텀하여 적용할 수 있음
현재 deployment에 cpu 100m, memory 128mi, targetCPUUtilizationPercentage: 30 할당
minReplicas : 1
maxReplicas : 20
부하테스트 시작
pod scale out 확인
1 -> 3
TARGETS 값 80%까지 오른 모습
cpu 사용량이 늘어나는 모습
테스트 중지 후 테스트하고 있는 네임스페이스 cpu 사용량 내려가는 그래프 ( prometheus )
테스트 종료 후 파드 별 cpu 사용량 1 밀리코어로 내려온 것 확인
그런데 파드가 minReplicas : 1 로 설정했으니 다시 scale down 되어야 하는데 안되고 있음
scale out는 잘 됐는데, 기대했던 바와 달리 scale down이 바로 이루어지지 않았다
이 부분을 보면 hpa.yaml에 있는 api v2를 쓰면 behavior를 지정해서 scale down policy를 정할 수 있다
이 두 부분을 보면 default 값이 5분이라는 것을 알 수 있다
기본 스케일 다운 예시 설명:
300초
안정화 기간 동안 스케일 다운 이벤트를 제한.
15초
동안 전체 파드의 100%
까지 스케일 다운할 수 있다.
기본 스케일 업 예시 설명:
0초
안정화 기간이므로 바로 스케일 업 이벤트를 발생시킨다.
15초
동안 총 파드 수의 100%
까지 늘리거나, 최대4개
의 파드를 추가한다.
selectPolicy
가 Max
로 설정되어 있으므로 두 정책 중 더 큰 값이 적용된다.
behavior
필드에서 스케일 업과 스케일 다운의 동작을 제어할 수 있다
behavior
필드:
scaleUp
: 스케일 업 동작을 제어
scaleDown
: 스케일 다운 동작을 제어
scaleUp
필드
stabilizationWindowSeconds
:
스케일 업의 안정화 기간(초 단위).
지정된 시간 내에 스케일 업 이벤트가 반복되지 않도록 제한.
기본값은 0초
로 설정되어 있다.
selectPolicy
:
Max
: 최대 값을 선택
Min
: 최소 값을 선택
Disabled
: 스케일 업을 비활성화
policies
:
스케일 업 정책 목록을 정의.
각 정책은 다음 두 가지 유형 중 하나를 사용할 수 있다.
Pods
: 파드 수를 기준으로 스케일 업
Percent
: 백분율로 스케일 업
예시:
scaleDown
필드
stabilizationWindowSeconds
:
스케일 다운의 안정화 기간(초 단위).
지정된 시간 내에 스케일 다운 이벤트가 반복되지 않도록 제한.
기본값은 300초
입니다.
selectPolicy
:
Max
: 최대 값을 선택
Min
: 최소 값을 선택
Disabled
: 스케일 다운을 비활성화
policies
:
스케일 다운 정책 목록을 정의합니다.
각 정책은 다음 두 가지 유형 중 하나를 사용할 수 있다.
Pods
: 파드 수를 기준으로 스케일 다운
Percent
: 백분율로 스케일 다운
예시:
예시 메니페스트:
1. scaleUp
필드
stabilizationWindowSeconds: 0
:
안정화 기간 없이 바로 스케일 업을 수행.
selectPolicy: Max
:
스케일 업 정책 중 최대 값을 선택.
policies
:
Pods
: 60초
동안 최대 4개
의 파드를 늘린다.
Percent
: 60초
동안 최대 100%
의 백분율로 스케일 업 한다.
2. scaleDown
필드
stabilizationWindowSeconds: 300
:
300초 동안 안정화 기간을 적용하여 스케일 다운 이벤트가 잦지 않도록 한다.
selectPolicy: Min
:
스케일 다운 정책 중 최소 값을 선택한다.
policies
:
Pods
: 60초
동안 최대 2개
의 파드를 줄인다.
Percent
: 60초
동안 최대 10%
의 백분율로 스케일 다운한다.
behavior
설정 활용 전략스케일 업과 스케일 다운의 안정화 기간을 다르게 설정하여 스케일링 이벤트의 빈도를 조절한다.
selectPolicy
필드를 적절하게 활용하여 특정 상황에 최적화된 스케일링 동작을 구현한다.
Q1: behavior
필드에서 selectPolicy
를 활용한 스케일링 최적화 전략은 무엇인가?
Q2: 스케일 업과 스케일 다운의 안정화 기간을 다르게 설정할 때 주의해야 할 점은 무엇인가?
Q3: HPA의 autoscaling/v2beta2
API 버전에서 behavior
필드를 효과적으로 사용하는 방법은 무엇인가?