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

(3) ์‹ค๋ฌด์—์„œ ๋А๊ปด ๋ณธ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์ •๋ง ํŽธํ•œ ์ด์œ 

mallin 2025. 5. 29. 15:54

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

 

1. IT ์ธํ”„๋ผ ๊ตฌ์ถ•

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

๊ฐœ๋ฐœ App ๊ฐœ๋ฐœ์—์„œ ๋ฐฐํฌ๊นŒ์ง€ ์จ์•ผํ•˜๋Š” ๊ธฐ์ˆ ๋“ค
์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ / ๋งค๋‹ˆ์ง• App ์„ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋กœ ๋งŒ๋“ค ๋•Œ ์“ฐ๋ฉด ์ข‹์€ ๊ธฐ์ˆ ๋“ค
ํ”Œ๋žซํผ, ๋Ÿฐํƒ€์ž„ App ์„ ํด๋ผ์šฐ๋“œ๋กœ ์˜ฌ๋ฆด ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ ๋“ค
ํ”„๋กœ๋น„์ €๋‹, ๋ถ„์„ App ์„ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋กœ ๊ฐœ๋ฐœํ•˜๊ณ , ํด๋ผ์šฐ๋“œ๊นŒ์ง€ ์˜ฌ๋ฆฐ๋‹ค๋ฉด ์•Œ์•„์•ผ ํ•˜๋Š” ๊ธฐ์ˆ ๋“ค

 

์‹ค์ œ ์—ฌ๊ธฐ์„œ ๋ชจ๋‹ˆํ„ฐ๋ง, ๋กœ๊น…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์•Œ์•„๋ณด๋ฉด

๊ธฐ์กด์—๋Š”

  1. ๊ฐœ๋ฐœ๊ณผ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์ด ์„œ๋กœ ์—ฎ์ผ ์ˆ˜ ๋ฐ–์— ์—†๋Š” ๊ตฌ์กฐ
  2. ๊ฐœ๋ฐœ์—์„œ๋Š” ํ•œ๋ฒˆ๋„ ์จ๋ณด์ง€ ์•Š์€ (๊ฐœ๋ฐœ ์‹œ์Šคํ…œ์„ ์œ„ํ•œ) ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์„ ๋งŒ๋“œ๋Š” ๊ตฌ์กฐ
  3. ์˜คํ”ˆ์‹œ ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ์™€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฒ”์œ„์˜ App ๋“ค์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๊ฒŒ ๋˜๋Š” ๊ตฌ์กฐ

์˜€์ง€๋งŒ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ƒํƒœ๊ณ„์— ์žˆ๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๋กœ๊น… ํˆด์„ ์‚ฌ์šฉํ•˜๋ฉด

  1. ๊ฐœ๋ฐœ๊ณผ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์ด ์„œ๋กœ ์—ฎ์ด์ง€ ์•Š๋Š” ๊ตฌ์กฐ
  2. ๊ฐœ๋ฐœ์—์„œ๋Š”  ์ดˆ๊ธฐ๋ถ€ํ„ฐ ๋ฐ”๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์„ ๋งŒ๋“œ๋Š” ๊ตฌ์กฐ
  3. ์˜คํ”ˆ์‹œ ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ์™€ ์ž๋™์œผ๋กœ ๊ฐ™์•„์ง€๋Š” ๋ฒ”์œ„์˜ App ๋“ค์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๊ฒŒ ๋˜๋Š” ๊ตฌ์กฐ

๋กœ ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


2. ๋ชจ๋‹ˆํ„ฐ๋ง ์„ค์น˜ (Loki-Stack)

https://cafe.naver.com/kubeops/30 ๋ฅผ ํ†ตํ•ด ์„ค์น˜ ๊ฐ€๋Šฅ

Prometheus, Grafana, Loki-Stack ์„ ์„ค์น˜ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ๊ฐ๊ฐ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค.

  ์—ญํ•  ๊ธฐ๋Šฅ
Prometheus ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ - ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์ €์žฅ
- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์‹œ์Šคํ…œ์˜ ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘
Grafana ์‹œ๊ฐํ™”  - Prometheus ์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์‹œ๋ณด๋“œ๋กœ ์‹œ๊ฐํ™”
- ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๊ฐ€๋Šฅํ•œ ๊ทธ๋ž˜ํ”„, ์ฐจํŠธ, ํ…Œ์ด๋ธ”
Loki ๋กœ๊ทธ ์ €์žฅ/๋ถ„์„ - ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€๋งŒ, ๋ฉ”ํŠธ๋ฆญ์ฒ˜๋Ÿผ ์ธ๋ฑ์‹ฑ์€ ์ตœ์†Œํ™”ํ•ด์„œ ํšจ์œจ์ 
- Grafana ์™€ ์ž˜ ํ†ตํ•ฉ๋˜์–ด ๋กœ๊ทธ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ณ , ๋ฉ”ํŠธ๋ฆญ๊ณผ ๋กœ๊ทธ๋ฅผ ์—ฐ๊ณ„ ๋ถ„์„ ๊ฐ€๋Šฅ
Loki-stack ํ†ตํ•ฉ ๋ฐฐํฌ ์Šคํƒ - Loki + Grafana + Promtail (Loki ์— ๋กœ๊ทธ๋ฅผ ๋ณด๋‚ด๋Š” ๋กœ๊ทธ ์ˆ˜์ง‘๊ธฐ) ์„ ๋ฌถ์€ ์Šคํƒ

 

