Kube HPA Overview

  • HPA = ํŠธ๋ž˜ํ”ฝ(๋ถ€ํ•˜)์— ๋”ฐ๋ผ, Pod ๊ฐœ์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ๋Š˜๋ฆฌ๊ณ  ์ค„์ด๋Š” ๊ธฐ๋Šฅ

  • Horizontal = Pod ์ˆ˜๋ฅผ ์ขŒ์šฐ๋กœ ๋Š˜๋ฆผ-

  • Vertial(VPA) = Pod ์ŠคํŒฉ ๋ณ€๊ฒฝ (๋‹ค๋ฅธ ๊ฐœ๋…)

2๏ธโƒฃ HPA๊ฐ€ ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ

โŒ HPA ์—†์„ ๋•Œ

ํŠธ๋ž˜ํ”ฝ ํญ์ฆ
โ†’ Pod 1๊ฐœ
โ†’ CPU 100%
โ†’ ์‘๋‹ต ์ง€์—ฐ / ์žฅ์• 

โญ• HPA ์žˆ์„ ๋•Œ

CPU ์‚ฌ์šฉ๋ฅ  ์ฆ๊ฐ€
โ†’ Pod 3๊ฐœ โ†’ 5๊ฐœ
โ†’ ๋ถ€ํ•˜ ๋ถ„์‚ฐ
โ†’ ์•ˆ์ •์ ์ธ ์„œ๋น„์Šค

3๏ธโƒฃ HPA๋Š” ๋ฌด์—‡์„ ๊ธฐ์ค€์œผ๋กœ ์Šค์ผ€์ผ๋งํ•˜๋‚˜?

๊ธฐ๋ณธ ๊ธฐ์ค€ (๊ฐ€์žฅ ํ”ํ•จ)

  • CPU ์‚ฌ์šฉ๋ฅ 

  • Memory ์‚ฌ์šฉ๋ฅ 

ํ™•์žฅ ๊ธฐ์ค€ (์‹ค๋ฌด)

  • QPS

  • Request latency

  • Custom metrics (Prometheus)

ํ•ต์‹ฌ ๊ณต์‹ (์ค‘์š” โญโญโญ)

  • ํ˜„์žฌ CPU ์‚ฌ์šฉ๋ฅ  > ๋ชฉํ‘œ CPU ์‚ฌ์šฉ๋ฅ  โ†’ Pod ์ฆ๊ฐ€

4๏ธโƒฃ HPA ๋™์ž‘ ๊ตฌ์กฐ (์•„ํ‚คํ…์ฒ˜)

hpa1
hpa2

๊ตฌ์„ฑ ์š”์†Œ ์—ญํ• 

์ปดํฌ๋„ŒํŠธ
์—ญํ• 

Metrics Server

Pod CPU / Memory ์ˆ˜์ง‘

HPA Controller

์Šค์ผ€์ผ๋ง ํŒ๋‹จ

Deployment

Pod ์ˆ˜ ์กฐ์ •

Scheduler

์ƒˆ Pod ๋ฐฐ์น˜

5๏ธโƒฃ HPA ๋™์ž‘ ํ๋ฆ„ (Step by Step)

6๏ธโƒฃ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ HPA YAML (โญโญโญ)

ํ•ญ๋ชฉ
์˜๋ฏธ

scaleTargetRef

์–ด๋–ค Deployment๋ฅผ ์กฐ์ ˆํ• ์ง€

minReplicas

์ตœ์†Œ Pod ๊ฐœ์ˆ˜

maxReplicas

์ตœ๋Œ€ Pod ๊ฐœ์ˆ˜

60%

ํ‰๊ท  CPU๊ฐ€ 60% ๋„˜์œผ๋ฉด ์Šค์ผ€์ผ

7๏ธโƒฃ HPA๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ์ „์ œ ์กฐ๊ฑด

  • 7.1 Pod์— resources ์„ค์ •์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค โญโญโญ

โŒ ์ด๊ฑฐ ์—†์œผ๋ฉด?

  • HPA ๊ณ„์‚ฐ ๋ถˆ๊ฐ€๋Šฅ

  • ์Šค์ผ€์ผ๋ง ์•ˆ ๋จ

  • 7.2 Metrics Server ์„ค์น˜

์ด๊ฒŒ ์—†์œผ๋ฉด -> HPA๋Š” ์กด์žฌํ•˜์ง€๋งŒ ๋™์ž‘ โŒ

8๏ธโƒฃ HPA vs Node Autoscaling (๋งŽ์ด ํ—ท๊ฐˆ๋ฆผ)

๊ตฌ๋ถ„
HPA
Node Autoscaler

๋Œ€์ƒ

Pod

Node (VM)

๋ชฉ์ 

ํŠธ๋ž˜ํ”ฝ ๋Œ€์‘

์ž์› ๋ถ€์กฑ ํ•ด๊ฒฐ

์œ„์น˜

Kubernetes

Cloud + K8s

์ˆœ์„œ

๋จผ์ € ๋™์ž‘

๋‚˜์ค‘์— ๋™์ž‘

9๏ธโƒฃ HPA์˜ ํ•œ๊ณ„ (์ค‘์š”)

โŒ ์ด๋Ÿฐ ๊ฑด ๋ชปํ•œ๋‹ค

  • DB ์ปค๋„ฅ์…˜ ์ˆ˜ ๊ธฐ๋ฐ˜ ์Šค์ผ€์ผ (๊ธฐ๋ณธ)

  • ํ ๊ธธ์ด (๊ธฐ๋ณธ)

  • ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์ŠคํŒŒ์ดํฌ ์ฆ‰์‹œ ๋Œ€์‘

๐Ÿ‘‰ ํ•ด๊ฒฐ:

  • Custom Metrics

  • KEDA

  • Pre-warming

๐Ÿ”Ÿ ์‹ค๋ฌด์—์„œ ๊ฐ€์žฅ ํ”ํ•œ ์‹ค์ˆ˜ TOP 3

์‹ค์ˆ˜
๊ฒฐ๊ณผ

requests ๋ฏธ์„ค์ •

HPA ๋ฌด๋ ฅํ™”

maxReplicas ๋„ˆ๋ฌด ์ž‘์Œ

ํŠธ๋ž˜ํ”ฝ ๋ฒ„์ŠคํŠธ ๋Œ€์‘ ์‹คํŒจ

CPU ๊ธฐ์ค€๋งŒ ์‚ฌ์šฉ

I/O ์„œ๋น„์Šค์—์„œ ์˜ค์ž‘๋™


์ •๋ฆฌ

HPA๋Š” โ€œ์ง€๊ธˆ Pod๊ฐ€ ๋ถ€์กฑํ•œ์ง€โ€๋ฅผ ํŒ๋‹จํ•ด์„œ Pod ์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ์กฐ์ ˆํ•˜๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ํ•ต์‹ฌ ์ž๋™ํ™” ๊ธฐ๋Šฅ

  • 1๏ธโƒฃ CPU ๊ธฐ์ค€ HPA๊ฐ€ ์œ„ํ—˜ํ•œ ์ด์œ 

  • 2๏ธโƒฃ HPA + Spring Boot ์‹ค์ œ ์˜ˆ์ œ

  • 3๏ธโƒฃ HPA + Ingress + ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ํ๋ฆ„

  • 4๏ธโƒฃ HPA vs KEDA (์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์Šค์ผ€์ผ๋ง)

Last updated