๐ŸŒฑ ์ธํ”„๋Ÿฐ/โš“ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์–ด๋‚˜๋” ํด๋ž˜์Šค (์ง€์ƒํŽธ)

(7) PV/PVC, Deployment, Service, HPA

mallin 2025. 6. 8. 14:16

โš“ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์–ด๋‚˜๋” ํด๋ž˜์Šค (์ง€์ƒํŽธ) - Spring 1, 2 ์„ ๋“ฃ๊ณ  ์ž‘์„ฑํ•˜๋Š” ๋ณต์Šต ๋ธ”๋กœ๊ทธ ์ž…๋‹ˆ๋‹ค.

 

1. PV/PVC

์ถœ์ฒ˜URL : https://inf.run/k7mF

 

1-1. PVC & PV ์˜ ๊ด€๊ณ„

  • PVC : ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ์ž์›, ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• 
  • PV : ์ธํ”„๋ผ ๋‹ด๋‹น์ž๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์‹ค์ œ ์Šคํ† ๋ฆฌ์ง€ ์ž์›
  • ์—ฐ๊ฒฐ ์กฐ๊ฑด
    • ํ•„์ˆ˜ ํ•„๋“œ :
      • PVC : resources, accessModes
      • PV : capacity, accessModes
       → ๋‘ ์†์„ฑ์˜ ๊ฐ’์ด ์ผ์น˜ํ•ด์•ผ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ
    • PVC ์™€ pv ๋Š” selector ์™€ labels ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ

 

1-2. PV ์œ ํ˜• : local

  • local volume
    • PV ์˜ local.path ์— ์‹ค์ œ ๋งˆ์šดํŠธ ๊ฒฝ๋กœ ์ง€์ •
    • ๋กœ์ปฌ ๋””์Šคํฌ๋ฅผ ์Šคํ† ๋ฆฌ์ง€๋กœ ์‚ฌ์šฉ
    • ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ๋งŽ์ด ์“ฐ๋Š” ๋ฐฉ๋ฒ•
  • ํ•„์ˆ˜ ์†์„ฑ : nodeAffinity ์†์„ฑ
    • ํŠน์ • Node ์— Pod ๊ฐ€ ์Šค์ผ€์ค„๋ง๋˜๋„๋ก ์ง€์ •
    • ์ด์œ 
      • ๋กœ์ปฌ ๋””์Šคํฌ๋Š” ํŠน์ • ๋…ธ๋“œ์— ์กด์žฌ
      • Pod ๊ฐ€ ๋‹ค๋ฅธ ๋…ธ๋“œ์— ์ƒ์„ฑ๋˜๋ฉด ํ•ด๋‹น ๊ฒฝ๋กœ์— ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ → ์˜ค๋ฅ˜ ๋ฐœ์ƒ
      • nodeAffinity ๋ฅผ ํ†ตํ•ด Pod ๋ฅผ ๋ฐ˜๋“œ์‹œ ํ•ด๋‹น ๋…ธ๋“œ์— ์ƒ์„ฑํ•˜๋„๋ก ์„ค์ •
    • ์˜ˆ์‹œ
required:
  nodeSelectorTerms:
  - matchExpressions:
    - {key: kubernetes.io/hostname, operator: In, values: [k8s-master]}

 

 

1-3. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ local PV ์‚ฌ์šฉ ์ด์œ 

  • ๋ณ„๋„์˜ ์™ธ๋ถ€ ์Šคํ† ๋ฆฌ์ง€ ๊ตฌ์ถ• ๋ฒˆ๊ฑฐ๋กœ์›€
  • ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ๋“ฑ ํŠน์ • ๋…ธ๋“œ์— ๊ฒฝ๋กœ๋ฅผ ์ƒ์„ฑํ•ด ๊ฐ„์ด ์Šคํ† ๋ฆฌ์ง€๋กœ ์‚ฌ์šฉ
  • ํ•ด๋‹น ๊ฒฝ๋กœ (path) ๋Š” ๋…ธ๋“œ์— ์ง์ ‘ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋ฉฐ, Kubernetes ๊ฐ€ ์—ฐ๊ฒฐ

 