์‹ค์ œ๋กœ ์„ค์น˜ํ•œ ํ›„ Grafana ๋Œ€์‹œ๋ณด๋“œ์— ๋“ค์–ด๊ฐ€๋ฉด ๋‹ค์–‘ํ•œ ๋Œ€์‹œ๋ณด๋“œ๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

pod ๋Œ€์‹œ๋ณด๋“œ

  • ํ•˜๋‚˜์˜ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋‚˜๋งŒ์˜ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • https://grafana.com/grafana/dashboards/ ์—์„œ ๋‹ค์–‘ํ•œ ๋Œ€์‹œ๋ณด๋“œ๋“ค์„ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ •๋ง ๋‹ค์–‘ํ•œ ๋Œ€์‹œ๋ณด๋“œ๋“ค์„ ์ง€์›ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Explore ์—์„œ Loki ๋ฅผ ํ†ตํ•ด 

 

๊ฐ ํŒŒ๋“œ๋“ค์˜ Log ๋„ ํ™•์ธ๊ฐ€๋Šฅํ•˜๋‹ค.


3. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋Œ€ํ‘œ ๊ธฐ๋Šฅ - Traffic Routing, Self-Handling, AutoScaling, RollingUpdate

 

ํ˜„์žฌ ๋– ์žˆ๋Š” Pod ๋Š” ๋‘๊ฐœ

App ์„ ํ˜ธ์ถœํ•˜๋ฉด ๋‘ Pod ์— ํŠธ๋ž˜ํ”ฝ์ด ๊ณจ๊ณ ๋ฃจ ๋“ค์–ด๊ฐ„๋‹ค

 

[3-1] App ์— ์ง€์†์ ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ ๋ณด๋‚ด๊ธฐ (Traffic Routing ํ…Œ์ŠคํŠธ)

while true; do curl http://192.168.56.30:31221/hostname; sleep 2; echo '';  done;

 

→ App ์— ์ง€์†์ ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ด์„œ ๊ณจ๊ณ ๋ฃจ ํŠธ๋ž˜ํ”ฝ์ด ๋‘ Pod ๋กœ ๊ฐ€๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ

→ ๋‘ Pod ์— ํŠธ๋ž˜ํ”ฝ์„ ๊ณจ๊ณ ๋ฃจ ๋ถ„์‚ฐํ•œ๋‹ค

 

 

→ ๋งŒ์•ฝ ์‹ค์ˆ˜๋กœ ํ•˜๋‚˜์˜ Pod ๊ฐ€ ์‚ญ์ œ๋˜์–ด๋„ ์ƒˆ๋กœ์šด Pod ๊ฐ€ ๋‹ค์‹œ ๋œจ๊ณ , ๋œฐ ๋™์•ˆ์€ ํ•ด๋‹น Pod ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ด์ง€ ์•Š๋Š”๋‹ค. 

 

[3-2] App์— Memory Leak ๋‚˜๊ฒŒ ํ•˜๊ธฐ (Self-Healing ํ…Œ์ŠคํŠธ)

curl 192.168.56.30:31221/memory-leak

 

→ ํŠธ๋ž˜ํ”ฝ์„ ๋ฐ›์€ ํŒŒ๋“œ ํ•˜๋‚˜๊ฐ€ ์ฃฝ๊ณ , ์žฌ์‹œ์ž‘์ด 1๋กœ ์˜ฌ๋ผ๊ฐ

→ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ App ์ด ์ฃฝ์ž๋งˆ์ž ์žฌ์‹œ์ž‘์„ ์‹œํ‚ด

 

[3-3] App์— ๋ถ€ํ•˜์ฃผ๊ธฐ (AutoScaling ํ…Œ์ŠคํŠธ)

curl 192.168.56.30:31221/cpu-load

 

→ ๋ถ€ํ•˜๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์•Œ์•„์„œ ์ƒˆ๋กœ์šด ํŒŒ๋“œ๋“ค์„ ๋„์›Œ์ค€๋‹ค

→ ๊ทธ๋ฆฌ๊ณ  ์‹œ๊ฐ„์ด ์ง€๋‚˜์„œ ๋ถ€ํ•˜๊ฐ€ ๋–จ์–ด์ง€๋ฉด, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์•Œ์•„์„œ ํŒŒ๋“œ๋“ค์„ ๊ฐ์†Œ

 

[3-4] ๊ธฐ๋™๋˜์ง€ ์•Š๋Š” App ์—…๋ฐ์ดํŠธ (RollingUpdate ํ…Œ์ŠคํŠธ)

