
clear : ๋ช ๋ น์ด๋ค ํด๋ฆฌ์ดwhoami : ์์ ์ ์์ด๋ ํ์ธ sudo apt-get update : ๋ฃจํธ์ฌ์ฉ์ ๊ถํ์ผ๋ก ๋ชจ๋ ํ์ผ ์ ๋ฐ์ดํธpwd : ํ์ฌ ๊ฒฝ๋ก ํ์ธcd : ํ์ผ ์ด๋ex) ubuntu/ : ๋ค์ ํด๋์ธ ubuntu๊ฒฝ๋ก๋ก ์ด๋ls : ํด๋น ๋๋ ํ ๋ฆฌ์

๋ฆฌ๋ ์ค ์ ์ฐ์ต๋ฆฌ๋ ์ค ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฐ์ตํ๋ คํ๋ putty๋ฅผ ํตํด ์ธ์ ์ ์ฐ๊ฒฐํ๊ณ , ์ฐ๋ถํฌ ์๋ฒ์ ์ฐ๊ฒฐํ๋๊ฒ ๊ท์ฐฎ๊ฒ ๋๊ปด์ก๋ค.๊ทธ๋ฌ๋ค ๋ค์ํ ๋ช ๋ น์ด๋ค์ ์ ๋ ฅํ ์ ์๋ ์ฐ์ต ์ฌ์ดํธ๋ฅผ ์ฐพ์๋ค.์ค์ ์๋ฒ์ ์์ ๋๊ฐ์ ํ๊ฒฝ๋ ์๋๊ณ , ์ค์ ์๋ฒ์ ๋ฒ์ ์ฐจ์ด๋ก ์ธํ ๋ช ๋ น์ด ์ฐจ

https://docs.docker.com/engine/install/ubuntu/์ ์ ์ํด์๊ธฐ์กด์ ์ค์นํ ์๋ฒ์ ํด๋น ์นํ์ด์ง์ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ๋์ปค๋ฅผ ์ค์นํ๋ค.์ ์ํ์ด์ง๋ด์์ ๋์ปค๊ฐ ์ ์ ์ค์น๋์๋์ง ํ์ธํ๋ ๋ช ๋ น์ด๊ฐ ์๋ค.Verify that t