1-4. PVC / PV ์‚ฌ์šฉ ๋ชฉ์ 

  • ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ํŒŒ์ผ์€ Pod ์‚ญ์ œ์‹œ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง
  • ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ์™ธ๋ถ€ ์Šคํ† ๋ฆฌ์ง€ (PV) ์— ์ €์žฅํ•ด์•ผ ์‚ญ์ œ๋˜์ง€ ์•Š์Œ
  • PVC / PV ๋ฅผ ํ†ตํ•ด Pod ๊ฐ€ ์ฃฝ์–ด๋„ ๋ฐ์ดํ„ฐ ์œ ์ง€ ๊ฐ€๋Šฅ

 

1-5. local ๋ณด๋‹ค ๋” ์‰ฝ๊ฒŒ ๊ตฌ์ถ•ํ•˜๊ธฐ

  • Pod ์— ๋ณผ๋ฅจ์œผ๋กœ hostPath ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ
  • nodeSelector ๋ผ๋Š” ์†์„ฑ์„ ์ฃผ๋ฉด ๋…ธ๋“œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ๋งŽ์ด ์“ฐ์ด์ง€๋งŒ ์ฃผ์˜์‚ฌํ•ญ์ด ์žˆ๋‹ค.
    • HostPath ๋ณผ๋ฅจ์—๋Š” ๋งŽ์€ ๋ณด์•ˆ ์œ„ํ—˜์ด ์žˆ์œผ๋ฉฐ, ๊ฐ€๋Šฅํ•˜๋ฉด HostPath๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค (๊ฒฝ๊ณ ) 
    • ํ…Œ์ŠคํŠธ ์šฉ์œผ๋กœ ์“ฐ๊ธฐ ํŽธํ•ด์„œ ์ด ์†์„ฑ์„ ์ €์žฅ ์šฉ๋„๋กœ ์ƒ๊ฐํ•˜๊ธฐ ์‰ฝ๋‹ค.
    • ํ•˜์ง€๋งŒ, ์›๋ž˜ ๋…ธ๋“œ์— ์žˆ๋Š” ์ •๋ณด๋ฅผ App ์ด ์กฐํšŒํ•˜๋Š” ์šฉ๋„๋กœ ์šฉ
    • EX) Grafana ์—์„œ Loki ๋กœ ๋ชจ๋“  App ๋“ค์˜ ๋กœ๊ทธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋˜ ์ด์œ  ์‹ค์ œ Pod ๋“ค์˜ Log ๋Š” /var/log/pods ์— ์ €์žฅ Loki ์˜ promtail ์ด๋ผ๋Š” Pod ๊ฐ€ hostPath ๋กœ ์œ„ ๊ฒฝ๋กœ๋ฅผ ์กฐํšŒํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅ

 

1-6. hostPath, local ์‚ฌ์šฉ ๋ชฉ์ 

  1. ๋…ธ๋“œ์˜ ์ •๋ณด๋ฅผ ์ด์šฉํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์˜ App
  2. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ์ž„์‹œ ์ €์žฅ ์šฉ๋„๋กœ ์‚ฌ์šฉ
    • ์šด์˜ ํ™˜๊ฒฝ X
    • ๋…ธ๋“œ ๊ณต๊ฐ„ ๋ถ€์กฑํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.
    • ๋…ธ๋“œ๋Š” ์–ธ์ œ๋“ ์ง€ ์ฃฝ์„ ์ˆ˜ ์žˆ๋Š” ๋Œ€์ƒ

 

1-7. ์‹ค์Šต

  1. ํŒŒ์ผ ์ƒ์„ฑ API ํ˜ธ์ถœ
  2. ํŒŒ์ผ ์ƒ์„ฑ ํ™•์ธ
  3. Pod ํ˜ธ์ถœ
  4. ํŒŒ์ผ ์ƒ์„ฑ ํ™•์ธ
  5. hostPath ๋ฅผ ์จ์„œ ์‚ฌ์šฉ