kubectl set image -n default deployment/app-1-2-2-1 app-1-2-2-1=1pro/app-error

 

→ App ์ด ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ๊ณ„์† ์•ฑ์„ ์žฌ์‹œ์ž‘

→ ์ƒˆ ์ด๋ฏธ์ง€๊ฐ€ ์ž˜ ๊ธฐ๋™์ด ๋˜๋Š”์ง€ ํ™•์ธ ํ›„ ๊ธฐ์กด ์ด๋ฏธ์ง€๋ฅผ ๋ฐ”๊พธ๊ธฐ ๋•Œ๋ฌธ์— ์ž‘์—…์ž์˜ ์‹ค์ˆ˜๊ฐ€ ์žˆ์–ด๋„ ๋ณด์™„


4. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋กœ ํŽธํ•ด์ง„ ์„œ๋น„์Šค ์•ˆ์ •ํ™” ๋ฐ ์ธํ”„๋ผ ํ™˜๊ฒฝ ๊ด€๋ฆฌ ์ฝ”๋“œํ™”

[4-1] ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ธฐ๋Šฅ์œผ๋กœ ํŽธํ•ด์ง„ ์„œ๋น„์Šค ์•ˆ์ •ํ™”

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

  ๋ถ€ํ•˜๊ฐ€ ์‹ฌํ•ด์ง„ ๊ฒฝ์šฐ
๊ธฐ์กด VM ํ™˜๊ฒฝ
  • VM ๋‹ด๋‹น์ž : ์ˆ˜๋™์œผ๋กœ was, jdk, os, network, storgae ์„ค์ •๋“ค์„ ๋ฏธ๋ฆฌ ํ•ด๋‘”๋‹ค
  • Web ๋‹ด๋‹น์ž : ์›น์„œ๋ฒ„๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์‚ฌ๋žŒ์ด IP ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค
→ ์–ด๋–ค ์‚ฌ์ด๋“œ์ดํŽ™์ด ๋ฐœ์ƒํ• ์ง€ ๋ชจ๋ฅด๋‹ˆ ๋ฐค์— ์ž‘์—…
  • ๋‹ค์Œ๋‚  ๋ชจ๋‹ˆํ„ฐ๋ง ๋‹ด๋‹น์ž์—๊ฒŒ App ์ด ์„ธ ๊ฐœ ๋ณด์ด๋„๋ก config ์ž‘์—…
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™˜๊ฒฝ
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์—”์ง€๋‹ˆ์–ด : ํŒŒ๋“œ๋ฅผ ๋Š˜๋ฆฐ๋‹ค
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ํŒŒ๋“œ ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ์ˆ˜๋™์œผ๋กœ ํ–ˆ๋˜ IP Setting, Config ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์ ์šฉํ•ด์ค€๋‹ค

 

→ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™˜๊ฒฝ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋น ๋ฅด๊ณ  ๊ด€๋ฆฌ์ž์˜ ๋ถ€๋‹ด์„ ๋œ ์ˆ˜ ์žˆ๋‹ค.

 

[4-2] ์ธํ”„๋ผ ํ™˜๊ฒฝ ๊ด€๋ฆฌ์˜ ์ฝ”๋“œํ™”

  • ์ธํ”„๋ผ ์„ค์ •์„ ์ˆ˜๋™์œผ๋กœ ํ•˜๋Š” ๊ฑฐ๋ž‘ ํŒŒ๋“œ์— ์ธํ”„๋ผ ํ™˜๊ฒฝ ์„ค์ •์ด ์ฝ”๋“œ๋กœ ๋“ค์–ด๊ฐ€์„œ ์ž๋™์œผ๋กœ ํ•˜๋Š” ๊ฑด ํฐ ์ฐจ์ด๋‹ค.

๐Ÿ‘ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค, ์ธํ”„๋ผ ํ™˜๊ฒฝ ๊ด€๋ฆฌ์˜ ์žฅ์ 

  1. ์ธํ”„๋ผ์— ๋Œ€ํ•œ History ๊ด€๋ฆฌ๊ฐ€ ํŽธํ•จ
  2. ์ธํ”„๋ผ ์ž‘์—… ์ถ”์  ๊ฐ€๋Šฅ
  3. ์ธํ”„๋ผ ํ™˜๊ฒฝ๋ณ„ ํŒŒ์ผ ์ƒ์„ฑ
    1. ์‹œ๊ฐ„์ด ์žˆ์„ ๋•Œ ๋ฏธ๋ฆฌ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ
    2. ์ž‘์—…์€ Copy & Paste
  4. ์ธํ”„๋ผ ๋ฐ˜๋ณต ์ž‘์—… x, ํ€„๋ฆฌํ‹ฐ ํ–ฅ์ƒ์— ์ง‘์ค‘
  5. ์ƒˆ ์ธํ”„๋ผ ์ž‘์—…์‹œ ์ด์ „ ๊ฒฝํ—˜์„ ๋…น์ธ ์ฝ”๋“œ ํ™œ์šฉ