3.5. 오토스케일링
어떨 때 보는가
- 부하가 몰리는 시간에 서비스가 느려질 때
- 한가한 시간에 자원이 낭비될 때
- 노드 점검 중에 서비스가 끊기지 않게 하고 싶을 때
자동 조절이 필요한 이유
부하가 늘 때 파드 수를 손으로 늘리면 대응이 늦습니다. 반대로 한가한 시간에 많은 파드를 그대로 두면 자원이 낭비됩니다.
COP 는 두 가지 자동 조절 방식을 제공합니다.
| 방식 | 판단 기준 | 반응 |
|---|---|---|
| HPA | 현재 CPU·메모리 사용률 | 부하가 오른 뒤 늘립니다 |
| CronHPA | 정해진 시각 | 부하가 오르기 전에 늘립니다 |
HPA
HPA(HorizontalPodAutoscaler)는 사용률을 보고 파드 수를 늘리거나 줄입니다.
워크로드 > 수평 자동 확장(HPA) 으로 들어갑니다.

| 열 | 설명 |
|---|---|
| 이름 | HPA 이름 |
| 대상 | 조절할 Deployment 등 |
| 최소 · 최대 | 파드 수의 하한과 상한 |
| 복제본 | 현재 파드 수 |
| 지표 | 현재 사용률 / 목표 사용률 |
동작 방식은 이렇습니다.
- 대상 파드들의 평균 사용률을 잽니다.
- 목표 사용률과 비교합니다.
필요한 파드 수 = 현재 파드 수 × (현재 사용률 ÷ 목표 사용률)로 계산합니다.- 최소·최대 범위 안에서 조절합니다.
예를 들어 파드 2개가 평균 80% 를 쓰고 목표가 50% 면, 2 × (80 ÷ 50) = 3.2 → 4개로 늘립니다.
줄일 때는 늘릴 때보다 천천히 움직입니다. 부하가 잠깐 내려갔다고 바로 줄이면 다시 늘려야 하므로, 일정 시간 낮은 상태가 이어져야 줄입니다.
HPA 를 쓰려면 자원 요청량이 있어야 합니다
HPA 를 걸기 전에 대상 파드에 자원 요청량이 설정되어 있어야 합니다. 없으면 HPA 는 아무 일도 하지 않습니다. 이것이 HPA 가 동작하지 않는 가장 흔한 원인입니다.
왜 필요한가
앞의 계산식에 나오는 "사용률" 은 요청량 대비 비율 입니다. 노드 전체 용량이나 상한이 아닙니다.
사용률 = 실제 사용량 ÷ 요청량 × 100
요청량이 분모입니다. 요청량이 없으면 분모가 없어 사용률 자체를 구할 수 없고, HPA 목록의
지표 열에 <unknown> 이 뜬 채로 멈춥니다.
요청량·상한이 무엇이고 어떻게 정하는지는 3.1 장에 있습니다. 여기서는 HPA 가 그 값을 어떻게 쓰는지만 봅니다.
계산 예 — COP 샘플 애플리케이션
COP 가 넣어 주는 전자정부 샘플 애플리케이션의 실제 설정으로 따라가 보겠습니다.
| 항목 | 값 |
|---|---|
| CPU 상한 | 2 (2 코어) |
| CPU 요청량 | 별도로 정하지 않음 → 상한과 같은 2 가 자동으로 채워집니다(3.1 장) |
| HPA 최소 파드 수 | 2 |
| HPA 최대 파드 수 | 4 |
| HPA 목표 사용률 | 75% |
여기서 목표 75% 는 "파드 하나가 평균 1.5 코어를 쓰는 상태" 를 뜻합니다.
2 코어(요청량) × 75% = 1.5 코어
파드 2개가 각각 1.8 코어를 쓰고 있다고 하면 이렇게 됩니다.
| 단계 | 계산 |
|---|---|
| 현재 사용률 | 1.8 ÷ 2 × 100 = 90% |
| 필요한 파드 수 | 2 × (90 ÷ 75) = 2.4 → 올림 → 3개 |
| 최대 범위 확인 | 3 은 최대 4 이내이므로 그대로 3개 |
늘어난 뒤에는 같은 부하가 3개로 나뉘므로 파드당 1.2 코어, 사용률 60% 가 되어 목표 아래로 내려갑니다. 부하가 계속 오르면 4개까지 늘고, 4개로도 90% 를 넘으면 더는 늘지 않습니다. 그때는 최대값을 올리거나 다른 병목을 찾아야 합니다.
요청량을 잘못 잡으면 생기는 일
요청량은 배치에 쓰이는 값이면서 동시에 HPA 의 분모입니다. 한 값이 두 가지를 결정하므로 잘못 잡으면 양쪽이 함께 어긋납니다.
| 요청량 | 배치에 미치는 영향 | HPA 에 미치는 영향 |
|---|---|---|
| 실제보다 크게 | 노드에 파드가 몇 개 못 들어갑니다 | 사용률이 낮게 나와 필요한데도 늘지 않습니다 |
| 실제보다 작게 | 붐빌 때 밀려납니다 | 사용률이 높게 나와 필요 없는데도 늘어납니다 |
| 없음 | 자리를 잡지 않습니다 | HPA 가 동작하지 않습니다 |
예를 들어 요청량을 2 코어로 잡았는데 실제로는 0.2 코어밖에 쓰지 않는 애플리케이션이라면, 부하가 다섯 배로 뛰어 1 코어를 써도 사용률은 50% 라 목표 75% 에 못 미쳐 파드가 늘지 않습니다. 화면상 "HPA 는 정상인데 서비스는 느린" 상태가 됩니다.
실제 사용량을 먼저 재고 요청량을 정한 뒤 HPA 를 거십시오. 순서를 바꾸면 목표 사용률을 아무리 조절해도 맞지 않습니다.
메모리 기준으로 조절할 때
메모리 사용률로도 조절할 수 있지만 CPU 만큼 잘 맞지 않습니다. 자바처럼 힙을 미리 잡아 두는 런타임은 실제로 놀고 있어도 메모리 사용량이 줄지 않아, 파드를 늘려도 사용률이 내려가지 않습니다. 그러면 최대치까지 계속 늘어납니다.
메모리는 상한을 제대로 잡는 쪽이 맞고, 자동 조절은 CPU 를 기준으로 하는 편이 안전합니다.