2. Deployment

App ์— ์ƒˆ๋กœ์šด ๋ฒ„์ „์ด ๋‚˜์™€์„œ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์•ผํ•  ๋•Œ

→ ๊ธฐ์กด Pod ๋Š” ์‚ญ์ œํ•˜๊ณ  ์ƒˆ Pod ๋ฅผ ๋ฐฐํฌ

→ Deployment ์˜ strategy ์†์„ฑ์œผ๋กœ ์ด ๊ธฐ๋Šฅ์„ ์ง€์›

 

2-1. strategy

  • App ์— ์ƒˆ๋กœ์šด ๋ฒ„์ „์ด ๋‚˜์™€์„œ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์•„ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ
  • ๊ธฐ์กด Pod ๋Š” ์‚ญ์ œํ•˜๊ณ , ์ƒˆ Pod ๋ฅผ ๋ฐฐํฌ
  • ReCreate, RollingUpdate

 

2-2. ์—…๋ฐ์ดํŠธ ๊ณผ์ •

template

  • template ๋ฐ‘์˜ ๋‚ด์šฉ์ด ํ•˜๋‚˜๋ผ๋„ ๋ณ€๊ฒฝ๋˜๋ฉด ์—…๋ฐ์ดํŠธ๊ฐ€ ์ง„ํ–‰
  • ๋ชจ๋‘ Pod ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๋‚ด์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ๋˜๋ฉด ๊ทธ ๋‚ด์šฉ์œผ๋กœ ์ƒˆ๋กœ์šด Pod ๋ฅผ ๋งŒ๋“ ๋‹ค.

 

์—…๋ฐ์ดํŠธ ๋ฐฉ์‹

  1. ์ƒˆ๋กœ์šด ์ด๋ฆ„์˜ ReplicaSet ์„ ๋งŒ๋“ ๋‹ค
  2. ๊ธฐ์กด ReplicaSet ์€ replicas ๋ฅผ 0 ์œผ๋กœ ๋งŒ๋“ค์–ด์„œ Pod ๋ฅผ ์‚ญ์ œ
  3. ๊ธฐ์กด ReplicaSet ์€ ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ , ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ์„œ ๋กค๋ฐฑ ํ•ด์•ผ ๋  ๋•Œ ์‚ฌ์šฉ

์ถœ์ฒ˜URL : https://inf.run/k7mF

 

Recreate RollingUpdate
Pod ๊ฐ€ ๊ตฌ๋™์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „ Pod ์‚ญ์ œ Pod ๊ฐ€ ๊ตฌ๋™์ด ์™„๋ฃŒ๋œ ํ›„ Pod ์‚ญ์ œ
  • ๋ฐ”๋กœ ๊ธฐ์กด Pod ๋ฅผ ์‚ญ์ œ์‹œํ‚ค๋Š” ๋™์‹œ์— ์ƒˆ Pod 2๊ฐœ๋ฅผ ๋งŒ๋“ ๋‹ค
  • Pod๋“ค์€ ์ฒ˜๋ฆฌ๋˜๋Š” ์†๋„์— ๋”ฐ๋ผ ๊ธฐ๋™๋˜๋Š” ์‹œ๊ฐ„์— ์ฐจ์ด
  • ์—…๋ฐ์ดํŠธ ์ค‘ ์„œ๋น„์Šค ์ค‘๋‹จ ๐Ÿ™†‍โ™€๏ธ
  • ๋ฐ”๋กœ ์ƒˆ ๋ฒ„์ „์˜ Pod ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ธฐ๋™์ด ์™„๋ฃŒ๋˜์ž๋งˆ์ž ๊ธฐ์กด Pod ํ•˜๋‚˜๋ฅผ ์‚ญ์ œ
  • ์—…๋ฐ์ดํŠธ ์ค‘ ์„œ๋น„์Šค ์ค‘๋‹จ ๐Ÿ™…‍โ™€๏ธ
  • ์ž์› ์‚ฌ์šฉ๋Ÿ‰ 150% ์ฆ๊ฐ€
  • ๋‘ ๋ฒ„์ „์ด ๋™์‹œ์— ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ์Œ
    • ์ด๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค๋ฉด Blue/Green ๋ฐฉ์‹์„ ์‚ฌ์šฉ
    • ์—…๋ฐ์ดํŠธ ๋™์•ˆ ๋‘ ๋ฒ„์ „์ด ๋™์‹œ์— ํ˜ธ์ถœ๋˜์ง€ ์•Š์Œ
    • ์ž์› ์‚ฌ์šฉ๋Ÿ‰ 200% ์ฆ๊ฐ€
    • ๋ณ„๋„ ๋ฐฐํฌ ์†”๋ฃจ์…˜์—์„œ ์ œ๊ณต

 

