โ ์ฟ ๋ฒ๋คํฐ์ค ์ด๋๋ ํด๋์ค (์ง์ํธ) - Spring 1, 2 ์ ๋ฃ๊ณ ์์ฑํ๋ ๋ณต์ต ๋ธ๋ก๊ทธ ์ ๋๋ค.
1. IT ์ธํ๋ผ ๊ตฌ์ถ
๊ฐ๋ฐ | App ๊ฐ๋ฐ์์ ๋ฐฐํฌ๊น์ง ์จ์ผํ๋ ๊ธฐ์ ๋ค |
์ค์ผ์คํธ๋ ์ด์ / ๋งค๋์ง | App ์ ๋ง์ดํฌ๋ก ์๋น์ค๋ก ๋ง๋ค ๋ ์ฐ๋ฉด ์ข์ ๊ธฐ์ ๋ค |
ํ๋ซํผ, ๋ฐํ์ | App ์ ํด๋ผ์ฐ๋๋ก ์ฌ๋ฆด ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ ๊ธฐ์ ๋ค |
ํ๋ก๋น์ ๋, ๋ถ์ | App ์ ๋ง์ดํฌ๋ก ์๋น์ค๋ก ๊ฐ๋ฐํ๊ณ , ํด๋ผ์ฐ๋๊น์ง ์ฌ๋ฆฐ๋ค๋ฉด ์์์ผ ํ๋ ๊ธฐ์ ๋ค |
์ค์ ์ฌ๊ธฐ์ ๋ชจ๋ํฐ๋ง, ๋ก๊น ์ ๊ธฐ๋ฐ์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ๋ฅผ ์์๋ณด๋ฉด
๊ธฐ์กด์๋
- ๊ฐ๋ฐ๊ณผ ๋ชจ๋ํฐ๋ง ์์คํ ์ด ์๋ก ์ฎ์ผ ์ ๋ฐ์ ์๋ ๊ตฌ์กฐ
- ๊ฐ๋ฐ์์๋ ํ๋ฒ๋ ์จ๋ณด์ง ์์ (๊ฐ๋ฐ ์์คํ ์ ์ํ) ๋ชจ๋ํฐ๋ง ์์คํ ์ ๋ง๋๋ ๊ตฌ์กฐ
- ์คํ์ ๊ฐ๋ฐ ํ๋ก์ ํธ์ ์๋ก ๋ค๋ฅธ ๋ฒ์์ App ๋ค์ ๋ชจ๋ํฐ๋ง ํ๊ฒ ๋๋ ๊ตฌ์กฐ
์์ง๋ง, ์ฟ ๋ฒ๋คํฐ์ค ์ํ๊ณ์ ์๋ ๋ชจ๋ํฐ๋ง๊ณผ ๋ก๊น ํด์ ์ฌ์ฉํ๋ฉด
- ๊ฐ๋ฐ๊ณผ ๋ชจ๋ํฐ๋ง ์์คํ ์ด ์๋ก ์ฎ์ด์ง ์๋ ๊ตฌ์กฐ
- ๊ฐ๋ฐ์์๋ ์ด๊ธฐ๋ถํฐ ๋ฐ๋ก ์ธ ์ ์๋ ๋ชจ๋ํฐ๋ง ์์คํ ์ ๋ง๋๋ ๊ตฌ์กฐ
- ์คํ์ ๊ฐ๋ฐ ํ๋ก์ ํธ์ ์๋์ผ๋ก ๊ฐ์์ง๋ ๋ฒ์์ 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 ๋์๋ณด๋์ ๋ค์ด๊ฐ๋ฉด ๋ค์ํ ๋์๋ณด๋๋ค์ ํ์ธํ ์ ์๋ค.
- ํ๋์ ๋์๋ณด๋๋ฅผ ๋ณต์ฌํด์ ๋๋ง์ ๋์๋ณด๋๋ฅผ ๋ง๋ค ์ ์๋ค.
- 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] ์ฟ ๋ฒ๋คํฐ์ค ๊ธฐ๋ฅ์ผ๋ก ํธํด์ง ์๋น์ค ์์ ํ
๋ถํ๊ฐ ์ฌํด์ง ๊ฒฝ์ฐ | |
๊ธฐ์กด VM ํ๊ฒฝ |
|
์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ |
|
→ ์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ์ผ๋ก ํ๋ ๊ฒ์ด ํจ์ฌ ๋น ๋ฅด๊ณ ๊ด๋ฆฌ์์ ๋ถ๋ด์ ๋ ์ ์๋ค.
[4-2] ์ธํ๋ผ ํ๊ฒฝ ๊ด๋ฆฌ์ ์ฝ๋ํ
- ์ธํ๋ผ ์ค์ ์ ์๋์ผ๋ก ํ๋ ๊ฑฐ๋ ํ๋์ ์ธํ๋ผ ํ๊ฒฝ ์ค์ ์ด ์ฝ๋๋ก ๋ค์ด๊ฐ์ ์๋์ผ๋ก ํ๋ ๊ฑด ํฐ ์ฐจ์ด๋ค.
๐ ์ฟ ๋ฒ๋คํฐ์ค, ์ธํ๋ผ ํ๊ฒฝ ๊ด๋ฆฌ์ ์ฅ์
- ์ธํ๋ผ์ ๋ํ History ๊ด๋ฆฌ๊ฐ ํธํจ
- ์ธํ๋ผ ์์ ์ถ์ ๊ฐ๋ฅ
- ์ธํ๋ผ ํ๊ฒฝ๋ณ ํ์ผ ์์ฑ
- ์๊ฐ์ด ์์ ๋ ๋ฏธ๋ฆฌ ๊ตฌ์ฑ ๊ฐ๋ฅ
- ์์ ์ Copy & Paste
- ์ธํ๋ผ ๋ฐ๋ณต ์์ x, ํ๋ฆฌํฐ ํฅ์์ ์ง์ค
- ์ ์ธํ๋ผ ์์ ์ ์ด์ ๊ฒฝํ์ ๋ น์ธ ์ฝ๋ ํ์ฉ
'๐ฑ ์ธํ๋ฐ > โ ์ฟ ๋ฒ๋คํฐ์ค ์ด๋๋ ํด๋์ค (์ง์ํธ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
(5) Probe ์ดํดํ๊ธฐ (1) | 2025.06.02 |
---|---|
(4) Object ๊ทธ๋ ค๋ณด๋ฉฐ ์ดํดํ๊ธฐ (0) | 2025.05.30 |
(2) ์ฟ ๋ฒ๋คํฐ์ค ๋ฌด๊ฒ๊ฐ ์๊ฒ ์ค์นํ๊ธฐ (0) | 2025.05.28 |
[๋ฏธ์ 1] ์ฟ ๋ฒ๋คํฐ์ค ์ค์น ๊ตฌ๊ฐ๋ณ ์ํ ํ์ธ (1) | 2025.05.28 |
(1) ์ปจํ ์ด๋ ํ๋ฐฉ ์ ๋ฆฌ - Linux, Container, Container Orchestration, Kernel, kubelet (0) | 2025.05.27 |