๋์ปค ๋ช ๋ น์ด๋ CLI๋ก ์ ๋ ฅํ๋ ํํ.์ด ๋ช ๋ น์ด๋ฅผ ํตํด ๋์ปค๊ฐ ์ ๋๋ก ์ค์น ๋์๋์ง ํ์ธํ๋ค.์ ๋ช ๋ น์ด๋ฅผ ํตํด docker์ ์ํ๋ฅผ ์กฐํํ ์ ์๋ค.์๋น์ค๊ฐ ํ์ฑ(active)์ธ์ง, ๋นํ์ฑ(inactive)์ธ์ง, ์คํจ(failed)์ธ์ง ํ์ธํ ์ ์๋ค.(์ดํ์ ๋ช ๋ น์ด๋ฅผ

"๋ฐํ์ ์์กด์ฑ๊ณผ ํจ๊ป ์ ํ๋ฆฌ์ผ์ด์ ์ ํจํค์งํ๋ ๊ธฐ์ "์ปจํ ์ด๋์ ๋ํ ์ค๋ช ์ ์ด๋ ๊ฒ ๋์์๋ค. ์ด ๋ง๋ง ๋ค์ด์ ์๋ฏธ๊ฐ ์ ์๋ฟ์ง ์๋๋ฐ, ๋ฐํ์ ์์กด์ฑ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋ ๋(๋ฐํ์ ์์ ) ์ ์์ ์ผ๋ก ๋์ํ๊ธฐ ์ํด ํจ๊ป ์์ด์ผ ํ๋ ์ธ๋ถ ์ํํธ์จ์ด ๊ตฌ์ฑ์์๋ค์ด๋ค.

์ฟ ๋ฒ๋คํฐ์ค ๊ฐ๋ ์ ๊ณต๋ถํ ๋๋ง๋ค ๋์ค๋ pod๊ฐ ๋์ฒด ๋ฌด์์ธ์ง ๋ชจ๋ฅด๊ฒ ์ด์, ์ฟ ๋ฒ๋คํฐ์ค์ ๊ฐ๋ ๊ณผ ๊ตฌ์ฑ์์๋ฅผ ์ดํดํ๊ธฐ ์ ์ ๋จผ์ ์ดํดํ๋๋ก ํ๋ค. ์ฟ ๋ฒ๋คํฐ์ค์์ ๊ฐ์ฅ ์์ ๋ฐฐํฌ ๋จ์๋ ์ปจํ ์ด๋๊ฐ ์๋๋ผ Pod๋ค. Pod๋ ํ๋ ์ด์์ ์ปจํ ์ด๋๋ฅผ ํฌํจํ ์ ์๋ค.Pod์ ์ฝํ

์ถ์ฒ : CNF - ์ฟ ๋ฒ๋คํฐ์ค ์ํคํ ์ฒ ์๋ฒฝ ๊ฐ์ด๋ : ๊ตฌ์กฐ์ ๋์ ์๋ฆฌ A to Zhttps://www.cncf.co.kr/resource/kubernetes-architecture-guide/์ด ์์๋ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ๋จ์ํ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ๊ฒ ๋ฟ๋ง ์๋๋ผ

# ์ฟ ๋ฒ๋คํฐ์ค ๋ฐฐํฌ ํ๋ก์ธ์ค ๊ณต์๋ฌธ์์๋ ์ด๋ ๊ฒ ์ฟ ๋ฒ๋คํฐ์ค์ ๋ฐฐํฌ์ ๋ํด ์ด๋ ๊ฒ ๋์์๋ค. - "์ฟ ๋ฒ๋คํฐ์ค์ ๋ฐฐํฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ํฌ๋ก๋๋ฅผ ์คํํ๊ธฐ ์ํด ์ฌ๋ฌ ํ๋๋ฅผ ๊ด๋ฆฌํ๋ฉฐ ๋ณดํต stateless ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ผ๋ก ํ๋ค." -> ์ด ๋ง์ ์ฆ, ํ๋๊ฐ ์ธ์ ์ฃฝ

CNI(Container Network Interface) ๋ ์ปจํ ์ด๋์ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ํ์ค ์ธํฐํ์ด์ค์ด๋ค.๋ช ๋ น์ผ๋ก ํ๋๋ฅผ ์์ฑํ๋ฉด, ๋ช ์ด ์์ ๊ทธ ํ๋๋ ๊ณ ์ ํ IP๋ฅผ ๋ถ์ฌ๋ฐ๊ณ ํด๋ฌ์คํฐ ๋ด ๋ค๋ฅธ ํ๋๋ค๊ณผ ํต์ ํ ์ ์๊ฒ ๋๋ค.์ด๋ฌํ IP ํ ๋น๊ณผ

์ ๊ฒ์๋ฌผ์ ํตํด์ CNI๋ผ๋ ๊ฒ์ ํตํด ํ์ค ๋คํธ์ํฌ ์ธํฐํ์ด์ค ๋๋ถ์ ๋คํธ์ํน ์๋ฃจ์ ์ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค.์ด ๊ฒ์๋ฌผ์์๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ CNI๋๊ตฌ ์ค Calico, Cilium, Flannel์ ๋ํด ๋ค๋ฃจ๋ คํ๋ค.Calico๋ ๋๊ท๋ชจ ํ์ฅ์ฑ์ ์ด์ ์

์ฟ ๋ฒ๋คํฐ์ค์ DNS ํ ๋น ๋ฐฉ๋ฒ ์ฟ ๋ฒ๋คํฐ์ค๋ ํ๋์ ์๋น์ค๋ฅผ ์ํ DNS ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค. ์ฌ์ฉ์๋ DNS๋ฅผ ํตํด IP๋์ DNS๋ฅผ ํตํด ์๋น์ค์ ์ ์ํ ์ ์๋ค. ์ฟ ๋ฒ๋คํฐ์ค๋ DNS๋ฅผ ์ค์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํ๋์ ์๋น์ค์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐํํ๋ค. kubelet์ ์ค

IP์ฃผ์๋ ํฌํธ ์์ค(OSI 3,4 ๊ณ์ธต)์์ ํธ๋ํฝ ํ๋ฆ์ ์ ์ดํ๊ธฐ ์ํ ๋ณด์ ๋ฉ์ปค๋์ฆ์ด๋ค. ์ด๋ฅผ ํตํด ํด๋ฌ์คํฐ ๋ด๋ถ ๋ฟ๋ง ์๋๋ผ Pod์ ์ธ๋ถ ๊ฐ ํธ๋ํฝ ํ๋ฆ ๊ท์น์ ์ง์ ํ ์ ์๋ค.TCP, UDP, SCTP ๋ฑ์ ํ๋กํ ์ฝ์ ๋ํด IP ์ฃผ์ ๋ฐ ํฌํธ ๋จ์๋ก ์ ๊ทผ์

๋ชจ๋ ํ๋๋ ๊ณ ์ ํ IP๋ฅผ ๊ฐ์ง์ง๋ง, ํ๋๊ฐ ์ฌ์์๋๊ฑฐ๋ ๋ค๋ฅธ ๋ ธ๋๋ก ์ฎ๊ฒจ๊ฐ ๋๋ง๋ค ์ด IP๊ฐ ๋ณ๊ฒฝ๋๋ ๋น์์์ ์ธ ํน์ฑ์ ๊ฐ์ง๊ณ ์๋ค. ->์ฆ, ํ๋๋ ๊ณ ์ ๋ IP๋ฅผ ๊ฐ์ง์ง ์๊ธฐ ๋๋ฌธ์, ์ด๋ ๊ฒ ์์๋ก ๋ฐ๋๋ ํ๋๋ค์ IP๋ฅผ ์ผ์ผ์ด ์ถ์ ํ๊ณ ๊ด๋ฆฌํ๋ ๊ฒ์ ํ์ค์ ์ผ๋ก ์ด

์ฟ ๋ฒ๋คํฐ์ค ์ค์ผ์ค๋ฌ๋ kubelet์ด ํ๋๋ฅผ ์คํํ ์ ์๋๋ก, ํ๋๊ฐ ๋ ธ๋์ ์ ํฉํ์ง ํ์ธํ๋ ๊ฒ์ ๋งํ๋ค.kube-scheduler๋ ์ฟ ๋ฒ๋คํฐ์ค์ ๊ธฐ๋ณธ ์ค์ผ์ค๋ฌ๋ก, ์ปจํธ๋กค ํ๋ ์ธ์ ์ผ๋ถ๋ก ๋์ํ๋ค.์๋ก ์์ฑ๋์๊ฑฐ๋ ์์ง ์ด๋ค ๋ ธ๋์๋ ๋ฐฐ์น๋์ง ์์ ํ๋์ ๋ํด, ๊ฐ

์ปจํ ์ด๋ ๋ด๋ถ ๋์คํฌ์ ์ ์ฅ๋ ํ์ผ์ ์์์ ์ด๋ค.์ฆ, ์ปจํ ์ด๋๊ฐ ์ฌ์์๋๋ฉด ๊ทธ ์์ ๋ฐ์ดํฐ๋ ๋ชจ๋ ์ฌ๋ผ์ง๋ค.์ด๋ก ์ธํด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋ ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค.์ปจํ ์ด๋๊ฐ ํฌ๋์๋ ๋ ํ์ผ์ด ์์๋๋ค๋ ๊ฒ (kubelet์ด ์ปจํ ์ด๋๋ฅผ ๋ค์ ์์ํ์ง๋ง, ์ด๊ธฐ

๋์ปค ๋ฐ์คํฌํ maxOS ๋ฒ์ ์ค์น ํsetting์ ๋ค์ด๊ฐ์ kubernetes๋ฅผ ๋๋ฅด๋ฉด ์์์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๋ด๋ ค๋ฐ์ ๋จ์ผ ๋ ธ๋ ํด๋ฌ์คํฐ๋ฅผ ์คํํด์ค๋ค.์ด ๊ณผ์ ์์ ์๋์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค ๋ฐํ์์ ํ์ํ ๋ชจ๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋ด๋ ค๋ฐ์์ค๋ค.์์ฃผ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ด๋ค.์ฟ ๋ฒ๋คํฐ์ค๋

์ปจํ ์ด๋๊ฐ ์ปจํ ์ด๋๋ฅผ ์คํํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ ๊ฒ์๊ธ์์ ํ๋๋ ๋๊ฒ ์ปจํ ์ด๋ ํ๋๋ฅผ ํฌํจํ๋๋ฐ, ์ค์ ์ ๋ฐ๋ผ ํ๋ ํ๋๊ฐ ์ฌ๋ฌ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ํฌํจํ๊ณ , ํ๋์ ํฌํจ๋ ๋ชจ๋ ์ปจํ ์ด๋๋ ๊ฐ์ ๊ฐ์ํ๊ฒฝ์ ํฌํจ๋๋ค. ๊ฐ๊ฐ ํ๋์๋ IP ์ฃผ์๊ฐ ๋ถ์ฌ๋๋๋ฐ, ํ๋์ ํฌํจ๋

### k8s_env_build.sh โ ์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ ๊ตฌ์ฑ ์ด ์คํฌ๋ฆฝํธ๋ ์ฟ ๋ฒ๋คํฐ์ค ์ค์น๋ฅผ ์ํ ๊ธฐ๋ณธ ์์คํ ํ๊ฒฝ์ ์ค์ ํ๋ ์คํฌ๋ฆฝํธ์ด๋ค. - swap ๋นํ์ฑํ (swapoff -a) - ๋ฐฉํ๋ฒฝ ์ค์ (ํ์ ์ ํฌํธ ์ด๊ธฐ) - ๋คํธ์ํฌ ๊ตฌ์ฑ (br_netfilte

Vagrant 2.4.7 (๋ค์ด๊ทธ๋ ์ด๋ ๋ฒ์ )โ ํธํ์ฑ ๋ฌธ์ ๋๋ฌธ์ ์ต์ 2.4.9 ๋์ 2.4.7 ์ฌ์ฉVirtualBox 7.1.10โ Vagrant 2.4.7๊ณผ ํธํ ๊ฐ๋ฅํ ๋ฒ์ Tabby (v1.0.207)โ ๊ฐ VM์ SSH ์ ์์ฉ ํฐ๋ฏธ๋Vagrant ์ค์ ํ์ผ(

ํ์ฌ ์์ฑ๋ ํ๋ ์ ๋ณด๋ค \*์ ๋ถ ์ถ๋ ฅ hello-docker๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ํ๋์ ๋ํ ์ ๋ณด ์ถ๋ ฅ์ด์ ๊ฐ์ด ์ถ๋ ฅํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์จ๋ค. \--output=custom-columns: ์ํ๋ ์ด(column)์ ์ง์ ์ง์ ํด ์ถ๋ ฅํ๋ ์ต์ "NAME:.metadata.

์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๊ณต๋ถํ๋ค ๋ณด๋ ์ฟ ๋ฒ๋คํฐ์ค, ํ๋, ๋์ปค, ์ปจํ ์ด๋, ํด๋ฌ์คํฐ, kubelet์ ๊ด๊ณ์ ๋ํด ํผ๋์ด ์ค๊ธฐ ์์ํ๋ค. ๊ทธ๋์ ์ด ํฌ์คํ ์ผ๋ก ํ๋ฒ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. ์ฐ๋ฆฌ๋ ์ผ๋จ โ์ฟ ๋ฒ๋คํฐ์ค๋ ํ๋๋ฅผ ๊ด๋ฆฌํ๋คโ๋ผ๋ ๋ง์ ์ ๋ง ์์ฃผ ๋ฃ๊ฒ ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์

์ฟ ๋ฒ๋คํฐ์ค์์๋ kubectl ๋ช ๋ น์ด๋ฅผ ํตํด ํด๋ฌ์คํฐ ๋ด๋ถ์ ๋ฆฌ์์ค๋ฅผ ์ง์ ์ ์ดํ ์ ์๋ค.์๋๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ช ๋ น์ด๋ค์ ๊ฐ๋จํ ์ค์ตํด๋ณธ ์์์ด๋ค.์๋ ํด๋น ๋ช ๋ น์ด๋ค์ ์ฌ์ฉํด ๋ณธ ์์ ์ด๋ค.\-> ์ ๋ช ๋ น์ด๋ nginx ํ๋๋ฅผ 3๊ฐ๋ก ๋๋ฆฐ๋ค.\-> ์ ๋ช ๋ น์ด๋ฅผ ์ค

์ด๋ฒ ๊ฒ์๋ฌผ์์๋ ๋ํ๋ก์ด๋จผํธ๋ฅผ ์์ฑํ๊ณ ๋ํ๋ก์ด๋จผํธ๊ฐ ๊ด๋ฆฌํ๋ ํ๋์ ๋ ์ด๋ธ์ ๋ถ์ฌํ๋ ์ค์ต์ ์งํํ๋ค.๊ทธ ์ ์ ์ปจํธ๋กค๋ฌ, ๋ํ๋ก์ด๋จผํธ์ ๊ฐ๋ ์ ๋จผ์ ์ ๋ฆฌํ๋ค. ์ฟ ๋ฒ๋คํฐ์ค์์ Pod๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์คํ ๋จ์์ด๋ฉฐ Pod์์ ์๋ ์ปจํ ์ด๋์ ๋ช ์ธ๋๋ก ์คํํ๋ ๊ฒ์ ku

apiVersionbatch/v1 โ ์ก ๊ด๋ จ ๋ฆฌ์์ค๋ batch API ๊ทธ๋ฃน์ ํฌํจ๋๋ค.kind๋ฆฌ์์ค์ ์ข ๋ฅ๋ฅผ ์ง์ ํ๋ค. ์ฌ๊ธฐ์๋ CronJob.metadata.name๋ฆฌ์์ค์ ์ด๋ฆ์ด๋ค. (hello-cron)spec.schedule์คํ ์ฃผ๊ธฐ๋ฅผ ์ง์ ํ๋ค. (cront

๋ฐ๋ชฌ์ (DaemonSet) ๋ฐ๋ชฌ์ ์ ์ฟ ๋ฒ๋คํฐ์ค์์ ๋ชจ๋ ๋ ธ๋(ํน์ ํน์ ๋ ธ๋)์ ํ๋๋ฅผ ํ๋์ฉ ์๋์ผ๋ก ๋ฐฐํฌํ๋ ๋ฆฌ์์ค์ด๋ค. ex) ๋ก๊ทธ ์์ง๊ฐ, ๋ชจ๋ํฐ๋ง ์์ด์ ํธ๊ฐ์ ์์คํ ์ฑ ํ๋๋ค ์ฝ๋ ํด์ค >| ํญ๋ชฉ | ์ค๋ช

StatefulSet์ ๋ง ๊ทธ๋๋กโ์ํ(State)๋ฅผ ๊ฐ์ง ํ๋๋ฅผ ์์๋๋ก ์์ฑยท์ ์งํ๋ ์ปจํธ๋กค๋ฌโ์ด๋ค.Deployment๋ ํ๋๋ฅผ ์๋ฌด ์์๋ ์์ฑยท์ญ์ ํ์ง๋ง,StatefulSet์ ์์๋ฅผ ์๊ฒฉํ ์งํจ๋ค.์๋ฅผ ๋ค์ด, ์์ฑ ์์ โ pod-0 โ pod-1 โ pod-

์ฟ ๋ฒ๋คํฐ์ค์์ ํฌํธํฌ์๋ฉ์ด๋, ๋ก์ปฌ PC์ ํฌํธ๋ฅผ ํด๋ฌ์คํฐ ๋ด๋ถ ํ๋ ์ ํฌํธ๋ก ์ง์ ์ฐ๊ฒฐํด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค.์ฆ, ํด๋ฌ์คํฐ ์์ ์๋ ํ๋์ ์ง์ ์ ๊ทผํ ์ ์๋๋ก ํด์ฃผ๋ ๊ฒ์ด๋ค.ex) nginx ํ๋๊ฐ ๋ด๋ถ์์ 80ํฌํธ๋ฅผ ์ฌ์ฉ์ค์ด๋ผ๋ฉด, ๋ด PC์ 8080 ํฌํธ๋ฅผ ํ๋์ 8

์ฟ ๋ฒ๋คํฐ์ค์ Service ํ์ ์ค LoadBalancer๋ํด๋ฌ์คํฐ ์ธ๋ถ์์ ์ ๊ทผ ๊ฐ๋ฅํ IP(External IP)๋ฅผ ์๋์ผ๋ก ํ ๋นํด์ฃผ๋ ๋ฐฉ์์ด๋ค.์ผ๋ฐ์ ์ผ๋ก AWS, GCP, Azure ๊ฐ์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์๋LoadBalancer ํ์ ์ ์ค์ ํ๋ฉด ํด๋ผ์ฐ๋ ๋ก๋๋ฐธ๋ฐ์

์ฟ ๋ฒ๋คํฐ์ค์ Service ํ์ ์ค ํ๋์ธ ExternalName์ ํด๋ฌ์คํฐ ๋ฐ์ ์๋ ์๋ฒ๋ฅผ ๋ด๋ถ ์๋น์ค์ฒ๋ผ ๋ถ๋ฅผ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค. ์๋ฅผ ๋ค์ด, ๋ด ์ฟ ๋ฒ๋คํฐ์ค ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ธ๋ถ DB ์๋ฒ(db.company.com)์ ์ ๊ทผํด์ผ ํ๋ค๋ฉด, ๊ตณ์ด ๋งค๋ฒ ๊ทธ

ํด๋ฌ์คํฐ IP๋ ์ฟ ๋ฒ๋คํฐ์ค์์ Service ํ์ ์ค ๊ธฐ๋ณธ๊ฐ์ธ ClustIP๊ฐ ๊ฐ์ง๋ ๋ด๋ถ ์ ์ฉ IP๋ฅผ ๋งํ๋ค.์ด๊ฒ ๊ธฐ๋ณธ ์ ์์ธ๋ฐ, ์ฝ๊ฒ ํ์ด์ฐ์๋ฉด"ํด๋ฌ์คํฐ ์์์๋ง ์ ๊ทผ ๊ฐ๋ฅํ ๋ด๋ถ IP์ฃผ์"์ด๋ค.์๋ฅผ ๋ค์ด ์ด๋ ๊ฒ service๋ฅผ ํธ์ถํ์ ๋ ,์ด๋ฐ์์ผ๋ก ๋์จ๋ค.์ฌ๊ธฐ

์ด ๊ฒ์๋ฌผ์์๋ ๋ง์ ๋ณผ๋ฅจ ์ข ๋ฅ ์ค ๋น ๋๋ ํ ๋ฆฌ์ ๋ํด ์์๋ณด๋ ค๊ณ ํ๋ค.์ด ๋ณผ๋ฅจ์ ํ๋๊ฐ ๋ ธ๋์ ํ ๋น๋ ๋ ์ฒ์ ์์ฑ๋๋ฉฐ, ํด๋น ๋ ธ๋์์ ํ๋๊ฐ ์คํ๋๋ ๋์์๋ง ์กด์ฌํ๋ค.์ด๋ฆ์์ ์ ์ ์๋ฏ ์ฒ์์๋ ๋น์ด์๋ค.๋ชจ๋ ์ปจํ ์ด๋๊ฐ ๊ฐ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ณต์ ํด์ ์ฌ์ฉํ ์ ์๋ค.

์ด๋ฒ ๊ฒ์๋ฌผ์ ํธ์คํธ์ ์๋ ๋๋ ํ ๋ฆฌ๋ฅผ ํ๋๊ฐ ์ฐ๋ hostpath์ ๋ํด ์์ฑํ๋ค. ๋ค๋ง, ์ฟ ๋ฒ๋คํฐ์ค ๊ณต์ ๋ฌธ์์์๋ ์๋์ฒ๋ผ ์ฌ๋ฌ ์ฐจ๋ก ๊ฒฝ๊ณ ํ๋ฏ์ด,hostPath๋ ๋งค์ฐ ๊ฐ๋ ฅํ์ง๋ง ์ ์คํ ์ฌ์ฉํด์ผ ํ๋ ๊ธฐ๋ฅ์ด๋ค.ํ๋๊ฐ ํธ์คํธ ํ์ผ ์์คํ ์ ์ง์ ์ ๊ทผํ๊ฑฐ๋ ์์ ํ ์

์ด๋ฒ์๋ ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐํ ์ ์๋ ๊ณต์ ํ์ผ ์์คํ ๊ฐ์ ์ญํ ์ธ nfs ๋ณผ๋ฅจ์ ๋ํด ์ ์ด๋ณด๋ ค ํ๋ค.nfs ๋ณผ๋ฅจ์ ์ฌ์ฉํ๋ฉด ๊ธฐ์กด NFS(๋คํธ์ํฌ ํ์ผ ์์คํ ) ๋ณผ๋ฅจ์ ํ๋์ ๋ง์ดํธํ ์ ์๋ค. NFS๋ ์ฌ๋ฌ ์์ฑ์๊ฐ ๋์์ ๋ง์ดํธํ ์ ์๋ค. emptyDir์ ๋ฌ๋ฆฌ ํ๋

์ด์ ํฌ์คํ ์์ PV(ํผ์์คํดํธ ๋ณผ๋ฅจ)๊ณผ PVC(ํผ์์คํดํธ ๋ณผ๋ฅจ ํด๋ ์)์ ๊ฐ๋ ์ ๋ํด ์ค๋ช ํ์๋ค.์ด์ ํฌ์คํ (PV, PVC ๊ฐ๋ ์ ๋ฆฌ)๋ํ ๋ฐ๋ก ์ด์ ํฌ์คํ ์์ nfs ๋ณผ๋ฅจ์ ๋ง๋๋ ์ค์ต์ ์งํํ์๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ ๊ด๋ฆฌ์๊ฐ ์์ฑํ๋ PV(PersistentVo

์ด๋ฒ์ ์ฌ๋ฆด ๊ฒ์๋ฌผ์ ์ด์ ๊ฒ์๋ฌผ(pv, pvc ์์ฑ)์์ ์ ์ pv/pvc๋ฅผ ์์ฑํ๋ ๊ฒใน๊ณผ ๋ฌ๋ฆฌ, StorageClass๋ฅผ ์ด์ฉํด PVC๊ฐ ์๋์ผ๋ก PV๋ฅผ ์์ฑํ๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด๋ณธ๋ค.ํ์ผ๋ช : rbac.yamlNFS ํ๋ก๋น์ ๋๊ฐ ์ฟ ๋ฒ๋คํฐ์ค ๋ฆฌ์์ค(PV, PVC)๋ฅผ ์

volumeClaimTemplates๋ StatefulSet์์ โํ๋๋ง๋ค ๋ฐ๋ก PVC๋ฅผ ์๋์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ํ ํ๋ฆฟโ ์ด๋ค.์ผ๋ฐ Deployment:๋ณดํต ํ๋์ PVC๋ฅผ ์ฌ๋ฌ ํ๋๊ฐ ๊ฐ์ด ์ฐ๊ฑฐ๋, ์์ PVC ์์ด emptyDir ๊ฐ์ ๊ฑฐ ์.StatefulSet +

์ด๋ฒ ๋ฒจ๋ก๊ทธ ๊ธ์ โNode cordon & drain ์ค์ตโ์ ์ฃผ์ ๋ก,๋ ธ๋ ํ๋๋ฅผ ์ค์ผ์ค ๋ถ๊ฐ๋ก ๋ง๋ค๊ณ (cordon),ํ๋๋ฅผ ์์ ํ๊ฒ ๋ด๋ณด๋ด๋(drain) ์ค์ต ์ค์ฌ์ผ๋ก ๊ตฌ์ฑ๋๋ค.Deployment๋ก replica=3์ง๋ฆฌ NGINX ํ๋๋ฅผ ๋ฐฐํฌํจํด๋ฌ์คํฐ์๋ ๋ ธ๋๊ฐ 3

์ด๋ฒ ๊ฒ์๋ฌผ์์๋ ๋ ธ๋ ๋ค์, label, ๋ ธ๋ ์ ๋ ํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์งํํด๋ณด๊ฒ ๋ค.ํ์ฌ ๋ ธ๋ ๊ตฌ์ฑ๊ณผ ๋ ์ด๋ธ์ด ์ด๋ ๊ฒ ๋์ด์๋๋ฐ ๋ ธ๋์ ๋ ์ด๋ธ์ ๋ถ์ผ ์ ์๋ค.env, region์ ํค๊ฐ์ด๋ฉฐ dev, stage, shared, internal์ ๊ฐ๊ฐ value์ ํด๋นํ

ํ์ฌ ๋ ธ๋ ๊ตฌ์ฑ๊ณผ ๋ ์ด๋ธ์ด ์ด๋ ๊ฒ ๋์ด์๋ ์ํ์ด๋ค.ํ์ผ๋ช : deploy-affinity.yamlrequiredDuringSchedulingIgnoredDuringExecution: ๋ฐ๋์ ์ด ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ ธ๋์๋ง ์ค์ผ์ค๋จ๋ฐ๋ผ์, env=dev ๋ผ๋ฒจ์ด ์๋ mult

์ฟ ๋ฒ๋คํฐ์ค์์ Node Affinity๊ฐ โํน์ ๋ ธ๋์ ๋๋ฆผโ์ด๋ผ๋ฉด,Taints(ํ ์ธํธ)๋ ๋ฐ๋๋ก โํน์ ๋ ธ๋๊ฐ ๊ฑฐ๋ถโํ๋ ๊ฐ๋ ์ด๋ค.์ฌ๊ธฐ์ Tolerations(ํจ๋ฌ๋ ์ด์ )์ โ๊ทธ ๊ฑฐ๋ถ ์กฐ๊ฑด์ ํ์ฉํ๋ ์์ธ๊ถโ์ ์๋ฏธํ๋ค.๋ ธ๋์ taint ์ค์ ๋ฐฉ๋ฒtaint ์ญ์ Pod

ํ๋ ๋ ์ด๋ธ create ํด์ ๋ง๋ค์์ ๋๋ (app = ""ํ์) run ํด์ ํ๋๋ฅผ ๋ง๋ค์์ ๋๋ ๋ถ๋ ๋ ์ด๋ธ์ด ๋ค๋ฅด๋ค. (run= ""ํ์)

์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๊ณต๋ถํ๋ค๊ฐ ๊ฐ์๊ธฐ ์ ์ (static) ํ๋์ ๋ํด ๋ฌ๊ธ์์ด ๋์์ ์ด๊ฒ ๋ฌด์์ด๊ณ , ์ ์ค์ํ๊ฑด์ง ํท๊ฐ๋ ธ๋ค. ํนํ ์ค์ผ์ค๋ฌ๊ฐ ํ๋๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ฐฐํฌํ๋ค๊ณ ํ๋ค๊ฐ, ์ค์ผ์ค๋ฌ ๋ํ ํ๋์ธ๋ฐ๊ทธ๊ฒ์ ๋๊ฐ ๋์ฐ๋ ๊ฑด์ง ์๋ฌธ์ด ์๊ฒจ์ ์ ๋ฆฌํด๋ณด๊ธฐ๋ก ํ๋ค.์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ

restartPolicy๋ ํ๋(Pod)์ ์ฌ์(spec) ์ค ํ๋๋ก, ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋์์ ๋ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ด๋ป๊ฒ ๋์ํ ์ง๋ฅผ ์ ์ํ๋ ์ต์ ์ด๋ค.๊ณต์๋ฌธ์ ๊ธฐ์ค์ผ๋ก ๊ฐ๋ฅํ ๊ฐ์ ๋ค์ ์ธ๊ฐ์ง์ด๋ค. ์ฌ๊ธฐ์ restartPolicy๋ spec ๋ฐ๋ก ์๋์ ๋ค์ด๊ฐ๋ค.์ปจํ ์ด๋์๋

์ฟ ๋ฒ๋คํฐ์ค์์๋ ์ปจํ ์ด๋๊ฐ ๋จ์ํ โrunningโ์ด๋ผ๋ ์ํ๋ง์ผ๋ก๋ ์ถฉ๋ถํ ์๋ฒฝํ๊ฒ ์๋น์ค๊ฐ ์คํ๋๋ค๊ณ ์๊ฐํ์ง ์๋๋ค.๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ ์ธ ๊ฐ์ง ํ์ฌ(probe) ๋ฅผ ์ฌ์ฉํ๋ค:startupProbe: ์ปจํ ์ด๋๊ฐ โ์ ์์ ์ผ๋ก ์์ํ๋๊ฐโ๋ฅผ ๊ฒ์ฌํ๋ค.livenessP

์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๊ณต๋ถํ๋ค ๋ณด๋๊น initContainers ๋ผ๋ ๊ฒ ๊ฐ์๊ธฐ ํ์ด๋์จ๋ค.์ฒ์์ โ๊ทธ๋ฅ ์ปจํ ์ด๋ ํ๋ ๋ ๋ฃ๋ ๊ฑด๊ฐ?โ ์ถ์๋๋ฐ,์ธ์ ์คํ๋๋์ง, ์ ๊ตณ์ด ๋ฐ๋ก ๋ถ๋ฆฌํด ๋จ๋์ง ํท๊ฐ๋ ค์ ํ ๋ฒ ์ ๋ฆฌํด๋ณด๊ธฐ๋ก ํ๋ค.๋ณดํต ์ ํ๋ฆฌ์ผ์ด์ ํ๋์ ์ด๋ฐ ์์ ๋ค์ด ํ์ํด์ง ๋

ํ๋์ Pod ์์ ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ๋ฃ๋ ์ด์ ๋ ๋ณดํต ์ฑ ์ฝ๋ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๊ธฐ๋ฅ์ ๋ถ์ด๊ณ ์ถ์ด์์ด๋ค.์ฟ ๋ฒ๋คํฐ์ค ๊ณต์ ๋ธ๋ก๊ทธ์์๋ ๋ํ์ ์ธ ํจํด์ผ๋ก Sidecar / Ambassador / Adapter ํจํด์ ์๊ฐํ๊ณ ์๋ค.๋ชจ๋ ํ๋์ Pod์์์ ๋ฉ์ธ ์ปจํ ์ด๋๋ฅผ ๋

๊ณต์ ๋ฌธ์์์๋ Pod Topology Spread Constraints ๋ฅผ"ํ๋๋ฅผ ๋ฆฌ์ , ์กด, ๋ ธ๋ ๊ฐ์ ์ฅ์ ๋๋ฉ์ธ(failure-domain)์ ๊ณ ๋ฅด๊ฒ ๋ถ์ฐ์ํค๊ธฐ ์ํ ๋ฐฉ๋ฒ"์ด๋ผ๊ณ ์ค๋ช ํ๋ค.์ฝ๊ฒ ๋งํ๋ฉด, โapp=nginx ์ธ ํ๋๋ค์ ๊ฐ AZ(๋๋ ๋ ธ๋)์

์ฟ ๋ฒ๋คํฐ์ค์์ ๋ฆฌ์์ค๋ค์ ๋ชจ๋ ๋ค์์คํ์ด์ค(namespace) ๋จ์๋ก ๊ตฌ๋ถ๋์ด ๊ด๋ฆฌ๋๋ค.์ฆ, ํ๋์ ํด๋ฌ์คํฐ ์์์๋ ์ฌ๋ฌ ํ์ด๋ ํ๋ก์ ํธ๊ฐ ๊ฒน์น์ง ์๊ฒ ๋ ๋ฆฝ๋ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ ๊ฐ๋ ์ด๋ค.์๋ฅผ ๋ค์ดdev1 ํ์ ์์ ๋ค์ ํ๋, ์๋น์ค, ๋ํ๋ก์ด๋จผํธ๋ฅผ ๊ด๋ฆฌํ๊ณ dev2 ํ์

ํ ๋ง๋๋ก ๋ฆฌ์์ค ์ฟผํฐ๋ ๋ค์์คํ์ด์ค๋ณ ์ฌ์ฉ๋ ์ ํ ์ ๋์ด๋ค.์์์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๊ฐ ํ์ฌ ๋ณธ์ฌ,๊ฐ ๋ค์์คํ์ด์ค๊ฐ ํ(๋ถ์) ๋ผ๊ณ ๋น์ ๋ฅผ ๋ค์๋๋ฐ, ์ฌ๊ธฐ์์ ๋ฆฌ์์ค ์ฟผํฐ๋ ์ด๋ฐ ๋๋์ด๋ค.โdev1 CPU ๋๋ฌด ๋ง์ด ์ฐ์ง ๋ง๊ณ ,๋ฉ๋ชจ๋ฆฌ๋ 4GB๊น์ง๋ง ์จ.โโdev2ํ์ ํ

ํ ๋ง๋๋ก ๋ฆฌ๋ฐ ๋ ์ธ์ง(LimitRange) ๋โ๋ค์์คํ์ด์ค ์์ ๊ฐ ํ๋๋ ์ปจํ ์ด๋๋ณ ์์ ์ฌ์ฉ ํ๋์ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํ๋ ์ ๋โ์ด๋ค.์ด์ ๊ฒ์๋ฌผ : ๋ฆฌ์์ค ์ฟผํฐ(ResourceQuota)์์๋ฆฌ์์ค ์ฟผํฐ๊ฐ โ๋ค์์คํ์ด์ค ์ ์ฒด ํ ๋จ์๋ก ์์ฐ(์ด๋)์ ์ ํ๋ ๊ฒโ์ด์๋ค๋ฉด

์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฒ์ ์ฐ๋ฉด, ํ๋๋ผ๋ฆฌ ์๋ก ๋ค ํต์ ๊ฐ๋ฅํ๋ค.default ๋ค์์คํ์ด์ค๋ , ๋ค๋ฅธ ๋ค์์คํ์ด์ค๋ , ์๋ฌด ์ ์ฝ ์์ด ์๋ก TCP/UDP ํต์ ์ด ๋๋ค.๊ณต์ ๋ฌธ์์์๋ NetworkPolicy๋ฅผโํ๋๊ฐ ์๋ก, ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๋คํธ์ํฌ ์๋ํฌ์ธํธ์ ์ด๋ป๊ฒ ํต์ ํ ์ ์

์ฟ ๋ฒ๋คํฐ์ค ๊ณต์ ๋ฌธ์์์๋ ConfigMap ์ ์ด๋ ๊ฒ ์ ์ํ๋ค.โ๊ธฐ๋ฐ์ด ์๋ ์ค์ ๋ฐ์ดํฐ๋ฅผ key-value ํํ๋ก ์ ์ฅํ๋ API ์ค๋ธ์ ํธ์ด๋ฉฐ,ํ๋์์ ํ๊ฒฝ๋ณ์, ์ปค๋งจ๋ ์ธ์, ๋ณผ๋ฅจ ํ์ผ๋ก ์๋นํ ์ ์๋ค.โํ ๋ง๋๋ก,์ด๋ฏธ์ง ์์ ๋๊ธฐ ์ ๋งคํ ์ค์ ๊ฐ๋ค์ ๋ฐ๋ก ๋ฝ์๋

์ฟ ๋ฒ๋คํฐ์ค ์ํฌ๋ฆฟ(Secret)์๋น๋ฐ๋ฒํธ, ํ ํฐ, ์ธ์ฆ์ ํค์ฒ๋ผ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ API ์ค๋ธ์ ํธ์ด๋ค.์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ ํ๋ ๋งค๋ํ์คํธ ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ทธ๋๋ก ์ ์ด๋๋ฉด,๊น ์ ์ฅ์์ ๊ทธ๋๋ก ์ฌ๋ผ๊ฐ๊ณ CI/CD ๋ก๊ทธ๋ kubectl describe ์ถ๋ ฅ์๋ ๋ ธ์ถ

๋กค๋ง ์ ๋ฐ์ดํธ๋ ์ฟ ๋ฒ๋คํฐ์ค์์ Deployment/StatefulSet์ ๊ธฐ๋ณธ ์ ๋ฐ์ดํธ ์ ๋ต์ด ๋กค๋ง ์ ๋ฐ์ดํธ์ด๋ค.๊ณต์ ๋ฌธ์ ๊ธฐ์ค์ผ๋ก ๋ณด๋ฉด ๋กค๋ง ์ ๋ฐ์ดํธ๋๊ธฐ์กด ํ๋๋ฅผ ํ ๋ฒ์ ์ ๋ถ ์ฃฝ์ด์ง ์๊ณ ,์ ๋ฒ์ ํ๋๋ฅผ ์กฐ๊ธ์ฉ ๋์ฐ๊ณ , ์๋ ํ๋๋ฅผ ์กฐ๊ธ์ฉ ๋ด๋ฆฌ๋ฉด์์๋น์ค ์ค๋จ ์์ด

Kustomize๋ ์ฟ ๋ฒ๋คํฐ์ค ๋ฆฌ์์ค๋ฅผ ํ ํ๋ฆฟ ์์ด ๋ง์ ํ์(overlays) ๊ด๋ฆฌํ๊ธฐ ์ํ ๋๊ตฌ์ด๋ค.์์ฆ์ kubectl ์์ ํตํฉ๋์ด ์์ด์ ๋ณ๋ ์ค์น ์์ด kubectl kustomize, kubectl apply -k ๊ฐ์ ์์ผ๋ก ๋ฐ๋ก ์ด๋ค.ํต์ฌ ์์ด๋์ด:๋๋ ํฐ

๊ณต์ ๋ฌธ์ ๊ธฐ์ค์ผ๋ก ํฌ๋ฆ์โ์ฟ ๋ฒ๋คํฐ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ยท์ค์นยท์ ๊ทธ๋ ์ด๋ํ๋ ํจํค์ง ๋งค๋์ โ์ด๋ค.์ฟ ๋ฒ๋คํฐ์ค๋ก ๋ญ๊ฐ๋ฅผ ๋ฐฐํฌํ๋ ค๊ณ ํ๋ฉด ๋ณดํต:Deployment, Service, ConfigMap, Secret, Ingress โฆ์ด๋ฐ YAML ํ์ผ์ด ์ต์ ์์ญ ๊ฐ์ฉ ์๊ธด๋ค

๋ฒ๋คํฐ์ค์์ kubectl top ์ด๋ HPA(์คํ ์ค์ผ์ผ๋ฌ)๊ฐ ์ฐ๋CPU / ๋ฉ๋ชจ๋ฆฌ ์ค์๊ฐ ์ฌ์ฉ๋์ ๋ชจ์์ ์ ๊ณตํด์ฃผ๋ ์ปดํฌ๋ํธ์ด๋ค.๋์ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.๊ฐ ๋ ธ๋์ kubelet ์ด ํ๋ / ๋ ธ๋์ ๋ฆฌ์์ค ์ฌ์ฉ๋์ ๋ ธ์ถํ๋ค.metrics-server๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ku

HPA๋ ํ๋ ๊ฐ์๋ฅผ ์๋์ผ๋ก ๋๋ ธ๋ค ์ค์๋ค ํด์ฃผ๋ ์ปจํธ๋กค๋ฌ์ด๋ค.๋ณดํต CPU ์ฌ์ฉ๋์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋, ํน์ ์ปค์คํ ๋ฉํธ๋ฆญ์ ๊ธฐ์ค์ผ๋ก ์ค์ผ์ผ๋งํ๋ค.๋์ ํ๋ฆ์ ๋๋ต ์ด๋ ๋ค.metrics-server ๊ฐ ๊ฐ ํ๋/๋ ธ๋์ CPUยท๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ชจ์๋ค.HPA ์ปจํธ๋กค๋ฌ๊ฐ m

ํฌ๋ฆ ์ค์นํ๊ธฐ ์ผ๋จ ํ๋ก๋ฉํ ์ฐ์ค๋ฅผ ์ค์นํ๋๋ฐ, ํฌ๋ฆ์ด ์ค์น๋์ด ์์ง ์์์(helm version ํ์ ๋ ์ฐพ์ ์ ์์๋ค.) ์ ๋ช ๋ น์ด๋ฅผ ํตํด ํฌ๋ฆ์ ์ค์นํด์คฌ๋ค. ํ๋ก๋ฉํ ์ฐ์ค ์ค์น ์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ํ๋ก๋ฉํ ์ฐ์ค๋ฅผ ์ค์นํด์ค๋ค. ํ๋ก๋ฉํ ์ฐ์ค ์ค์น ํ์ธ

์ด์ ๊ฒ์๋ฌผ์์ vmware fusion์ผ๋ก ์ค์ต ํ๊ฒฝ ๊ตฌ์ถํ๋ค๊ฐ ํธ๋ฌ๋ธ์ํ ๋ง ์ผ์ผ ๋์ ๊ผฌ๋ฐ ๋ฐค์์ ํ๊ณ 50๋ฒ ์ด์ ์ง์ ๋ค ๊น์๋ค๋ฅผ ๋ฐ๋ณตํ๋ค๊ฐ ๊ฒฐ๊ตญ ์ ๋ถ ์ญ์ ํ, ๊ฐ์ฌ๋์ด ์ฌ๋ ค์ฃผ์ vagrantfile๋ก vagrant up์ ํ์ฌ ์ฑ๊ณต์ ์ผ๋ก ์ค์ต ํ๊ฒฝ์ ๊ตฌ์ถํ์๋ค

ํ๋ก๋ฉํ ์ฐ์ค Web UI Runtime & Building information Status์์ ํด๋น ๋ฉ๋ด๋ก ๋ค์ด๊ฐ๊ฒ ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์จ๋ค. ์ฌ๊ธฐ์์ ์ค์ํ ๋ถ๋ถ์ build information์ ์๋ version ๋ถ๋ถ์ธ๋ฐ, ํ์ฌ ๋ด๊ฐ ์ฐ๊ณ ์๋ ๋ฒ์ ์ 2

cAdvisor(Container Advisor)๋ ์ฟ ๋ฒ๋คํฐ์ค ๋ ธ๋์์ ์ปจํ ์ด๋์ ๋ฆฌ์์ค ์ฌ์ฉ๋์ ์์งํ๋ ๋ชจ๋ํฐ๋ง ๋๊ตฌ์ด๋ค.๋์ปค ์์ง์ ๊ธฐ๋ณธ ๋ด์ฅ๋์ด ์์ผ๋ฉฐ, CPUโ๋ฉ๋ชจ๋ฆฌโ๋คํธ์ํฌโ๋์คํฌ I/O ๊ฐ์ ์ปจํ ์ด๋ ๋จ์ ๋ฉํธ๋ฆญ์ ์๋์ผ๋ก ์์งํ๋ค.์ฟ ๋ฒ๋คํฐ์ค์์๋ kube

์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๋ชจ๋ํฐ๋งํ ๋ ํํ Node Exporter๋ cAdvisor๋ก CPUยท๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ๋ฆฌ์์ค ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ค. ์ด์ ๊ฒ์๋ฌผ(cAdvisor, Node Exporter ์ค๋ช )๊ทผ๋ฐ ์ด ๋์ ๊ณตํต์ ์ด ์๋๋ฐ, "์ค์ ์ฌ์ฉ๋"๋ง ์๋ ค์ฃผ๋ฉฐ, kubernetes ๊ฐ์ฒด

์ฟ ๋ฒ๋คํฐ์ค์์ Node Exporter, cAdvisor๋ฅผ ํตํด ๋ ธ๋/์ปจํ ์ด๋ ๋ฆฌ์์ค๋ ์ ์์งํ๊ณ ์๋ค. ๊ทผ๋ฐ ์๋น์ค ์ด์ํ๋ค ๋ณด๋ฉด ์ด๋ฐ ์๋ฌธ์ด ์๊ธด๋ค. โ์ ํ๋ฆฌ์ผ์ด์ ์์ฒด์ ์งํ๋ ์ด๋ป๊ฒ ๋ณด์ง?โ ์๋ฅผ ๋ค์ด, NGINX๊ฐ ํ์ฌ ์ฒ๋ฆฌ ์ค์ธ HTTP ์ฐ๊ฒฐ ์ ์์ฒญ

Prometheus๋ฅผ ์ฐ๋ค ๋ณด๋ฉด ๊ฐ์ฅ ๋ง์ด ๋ง์ฃผ์น๋ ๊ฐ๋ ์ด ๋ฐ๋ก ๋ฉํธ๋ฆญ ํ์ ์ด๋ค.๋ฉํธ๋ฆญ ํ์ ์ ์ ํํ ์ดํดํด์ผ ์ฌ๋ฐ๋ฅธ ๋ชจ๋ํฐ๋ง๊ณผ ์๋ ์ค์ ์ด ๊ฐ๋ฅํ๋ค.Prometheus์๋ ์ด 4๊ฐ์ง ๋ฉํธ๋ฆญ ํ์ ์ด ์๋ค.GaugeCounterHistogramSummary์ด ๊ธ์์๋ ๊ฐ

PromQL์์๋ ์ซ์๋ผ๋ฆฌ ๋ํ๊ณ ๋นผ๊ณ ๋น๊ต ๊ฐ๋ฅํ๋ค.๋ฉํธ๋ฆญ์ ํฉ์น๊ฑฐ๋ ํ๊ท ๋ด๋ ๊ธฐ๋ฅ์ด๋ฉฐ,PromQL์์ ์ ์ผ ๋ง์ด ์ฐ๋ ๊ธฐ๋ฅ์ด๋ค.ex: ํ๋ ๊ฐ์ ์ธ๊ธฐโ ํ์ฌ ์์ ์ ๊ฐ ํ ๊ฐ์ ๋ก๋์ค..โ ์๊ฐ ๊ตฌ๊ฐ์ ํฌํจํ ์ฌ๋ฌ ์ํ

PromQL์์ ๋ฉํธ๋ฆญ์ ์ ํํ๊ฑฐ๋ ๋งค์นญํ ๋ ์ฌ์ฉ๋จ.PromQL์ ํจ์๋ฅผ ๋ง์ด ์ ๊ณตํ๋ค.์์ฃผ ์ฐ๋ ํจ์:ex)

Recording Rule์ Prometheus์์ ์์ฃผ ์ฌ์ฉํ๋ ๊ณ์ฐ์(PromQL) ์๋ฏธ๋ฆฌ ๊ณ์ฐํด ์๋ก์ด ๋ฉํธ๋ฆญ์ผ๋ก ์ ์ฅํด๋๋ ๊ธฐ๋ฅ์ด๋ค.์ด๋ ๊ฒ ํด๋๋ฉด,๋ฌด๊ฑฐ์ด ์ฟผ๋ฆฌ ๊ณ์ฐ์ด ๋นจ๋ผ์ง๊ณ UI์์๋ ์ฆ์ ์กฐํ๊ฐ ๊ฐ๋ฅํ๋ฉฐ์์ฃผ ์ฐ๋ ์์ โ๋ฉํธ๋ฆญ์ฒ๋ผโ ํธํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.์๋ฅผ

์ด๋ฒ ํฌ์คํ ์์๋ Kubernetes ํ๊ฒฝ์์ Redis ๋ฉํธ๋ฆญ์ Prometheus๋ก ์์งํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ๋ค.Prometheus๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ ์ํ๋ ์ ์ ์๊ธฐ ๋๋ฌธ์,Redis ๋ด๋ถ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด Redis Exporter๊ฐ ํ์ํ๋ค.์ด๋ฒ ์ค

MySQL + mysqld-exporter ๊ตฌ์ฑํ๊ธฐ ์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ์์ MySQL์ ๋ชจ๋ํฐ๋งํ๋ ค๋ฉด Prometheus๊ฐ ์ฝ์ ์ ์๋ ํํ์ ๋ฉํธ๋ฆญ์ ๋ ธ์ถํด์ผ ํ๋ค. MySQL ์์ฒด๋ ๋ฉํธ๋ฆญ์ ์ ๊ณตํ์ง ์๊ธฐ ๋๋ฌธ์ mysqld-exporter๋ฅผ ์ถ๊ฐ๋ก ๋ฐฐํฌํด์ผ ํ๋ค

Blackbox Exporter๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ ๋ฉํธ๋ฆญ์ ์์งํ๋ ๋ฐฉ์์ด ์๋๋ผ,์ธ๋ถ์์ ํน์ ์๋ํฌ์ธํธ์ ์ค์ ์์ฒญ์ ๋ณด๋ด์ด ์ ์ ๋์ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๋ชจ๋ํฐ๋ง ๋๊ตฌ์ด๋ค.์ฆ, ์์คํ ๋ด๋ถ ์ํ๊ฐ ์๋๋ผ โ์ธ๋ถ์์ ๋ฐ๋ผ๋ณธ ์๋น์ค์ ์๋ต ์ํโ๋ฅผ ์ธก์ ํ๋ค.Blackb

Prometheus๋ก ๋ฉํธ๋ฆญ์ ์์งํ๋ ๋ฐฉ๋ฒ์ด ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋ค ๋ณด๋ ํ๋ก๋ฉํ ์ฐ์ค ์ค์ ์ ํ๋ฉด์ ์๊ฐ์ ์ผ๋ก ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ด ๋ง์๋ค.ํนํ, Exporter๋ฅผ ์ง์ ๊ตฌ์ฑํด์ ServiceMonitor๋ก ์ฐ๊ฒฐํ๋ ๋ฐฉ์๊ณผ Helm Chart๋ก ์๋ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ ์ฐจ์ด๊ฐ ๋ช ํ

๊ณต๋ถํ๋ค๋ณด๋ service monitor์ pod monitor์ ๋ํ ๊ฐ๋ ์ด ๋น์ฝํ๋ค๊ณ ๋๊ปด ์ ๋ฆฌ๋ฅผ ํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ๊ฐ ๊ฐ๋ ์ ์ค๋ช ํ๊ณ ๋ ๋ชจ๋ํฐ์ ์ฐจ์ด๋ฅผ ๋น๊ตํด์ ์ ์ ๊ฒ์ด๋ค.PodMonitor๋ โํ๋ ์์ฒด๋ฅผ ์ง์ ์ ํํด์(PodSelector)โ ๋ฉํธ

๋ชจ์ข ์ ์ฌ์ ๋ก ์ธํด Helm์ผ๋ก Prometheus๋ฅผ ๋ค์ ๊ตฌ์ถํ๊ฒ ๋์๋ค.๊ทธ ํ Prometheus UI์ ์ ์ํ๊ธฐ ์ํด Node IP + Prometheus ์๋ฒ ํฌํธ๋ก ์ ์์ ์๋ํ๋๋ฐ, ์ ์์ด ์ ํ ๋์ง ์์๋ค.ํฌํธ ํฌ์๋ฉ๊น์ง ํด๋ณด๋ฉฐ http://loc

์ ์ด ๊ธ์ ์ฐ๊ฒ ๋์๋์ง ์ฟ ๋ฒ๋คํฐ์ค ์ค์ต ์ค Prometheus๋ฅผ ์ฌ์ฉํด ์ธ๋ถ ์๋น์ค์ ๋ฉํธ๋ฆญ์ ์์งํ๋ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ธฐ ์ํด ์ด ์ค์ต์ ์งํํ๋ค. ํนํ, ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๋ด๋ถ๊ฐ ์๋ ์ธ๋ถ VM์์ ๋์ํ๋ Harbor์ ๋ฉํธ๋ฆญ์ Prometheus๊ฐ ์์งํ๋

ํ์ฌ ์ด๋ ๊ฒ pods์ service๋ ๋ชจ๋ ์ฌ๋ผ์จ ์ํ์ด๋ค.๋ฐ๋ผ์http://192.168.1.12 ์ ์ ์ํ๊ฒ ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ์ธํ ์ ์๋ค.Grafana์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ๋ค.ํผ์์๋ ์๋ฌด๊ฒ๋ ๋ชป ํ๋ค๋ฐ๋์ ๋ฐ์ดํฐ ์์ค(Data Source) ๊ฐ ํ์

์ด๋ฒ ํฌ์คํ ์๋ ๊ทธ๋ผํ๋ ๋์๋ณด๋์์ pie chart ๋ฐ state timeline, heatmap ๋ฑ ๋์๋ณด๋๋ฅผ ๋ค์ํ๊ฒ ๋ง๋ค์ด๋ณด๋ ค๊ณ ํ๋ค.์ด๋ ๊ฒ ๋์๋ณด๋์ ์ฒ์ ๋ค์ด๊ฐ๋ฉด ์๋ฌด๊ฒ๋ ์๋ค.์ฌ๊ธฐ์ ํจ๋์ ์ถ๊ฐํ๊ณ , ์์ปค๋ ธ๋๋ณ cpu ์ฌ์ฉ์จ์ pie chart๋ก ๋ณด๊ธฐ ์

์ด๋ฒ ๊ฒ์๋ฌผ์์๋ ๊ทธ๋ผํ๋ ๋์๋ณด๋์์ apiserver ์์ฒญ์ ๋ํ ์๋ต์๊ฐ (์๊ฐ ํ๋ฆ)์ heatmap์ ๋ง๋ค์ด๋ณด๋ ค๊ณ ํ๋ค.์ฐ์ ๋ฅผ ์ฟผ๋ฆฌํ์ฌ ๋ฐ์ดํฐ๊ฐ ๋์ค๋์ง ํ์ธํด๋ณธ๋ค.์ด์ ์ฌ๊ธฐ์ sum์ํ๊ณ 1m์ ๋ํด less then equal๋ก group byํ์ฌ ์ฟผ๋ฆฌํ

์ด๋ฒ ๊ฒ์๋ฌผ์์๋ Grafana ๋์๋ณด๋์์ Dashboard > New panel์ ํตํด Histogram ์๊ฐํ๋ฅผ ์ง์ ๋ง๋ค์ด๋ณด๋ ๊ณผ์ ์ ์ ๋ฆฌํด๋ณธ๋ค.๋ชฉํ๋ Kubernetes API Server ์์ฒญ ์ฒ๋ฆฌ ์๊ฐ์ ๋ถํฌ๋ฅผ ํ์คํ ๊ทธ๋จ์ผ๋ก ํ์ธํ๋ ๊ฒ์ด๋ค.์ฐ์ , ๋ฐ์ดํฐ๊ฐ

๋ฆฌ๋ ์ค๋ ํฌ๊ฒ Debian ๊ณ์ด๊ณผ Red Hat ๊ณ์ด๋ก ๋๋ ์ ์๋ค.์ด ๊ตฌ๋ถ์ ๋ฌด๋ฃ/์ ๋ฃ์ ๋ฌธ์ ๊ฐ ์๋๋ผ, ํจํค์ง ๊ด๋ฆฌ ๋ฐฉ์๊ณผ ๋ฐฐํฌ ์ ์ฑ ์ ๊ณ์ด ์ฐจ์ด์ด๋ค.Debian ๊ณ์ด์ apt, dpkg ๊ธฐ๋ฐ์ ํจํค์ง ๊ด๋ฆฌ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.Red Hat ๊ณ์ด์ rpm, dnf(y

์ปจํ ์ด๋๊ฐ ๋ฑ์ฅํ๊ธฐ ์ ์ ๋ฐฐํฌ ๋ฐฉ์์ ๋น๊ต์ ๋จ์ํ ๊ตฌ์กฐ์๋ค.์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํด์ ๋์จ ์คํ ํ์ผ์ ์๋ฒ์ ๋ณต์ฌํ๊ณ ์คํํ๋ ๋ฐฉ์์ด๋ค.๊ฐ๋ฐ์๋ IntelliJ ๊ฐ์ IDE๋ฅผ ์ฌ์ฉํด ์ฝ๋๋ฅผ ์์ฑํ๋ค.๊ฐ๋ฐ์ด ์๋ฃ๋๋ฉด Gradle ๊ฐ์ ๋น๋ ๋๊ตฌ๋ฅผ ํตํด ๋น๋๋ฅผ ์ํํ๋ค.๋น

๊ทธ๋์์ ์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ์ ๊ตฌ์ฑํ ๋ ๊ฐ์ฌ๋๊ป์ ์ฃผ์๋ vagrantfile์ ๊ทธ์ ๋ฐ์์ vagrant up์ ํ์ฌ ์ค์นํ๊ฒฝ์ ๊ตฌ์ฑํ์๋๋ฐ, ์ด์ ๋ ๋จ์ํ ์ค์ต ํ๊ฒฝ์ ๋์ด์,์ธํ๋ผ ๊ด๋ฆฌ์์ ๊ด์ ์์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ด๋ป๊ฒ ์ค์นํด์ผ ํ๋์ง๋ฅผ๊ณต์ ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋์ฉ ํ