์ถœ์ฒ˜URL : https://inf.run/k7mF

 

maxUnavailable maxSurge
  • ์—…๋ฐ์ดํŠธ ๋™์•ˆ ์ตœ๋Œ€ ๋ช‡ ๊ฐœ์˜ Pod ๋ฅผ ์„œ๋น„์Šค ์ƒํƒœ๋กœ ์œ ์ง€ํ• ์ง€ ์„ค์ •
  • 0% ๋กœ ์ค€๋‹ค๋Š” ๊ฑด ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๋™์•ˆ Pod ๊ฐœ์ˆ˜๋ฅผ ๊ฐ์†Œ์‹œํ‚ค์ง€ ์•Š๊ฒ ๋‹ค
  • ์ƒˆ Pod๋ฅผ ์ตœ๋Œ€ ๋ช‡๊ฐœ๊นŒ์ง€ ๋™์‹œ์— ๋งŒ๋“ค์ง€

3. Service

3-1. ์„œ๋น„์Šค ํผ๋ธ”๋ฆฌ์‹ฑ

์™ธ๋ถ€์—์„œ Pod ๋กœ ํŠธ๋ž˜ํ”ฝ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ

์ถœ์ฒ˜URL : https://inf.run/k7mF

type = NodePortport 

  • Node (MasterNode)
  • port ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด์„œ ์™ธ๋ถ€์—์„œ ๋ณด๋‚ธ ํŠธ๋ž˜ํ”ฝ์„ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋‚ด๋ถ€์— Pod ๋กœ ์ „๋‹ฌ ๊ฐ€๋Šฅ
  • selector ๊ณผ label ๋กœ Service ์™€ Pod ๋ฅผ ์—ฐ๊ฒฐ
  • Pod์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ณด๋ฉด App ์ด ๊ธฐ๋™ ํ›„ API, port ๋…ธ์ถœ
  • ports
    • targetPort : ์ปจํ…Œ์ด๋„ˆ port
    • nodePort : ์—ฌ๊ธฐ ๊ฐ’์œผ๋กœ ์™ธ๋ถ€ ํฌํŠธ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค
  • API ๋ฅผ ๋‚ ๋ฆฌ๋ฉด App ๊นŒ์ง€ ํŠธ๋ž˜ํ”ฝ ์ „๋‹ฌ

 

type = ClusterIP (Default)

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋‚ด๋ถ€์— Pod์—์„œ๋งŒ ์ ‘๊ทผํ•˜๋Š” ์šฉ๋„

 

3-2. ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ

๋‚ด๋ถ€ DNS๋ฅผ ์ด์šฉํ•œ Service ์ด๋ฆ„์œผ๋กœ API ํ˜ธ์ถœํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ

