์ด ๊ธ์ Kubernetes Best Practice๋ฅผ ์ฝ๊ณ ๊ฐ์ธ์ ์ผ๋ก ์ค์ํ๋ค๊ณ ์๊ฐํ๋ ๋ถ๋ถ๊ณผ ์ ๋ชจ๋ฅด๋ ๋ถ๋ถ์ ๋ํด ๊ณต๋ถํ ๋ด์ฉ์ ์์ฑํ ๊ธ์ ๋๋ค. ๋ชจ๋ ๋ด์ฉ์ ์ฑ ์ ํฌํจ๋์ด ์๋ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ์์ผ๋ฉฐ ์์ธํ ๋ด์ฉ์ด ๊ถ๊ธํ์ ๋ถ๋ค์ ์ฑ ์ ๊ตฌ๋งคํด์ ์ฝ๋ ๊ฒ์ ๊ถ์ฅ๋๋ฆฝ๋๋ค.
์ต๊ทผ ์๋น์ค ๋ฉ์์ ๋ํด ์์๋ณด๊ฑฐ๋ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ๊ณ ๊ณต๋ถํ๋ฉด์ ๊ฐ์ฅ ๋ง์ด ๋ค์๋ ์๊ฐ์ ์ด ๋ฐฉ๋ฒ์ด ์ต์ ์ธ๊ฐ? ๋ผ๋ ์๊ฐ์ด์์ต๋๋ค. ์ด์ ๋ํ ๊ถ๊ธ์ฆ์ ํด๊ฒฐํ๋๋ฐ ๋์์ด ๋ ๋งํ ์ฑ
์ ๋ฐ๊ฒฌํด์ ์ฝ์ด๋ณด๊ณ ์ ํฉ๋๋ค.
๋ฉํธ๋ฆญ vs ๋ก๊ทธ
๋ชจ๋ํฐ๋ง? ๋ก๊น ? ๋ฉํธ๋ฆญ? ๋ก๊ทธ? ์ธํด์ ์งํํ์ ๋ ์ด๋ฌํ ์ฉ์ด๋ค์ด ์ด๋ค ์ฐจ์ด์ ์ ๊ฐ์ง๊ณ ์๋์ง ํท๊ฐ๋ ธ๋ ๊ธฐ์ต์ด ์์ต๋๋ค. ์ฑ ์์๋ ๋ฉํธ๋ฆญ๊ณผ ๋ก๊ทธ๋ ์ํธ๋ณด์์ ์ธ ๊ด๊ณ์ด์ง๋ง ์ฌ์ฉ ๋ชฉ์ ์ ์์ด ์ฐจ์ด์ ์ด ์กด์ฌํ๋ค๊ณ ๋งํฉ๋๋ค.
๋ฉํธ๋ฆญ์ ํน์ ๊ธฐ์ค์ ๋ํ ์์น๋ฅผ ๋ํ๋ธ๋ค๋ฉด ๋ก๊ทธ๋ ์ด๋ค ์ค๋ฅ์ธ์ง ํ์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ ์ดํด์๊ฐ ๋์์ง๋ ์ํฉ์ ๋ฉํธ๋ฆญ์ ํตํด ํ์ ํ๋ค๋ฉด ์ด๋ก ์ธํด ๋ฐ์ํ๋ ์ค๋ฅ์ ๋ํ ๋ด์ฉ์ ํ์ ํ๊ธฐ ์ํด์๋ ๋ก๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ชจ๋ํฐ๋ง
๋จผ์ ๋ชจ๋ํฐ๋ง์ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ธ๋๋ฐ์ค์ ํ์ดํธ๋ฐ์ค ๋ชจ๋ํฐ๋ง์ผ๋ก ๋๋์ด์ง๋๋ค.
- ๋ธ๋๋ฐ์ค ๋ชจ๋ํฐ๋ง
์ดํ๋ฆฌ์ผ์ด์ ์ ์ธ๋ถ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋ฐฉ๋ฒ์ ๋งํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก CPU, ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ธํ๋ผ ์์ค์ ๋ชจ๋ํฐ๋ง์ ์ฌ์ฉํฉ๋๋ค. - ํ์ดํธ๋ฐ์ค ๋ชจ๋ํฐ๋ง
์ดํ๋ฆฌ์ผ์ด์ ์ ๋ด๋ถ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋ฐฉ๋ฒ์ ๋งํฉ๋๋ค. ์์ฒญ, ์๋ฌ์จ, ๋ ์ดํด์์ ๊ฐ์ ์ดํ๋ฆฌ์ผ์ด์ ์์ค์ ๋ชจ๋ํฐ๋ง์ ์ฌ์ฉํฉ๋๋ค.
์ธํ๋ผ ์์ค์ ๋ชจ๋ํฐ๋ง์ ์ค๊ณํ ๋์๋ ์ฌ์ฉ๋ฅ , ํฌํ๋, ์ค๋ฅ์จ(USE)์ ํ์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์์คํ ์ ๋ฆฌ์์ค์ ๋ํ ์ ํ๊ณผ ์ค๋ฅ๋ฅผ ํ์ ํ ์ ์์ต๋๋ค.
์ดํ๋ฆฌ์ผ์ด์ ์์ค์ ๋ชจ๋ํฐ๋ง์ ์ค๊ณํ ๋์๋ ์์ฒญ, ์ค๋ฅ์จ, ์์ ์๊ฐ(RED)์ ํ์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๋ ์ ์ ์ ์ ์ฅ์์ ์๋น์ค์ ๋ํ ๊ฒฝํ์ ํ์ ํ ์ ์์ต๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค ๋ฉํธ๋ฆญ
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๋ฐ ๊ตฌ๋ ์ค์ธ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ํ์ธํ๊ธฐ ์ํด์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์์๋ค์ ํตํด ๋ฉํธ๋ฆญ์ ์์งํฉ๋๋ค.
cAdvisor
cAdvisor๋ ์ปจํ ์ด๋ ๋ฆฌ์์ค์ ๊ด๋ จ๋ ๋ฉํธ๋ฆญ์ ์์งํ๋ ์คํ์์ค์ ๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค์ ์์ปค๋ ธ๋์ ์กด์ฌํ๋ kubelet์ ๋ด์ฅ๋์ด ์์ผ๋ฉฐ ๋ด๋ถ์ ์ผ๋ก๋ Linux cgroups์ ์ํด ๋ถ๋ฆฌ๋ CPU, Memory, ๋คํธ์ํฌ์ ๊ฐ์ ๋ฆฌ์์ค ๋ฉํธ๋ฆญ์ ์ปค๋์ ๋ด์ฅ๋ statfs๋ฅผ ํตํด ์์งํฉ๋๋ค. cAdvisor Github์ ์ดํด๋ณด๋ฉด ๋ฆฌ๋ ์ค ์ปจํ ์ด๋ ๊ธฐ์ ์ ์ฌ์ฉํ ๋ ์คํ ์ต์ ์ ๋ณผ ์ ์์ต๋๋ค.
๊ฐ๋จํ๊ฒ ์ดํด๋ณด๋ฉด cgroup์ ์ํด ๋ถ๋ฆฌ๋ ๋ฆฌ์์ค์ ๋ํ ๋ฉํธ๋ฆญ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ ๋ณผ๋ฅจ์ผ๋ก ๋ถํฐ statfs๋ฅผ ํตํด ๋ฉํธ๋ฆญ์ ์์งํ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
Metric-Server
์ด์ ์ ๋ฉํธ๋ฆญ ์์ง์ ์ฌ์ฉ๋๋ Heapster๋ 1.11 ๋ฒ์ ๋ถํฐ Deprecated ๋๊ธฐ ์์ํด 1.13 ๋ฒ์ ์ดํ์๋ ๋ด๋ถ ์ปดํฌ๋ํธ์์ ์์ ํ ์ญ์ ๋์์ต๋๋ค. ํ์ฌ๋ Heapster ๋์ ์ฟ ๋ฒ๋คํฐ์ค์ ๋ฉํธ๋ฆญ์ ์์งํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค. (๋ฆฌ์์ค ๋ชจ๋ํฐ๋ง ๋๊ตฌ Docs)
- ๋ฆฌ์์ค ๋ฉํธ๋ฆญ
HPA, VPA, ์ค์ผ์ค๋ง์ ์ฌ์ฉ๋๋ ๋ฆฌ์์ค ๋ฉํธ๋ฆญ์ ์์งํ๊ธฐ ์ํด ํ์ค API ๊ตฌํ์ฒด์ธ ๋ฉํธ๋ฆญ ์๋ฒ๋ฅผ ์ฌ์ฉํฉ๋๋ค. Metric Server๋ ๊ฐ ์์ปค ๋ ธ๋์ ์กด์ฌํ๋ kubelet์ด ๋ ธ์ถํ๋ API๋ฅผ ํตํด ๋ฉํธ๋ฆญ์ ์์งํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ ์ด๋ฅผ ํตํด ํด๋ฌ์คํฐ์ ์ค์ผ์ผ๋ง ๋ฐ ์ค์ผ์ค๋ง์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. - ์ฌ์ฉ์ ์ ์ ๋ฉํธ๋ฆญ
ํ์ค ๊ตฌํ์ฒด์ธ Metric Server์์ ์ ๊ณตํ๋ ๋ฉํธ๋ฆญ ์ด์ธ์๋ ์ถ๊ฐ๋ก ์ํ๋ ๋ฉํธ๋ฆญ์ ์์งํ๊ธฐ ์ํด์๋ ์ถ๊ฐ๋ก ๋ฉํธ๋ฆญ์ ์์งํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ ์ธ๋ถ ๋ชจ๋ํฐ๋ง ์๋ฃจ์ ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์์ง ๋ฐ ๋ณด๊ดํ๊ณ ์ด๋ฅผ Custom Metric API๋ก ๋ ธ์ถ์ํค๋ API Adapter๋ฅผ ๊ตฌํํจ์ผ๋ก์จ HPA ๋ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ex) Prometheus Adapter
kube-state-metrics
kube-state-metrics๋ ํด๋ฌ์คํฐ์ ๋ฐฐํฌ๋ ์ค๋ธ์ ํธ์ ์ํ๋ฅผ ํ์ ํ๊ธฐ ์ํ ์คํ ์์ค๋ก ๋๊ธฐ ์ค์ธ Pod์ ๊ฐ์, ์ฌ์ฉ ๊ฐ๋ฅํ Replica ์์ ๊ฐ์ ๋ฐ์ดํฐ๋ค์ ์์งํ ์ ์์ต๋๋ค. ์์งํ๋ ๋ฐ์ดํฐ์ ๋ํ ์์ธํ ์ ๋ณด๋ Github์์ ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ค ๋ฉํธ๋ฆญ์ ๋ชจ๋ํฐ๋ง ํด์ผ ํ ๊น?
๋ชจ๋ํฐ๋ง ์๋ฃจ์ ์ ๊ตฌ์ถํ ๋ ์๊ฐํด์ผ ํ ์ ์ ์ด๋ค ๋ฉํธ๋ฆญ์ ์์งํด์ผํ ์ง์ ๋ํ ๋ถ๋ถ์ ๋๋ค. ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์์คํ ์ ์ํ๋ฅผ ์ ์ ์๋ ๋ชจ๋ ๋ฉํธ๋ฆญ์ ์์งํ๋ ๊ฒ์ด์ง๋ง, ๋๋ฌด ๋ง์ ๋ฉํธ๋ฆญ์ผ๋ก ์ธํด ์ด๋ค ๋ฉํธ๋ฆญ์ ์ง์คํด์ผํ ์ง ๊ฒฐ์ ํ๊ธฐ ์ด๋ ค์์ง๋ ๋ฌธ์ ๊ฐ ์กด์ฌํฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ ๋ชจ๋ํฐ๋ง์ ๋ํ ์ ํํ Layer๋ฅผ ๋๋์ด ๋ฉํธ๋ฆญ์ ๋ถ๋ฅํ๊ณ ์ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ์์ธ์ ํ์ ํ๊ธฐ ์ํด Layer์ ๊ณ์ธต์ ๋ฐ๋ผ ๋ถ์ํจ์ผ๋ก์จ ๋ชจ๋ํฐ๋ง์ ํจ์จ์ ๋์ผ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋๋ ์ ์๋ Layer๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ ธ๋ (CPU / Memory / Disk)
- ํด๋ฌ์คํฐ ์ปดํฌ๋ํธ (etcd)
- ํด๋ฌ์คํฐ Addon (HPA, Ingress)
- ์ฌ์ฉ์ ์ดํ๋ฆฌ์ผ์ด์ (Container Resource, Application Metric)
๋ก๊น
ํด๋ฌ์คํฐ์ ์ ์ฒด ์ํ๋ฅผ ํ์ ํ๊ธฐ ์ํด์๋ ์ฌ๋ฌ ๊ณณ์์ ๋ฐ์ํ๋ ๋ก๊ทธ๋ ์์งํ์ฌ ์ค์ ์ง์คํ ํด์ผํ ํ์๊ฐ ์์ต๋๋ค. ๋ก๊ทธ๋ ๋ฉํธ๋ฆญ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋๋ฌด ๋ง์ ๋ก๊ทธ๋ฅผ ์์งํ๋ ๊ฒฝ์ฐ ์ด๋ค ๋ก๊ทธ๋ฅผ ์งํ๋ก ์ผ์์ผํ๋์ง ๊ฒฐ์ ํ๊ธฐ ์ด๋ ค์์ง๋ฉฐ, ๋ก๊ทธ ๋ณด๊ด์ ์ํ ๋น์ฉ ๋ฌธ์ ๋ ๋ฐ์ํฉ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์ด๋ค ๋ก๊ทธ๊ฐ ํ์ํ์ง, ์์ง๋ ๋ก๊ทธ๋ฅผ ์ผ๋ง๋ ๋ณด๊ดํ ์ง์ ๋ํด์ ์ ์ฑ ์ ์ ํ ํ์๊ฐ ์์ต๋๋ค.
์์งํด์ผํ ๋ก๊ทธ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋
ธ๋ ๋ก๊ทธ
๋ ธ๋ ๋ ๋ฒจ์ ๋ก๊ทธ (์ด๋ค ์ข ๋ฅ์ ๋ก๊ทธ๊ฐ ์กด์ฌํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค..) - ์ปจํธ๋กค ํ๋ ์ธ (API Server, Scheduler, Controller Manager) ๋ก๊ทธ
์ฟ ๋ฒ๋คํฐ์ค์ ์ค๋ธ์ ํธ์ ๋ํ ์ด๋ฒคํธ๋ก๋ ์์ธ์ ํ์ ํ๊ธฐ ํ๋ค ๊ฒฝ์ฐ ์ปจํธ๋กค ํ๋ ์ธ์ ๋ํ ๋ก๊ทธ๋ฅผ ํตํด ๋ณด๋ค ์ฝ๊ฒ ์์ธ์ ํ์ ํ ์๋ ์์ต๋๋ค. ์ด๋ฌํ ๋ก๊ทธ๋ ํธ์คํธ์ /var/log/ ๋๋ ํ ๋ฆฌ ์๋์ ์กด์ฌํฉ๋๋ค. - Audit ๋ก๊ทธ
์์คํ ๋ด๋ถ์ ๋๊ฐ ๋ฌด์์ ํ๋์ง์ ๋ํ ๋ก๊ทธ๋ก ๋ณด์์ ๊ด๋ จ๋ ๋ชจ๋ํฐ๋ง์ ์ํด ์ฌ์ฉํฉ๋๋ค. ํ์ง๋ง ๋๊ท๋ชจ์ ํด๋ฌ์คํฐ ํ๊ฒฝ์์๋ ๋ก๊ทธ ์์ ์ํด ์์คํ ๋ถํ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ๊ตฌ์ฑํด์ผํฉ๋๋ค. - ์ดํ๋ฆฌ์ผ์ด์
์ปจํ
์ด๋ ๋ก๊ทธ
์ดํ๋ฆฌ์ผ์ด์ ์ ์ํ์ ๋ํ Observability๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ดํ๋ฆฌ์ผ์ด์ ์ ์์งํ๋ ๋ฐฉ์์ ์ง์ STDOUT์ ํตํด ๋ด๋ณด๋ด๊ฑฐ๋ Sidecar๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ์ด ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์กด์ฌํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ด๋ จ ๋ฌธ์์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
๋ก๊น ์ํคํ ์ณ
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์์ ๋ก๊น ์ํคํ ์ณ๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํด ๋ค์ํ ๋๊ตฌ๊ฐ ์กด์ฌํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก๋ Fluentd๋ฅผ DaemonSet์ผ๋ก ๋ฐฐํฌํ์ฌ ๋ก๊ทธ๋ฅผ ์์งํ๊ณ ์ด๋ฅผ Elasticsearch์ ์ ์ฅ ๋ฐ Kibana๋ฅผ ํตํด ์๊ฐํํ๋ EFK ์คํ์ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค.
์๋ฆผ
๋ชจ๋ํฐ๋ง ๋ฐ ๋ก๊น ์ ์ต์ข ๋ชฉ์ ์ ์์คํ ์ ์ด์ ์งํ๋ฅผ ํ์ ํ๊ณ ์ด๋ฅผ ๊ฐ๋ฐ์์๊ฒ ์๋ฆผ์ ์์ต๋๋ค. ์ฆ, ๋ฐ์ดํฐ๋ฅผ ์ ์์งํ๋ ๊ฒ๋งํผ ์ค์ํ ๊ฒ์ด ์ด๋ฅผ ํตํด ์ ์ ํ๊ฒ ์๋ฆผ์ ๋ณด๋ด๊ณ ์๋์ง ์ ๋๋ค.
๋ค์ด๋ฒ ๊ฒ์ SREํ์ ๋ฐํ ์๋ฃ๋ D2๊ธ์ ๋ณด๋ฉด ๋๋ฌด ๋ง์ ์๋ฆผ์ ์๋ฆผ ํผ๋ก๋ฅผ ๋ฐ์์์ผ ์ ๋ง ์ง์คํด์ผํ ๋ฌธ์ ๋ฅผ ๋์น๊ฒ ๋ ์๋ ์๋ค๊ณ ๋งํฉ๋๋ค. SLO(SRE ์์ง๋์ด๋ง์์ ์๋น์ค๋ฅผ ์ด์์ ํ์์ ์ธ ๊ธฐ์ค์ SLO๋ผ๊ณ ์ ์ํฉ๋๋ค.)๋ฅผ ์ค์ ํ ๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ๊ฐ์ ํด์ผ ํ๋ ์ํฉ ์ด์ธ์ ์๋์ผ๋ก ํด๊ฒฐ๋ ์ ์๋ ํ๋์ด ์๋ค๋ฉด ์๋์ ๋ณด๋ด์ง ์์์ผ๋ก ์๋ ํผ๋ก๋ฅผ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ์ด ๋ ์ ์์ต๋๋ค. ๋ํ, ์๋์ ๋ํ ์๊ณ์น๋ฅผ ์ค์ ํ ๋ ๋๋ฌด ์งง์ ์ฃผ๊ธฐ๋ก ์๋์ ๋ฐ์์ํจ๋ค๋ฉด ์ค๋ณต์ด ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์๊ณ์น์ ๋ํ ๊ณ ๋ ค๋ ํ์ํฉ๋๋ค.
'๐ Book Review > ๐ Kubernetes Best Practice' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kubernetes Best Practice] 6. ๋ฒ์ , ๋ฆด๋ฆฌ์ค, ๋กค์์ (0) | 2021.03.01 |
---|---|
[Kubernetes Best Practice] 5. ์ง์์ ํตํฉ, ํ ์คํธ, ๋ฐฐํฌ (0) | 2021.02.25 |
[Kubernetes Best Practice] 4. ์ค์ , ์ํฌ๋ฆฟ, RBAC (0) | 2021.02.22 |
[Kubernetes Best Practice] 2. ๊ฐ๋ฐ์ ์ํฌํ๋ก (0) | 2021.01.31 |
[Kubernetes Best Practice] 1. ๊ธฐ๋ณธ ์๋น์ค ์ค์น (0) | 2021.01.30 |
๋๊ธ