์ถœ์ฒ˜URL : https://inf.run/k7mF

  • ์„œ๋น„์Šค ์ด๋ฆ„์ด๋ž‘ 80ํฌํŠธ๋ฅผ ๋„ฃ์–ด์„œ API ๋ฅผ ํ˜ธ์ถœ (http://api-tester-1231:80/version)
  • → targetPort ๋กœ ํฌ์›Œ๋”ฉ๋ผ์„œ ํŠธ๋ž˜ํ”ฝ์ด Pod ๋กœ ์ „๋‹ฌ
  • Pod ์™€ Service ์—๋Š” ์ƒ์„ฑ๋  ๋•Œ IP ๋ถ€์—ฌ
  • Pod ์˜ ๊ฒฝ์šฐ ์‚ญ์ œ์‹œ IP ๊ฐ€ ๋ณ€๊ฒฝ → ํ•ญ์ƒ Service๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค
  • Cluster์˜ ๋‹ค๋ฅธ Namespace์— ์žˆ๋Š” Pod ํ˜ธ์ถœ
    • Service ์ด๋ฆ„ ๋’ค์— ํ•ด๋‹น Pod ๊ฐ€ ์†ํ•ด์žˆ๋Š” Namespace ์ด๋ฆ„๊นŒ์ง€
    • http://api-tester-1231.anotherclass-123:80/version

 

์ปจํ…Œ์ด๋„ˆ์— port๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ Service๋Š” ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๋„๋ก

  • App port ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด Service์˜ targetPort ๋„ ๋ณ€๊ฒฝ
  • Pod ๋‚ด์— ports ์†์„ฑ
    • name : port ์˜ ์†์„ฑ
    • containerPort : ์‹ค์ œ App ์ด ๋‚˜ํƒ€๋‚ด๋Š” port
    • contianerPort ์†์„ฑ์„ ์ค˜์•ผ์ง€ Pod ๋กœ API ๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ App ์ด ํŠธ๋ž˜ํ”ฝ์„ ๋ฐ›๋Š”๊ฑด ๐Ÿ™…‍โ™€๏ธ
    • contrainerPort ๋Š” ์ •๋ณด์„ฑ์ธ ์†์„ฑ
  • targetPort ์— 8080์ด ์•„๋‹ˆ๋ผ http๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค
    • Service ํ˜ธ์ถœ ์‹œ Pod ์—์„œ ์ด๋ฆ„์ด ๋งคํ•‘๋œ ํฌํŠธ๋ฅผ ์ฐพ์•„
    • ๊ทธ port ๋กœ API ๋ฅผ ํ˜ธ์ถœ
    → Pod์˜ port ๋ณ€๊ฒฝ ์‹œ Service ์ˆ˜์ • ๋ถˆํ•„์š”

 

3-3. ์„œ๋น„์Šค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ

Pod IP ๊ด€๋ฆฌ

์ถœ์ฒ˜URL : https://inf.run/k7mF

  • Pod ๊ฐ€ ์‚ญ์ œ๋˜๊ณ , ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์„œ๋น„์Šค์— ํ˜ธ์ถœ๋˜๋Š” IP ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ๋“ฑ๋ก
  • Pod ์— Service๋งŒ ์—ฐ๊ฒฐํ•ด์ฃผ๋ฉด Pod ํ˜ธ์ถœ์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค
  • Service ์— ํŠธ๋ž˜ํ”ฝ์„ ๋‚ ๋ฆฌ๋ฉด ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„๋ฐฐํ•ด์ฃผ๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๊ธฐ๋Šฅ

 

3-4. ๋™์ž‘ ํ™•์ธ ์ˆœ์„œ

  1. ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ํ™•์ธ
    1. Pod ๋‚ด๋ถ€์—์„œ API ๋‚ ๋ ค๋ณด๊ธฐ
  2. ์„ค์ • ๋ณ€๊ฒฝ
    1. (๊ธฐ์กด) Pod ports name: http, Service ports targetPort : http
    2. ์‚ญ์ œ ํ›„ Service๋ฅผ 8080 ์œผ๋กœ ๋ณ€๊ฒฝ ํ›„ API ๋‚ ๋ ค๋ณด๊ธฐ
    3. containerPort ๊ฐ€ ์ •๋ณด์„ฑ ์—ญํ• ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฑธ ํ™•์ธ

4. HPA

์ถœ์ฒ˜URL : https://inf.run/k7mF

  • scaleTargetRef : Deployment ๋ฅผ ์ง€์ •
  • ๋ถ€ํ•˜์‹œ min/maxReplicas ๋ฒ”์œ„ ๋‚ด์—์„œ ๋ณ€๊ฒฝ

 

4-1. metrics

  • cpu ๊ฐ€ ํ‰๊ท  60% ๊ธฐ์ค€์œผ๋กœ ์Šค์ผˆ๋ง ๋˜๋„๋ก ์„ค์ •
  • Pod ์˜ resource ์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ
    • requests : HAP ์—์„œ 100% ๊ณ„์‚ฐ์„ ์œ„ํ•œ ๊ธฐ์ค€ ๊ฐ’
  • container ๋‚ด๋ถ€์—๋Š” App ์ด ์‹คํ–‰
    • App ์—์„œ ์‹ค์ œ ์‚ฌ์šฉ ์ค‘์ธ cpu ๊ณ„์‚ฐ
    • ๊ธฐ์ค€ ๊ฐ’์„ ๋„˜์œผ๋ฉด ์Šค์ผ€์ผ๋ง ์•„์›ƒ
  • ๊ณ„์‚ฐ ๊ณต์‹ : ํ˜„์žฌ Pod ์ˆ˜ * (ํ‰๊ท  CPU / HPA CPU)
    • ๋ณ€๊ฒฝ๋  Pod ์˜ ์ˆ˜๊ฐ€ ๋„์ถœ๋œ๋‹ค
  • limits : cpu ์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ
    • HPA ์˜ ํ‰๊ท  ์ž„๊ณ„์น˜๋ฅผ ๊ฒฐ์ •ํ•˜๋Š”๋ฐ ํฐ ์˜ํ–ฅ์„ ์ค€๋‹ค
  • memory : ์‚ฌ์šฉ ์ƒํ™ฉ์— ๋”ฐ๋ผ์„œ ๋ณ€ํ•˜๋Š” ๊ฐ’์ด ์•„๋‹ˆ๋ผ ๋ถ€ํ•˜์— ๋”ฐ๋ฅธ ์ฆ๊ฐ ๋Œ€์ƒ์ด ์•„๋‹ˆ๋‹ค
    • HPA ์—์„œ ์ œ๊ณตํ•˜๋Š” ์˜ต์…˜์ด์ง€๋งŒ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค
    • ๋‚ด๋ถ€์—์„œ GC ๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™ ์ •๋ฆฌ

→ HPA ๋Š” ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์œผ๋กœ cpu ๋ฐ–์— ์“ธ๊ฒŒ ์—†๋Š”๋ฐ cpu๋งŒ ๊ฐ€์ง€๊ณ  ๋ชจ๋“  ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํ•˜ ์ƒํƒœ๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ์–ด๋ ต๋‹ค

→ ์ด๋Ÿด ๊ฒฝ์šฐ์—๋Š” ์จ๋“œํŒŒํ‹ฐ์•ฑ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค

 

4-2. ์ด์ƒ์ ์ธ ์Šค์ผ€์ผ๋ง

์ถœ์ฒ˜URL : https://inf.run/k7mF

  • ์ฒ˜์Œ Pod ๋‘ ๊ฐœ๊ฐ€ ์„œ๋น„์Šค ๋˜๊ณ  ์žˆ๋Š” ์ƒํƒœ
  • ๋ถ€ํ•˜๊ฐ€ ๊พธ์ค€ํžˆ ์ฆ๊ฐ€ ํ•˜๊ณ  ์žˆ๋‹ค
  • ํ‰๊ท  60%๊ฐ€ ๋„˜์œผ๋ฉด ์Šค์ผ€์ผ ์•„์›ƒ
  • Pod ํ•˜๋‚˜๊ฐ€ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง€๊ณ , ๊ธฐ๋™์ด ์™„๋ฃŒ๋˜๋ฉด ํ‰๊ท  ๋ถ€ํ•˜๊ฐ€ ๋–จ์–ด์ง„๋‹ค
  • ํŠธ๋ž˜ํ”ฝ์ด ๊ฐ์†Œ๋˜๋ฉด, ์„œ์„œํžˆ ๋ถ€ํ•˜๊ฐ€ ๋‚ฎ์•„์ง€๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.
  • ์ผ์ • ๊ตฌ๊ฐ„ ๋ฐ‘์œผ๋กœ ๋–จ์–ด์ง€๋ฉด ์Šค์ผ€์ผ์ธ์ด ์ผ์–ด๋‚˜๋ฉด์„œ Pod ๊ฐ€ ํ•˜๋‚˜ ์‚ญ์ œ

 

4-3. ํ˜„์‹ค์ ์ธ ์Šค์ผ€์ผ๋ง

์ถœ์ฒ˜URL : https://inf.run/k7mF

  • CPU ๊ฐ€ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ Pod ๊ฐ€ ์ „๋ถ€ ์ฃฝ๋Š”๋‹ค
  • 100%๋ฅผ ๋„˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์Šค์ผ€์ผ์•„์›ƒ
  • ๊ธฐ์กด์— ์ฃฝ์€ Pod ๋Š” ์…€ํ”„ํž๋ง์œผ๋กœ Restarting
  • ์Šค์ผ€์ผ ์•„์›ƒ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” Pod ๋Š” Strating
  • Pod ๊ฐ€ ๋œจ๋Š” ์‹œ๊ฐ„๋งŒํผ ์„œ๋น„์Šค ์ค‘๋‹จ์ด ๋ฐœ์ƒ

→ ๋ฏธ๋ฆฌ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ํŠธ๋ž˜ํ”ฝ์—๋Š” ์žฅ์‚ฌ๊ฐ€ ์—†๋‹ค

 

 

4-4. behavior

์žฆ์€ ์Šค์ผ€์ผ๋ง์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ
  • ๋ถ€ํ•˜๊ฐ€ ์ž ๊น ์˜ฌ๋ผ๊ฐ€๊ณ , ๋‚ด๋ ค๊ฐ€๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒ
  • ์Šค์ผ€์ผ ์•„์›ƒ์ด ๋˜๋ฉด, ์ƒˆ Pod ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ๋ฐ”๋กœ ์ฃฝ๋Š” ๊ณผ์ •์—์„œ cpu ๊ฐ€ ๋น„ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ
  • ์•ˆ์ •ํ™” ์œˆ๋„์šฐ ์„ค์ •
    stabilizationWindowSeconds: 120 → 2๋ถ„ ๋™์•ˆ cpu ๊ฐ€ 60%๋ฅผ ์œ ์ง€ํ•ด์•ผ ์Šค์ผ€์ผ์•„์›ƒ ๋ฐœ์ƒ
    stabilizationWindowSeconds: 600 → ๋ถ€ํ•˜๊ฐ€ ๊ฐ์†Œํ•ด๋„ 10๋ถ„๋™์•ˆ Pod ์ˆ˜ ๋Œ€๊ธฐ

 

4-5. HPA ๋™์ž‘ ํ™•์ธ

  1. ๋ถ€ํ•˜ ๋ฐœ์ƒ (2๋ถ„)
  2. ๋ฏธ์ ์šฉ
    1. stabilizationWindowSeconds: 120 ๋ฅผ ์ง€์šฐ๊ณ  ๋ถ€ํ•˜ ๋ฐœ์ƒ
    2. ๋ฐ”๋กœ ์Šค์ผ€์ผ์•„์›ƒ ํ™•์ธ

 

5. ์‘์šฉ๋ฏธ์…˜

https://soyeon-devlog.tistory.com/45