kubernetes ๊ฐ๋ ๋ฐ cluster ์ค์น ๋ฐฉ๋ฒ (1) - kubernetes ๊ฐ๋ ์ ๋ฆฌ
1. kubernetes ๊ฐ๋ ๋ฐ cluster ์ค์น ๋ฐฉ๋ฒ (1) - kubernetes ๊ฐ๋ ์ ๋ฆฌ
๋ชฉ์ฐจ
5. ๋์ปค์ ์ฟ ๋ฒ๋คํฐ์ค ์ฐจ์ด?
7. ์ปจํ ์ด๋ ๋ฐํ์์ด๋?
9. ์ฟ ๋ฒ๋คํฐ์ค์์ ๋์ปค ๋ฐํ์ ์ง์์ ์ค๋จ ํ ์ด์ ?
10. ์ด๋ค ์ปจํ ์ด๋ ๋ฐํ์์ ์ ํํด์ผ ํ ๊น?
12. ์ฟ ๋ฒ๋คํฐ์ค ์ํคํ ์ฒ
15. ์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค ์ข ๋ฅ
16. ์ฟ ๋ฒ๋คํฐ์ค ์คํ ๋ฆฌ์ง
๊ฐ์
์ค๋๋ง์ ๊ธ์ ์์ฑํฉ๋๋ค. ๊ทธ ๋์ ๋์๋ ๊ฒ์ ์๋๊ณ ์ฌ๋ฌ ์ผ์ด ๊ฒน์น๋ ๋ฐ๋์ ํฌ์คํ ์ ํ์ง ๋ชปํ์ต๋๋ค. ์ต๊ทผ ํ์ฌ๋ kvm, hyper-v, openstack ๋ฑ ๊ฐ์ํ ๊ด๋ จํ ํ๋ก์ ํธ๋ฅผ ์์ํ์ต๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ ๊ฐ์ํ ์ค์์๋ ์ปจํ ์ด๋ ๊ธฐ๋ฐ ๊ฐ์ํ์ ๊ด๋ จ๋ ์ฟ ๋ฒ๋คํฐ์ค์ ๋ํด ๋ค๋ค๋ณผ๊น ํฉ๋๋ค. ์ฌ์ค ์ฟ ๋ฒ๋คํฐ์ค๋ณด๋ค ๋ค๋ฅธ ๊ฐ์ํ ์คํฐ๋๋ฅผ ๋จผ์ ์์ํ์์ง๋ง, AWX ๊ณต๋ถ๋ฅผ ์์ํ๋ฉด์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๊ฐ์ฅ ๋จผ์ ๊ตฌ์ถํ๊ฒ ๋์๊ธฐ ๋๋ฌธ์ ์ฟ ๋ฒ๋คํฐ์ค ํฌ์คํ ์ ๊ฐ์ฅ ๋จผ์ ์์ํ๊ฒ ๋์์ต๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ ์ฟ ๋ฒ๋คํฐ์ค์ ๊ด๋ จ ๋ ๊ฐ๋ ์ ๋จผ์ ์ดํด๋ณด๊ณ , ๋ค์ ํฌ์คํ ์์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถ ํด ๋ณด๊ฒ ์ต๋๋ค.
์ปจํ ์ด๋๋?
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๋ค๋ฃจ๋ฉด์ ์ํํธ์จ์ด ์๋น์ค๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ํน์ ๋ฒ์ ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ฐํ์ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ์ข ์ ํญ๋ชฉ๊ณผ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ํจ๊ป ํฌํจํ๋ ๊ฒฝ๋ ํจํค์ง.
์๋น์ค์ ํ์ํ ๊ด๋ จ ํจํค์ง, ๋ฐ๋ชฌ์ ํ๋ฐ ๋ฌถ์ด์ ์์ ์๋ฒ๋ฅผ ๊ตฌ์ถ ํ ๋ฐฐํฌํ๋ ๊ฐ๋ .
ํธ์คํธ OS์ ๋ฆฌ์์ค๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌํ๊ณ , ์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋๊ฐ ๊ณต์ ํด์ ์ฌ์ฉํ๋ค. VM๊ณผ ๋ฌ๋ฆฌ ์ด์์ฒด์ ์ปค๋์ ๊ณต์ ํ๋ฏ๋ก ํจ์ฌ ๋น ๋ฅด๊ณ ๋ฉ๋ชจ๋ฆฌ๋ ์ ๊ฒ ์ฌ์ฉํ๋ค.
kubernetes๋?

-
์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋์ผ๋ก ๋ฐฐํฌ, ์ค์ผ์ผ๋ง ๋ฐ ๊ด๋ฆฌํด์ฃผ๋ ์คํ์์ค ์์คํ . ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ๊ธฐ๋ฅ์ ์ง์ํ๋ค. ๋ ธ๋ ํด๋ฌ์คํฐ๋ง, ๋ก๋ ๋ฐธ๋ฐ์ฑ, ๋ฐฐํฌ ๋ฐ ๋ณต์ ์๋ํ, ์ฅ์ ๋ณต๊ตฌ ๊ธฐ๋ฅ, ์คํ ์ค์ผ์ผ๋ง, ์ค์ผ์ค๋ง, ๋ก๊น ๋ฐ ๋ชจ๋ํฐ๋ง ๋ฑ์ ์ง์ํ๋ค.
๋์ปค์ ์ฟ ๋ฒ๋คํฐ์ค ์ฐจ์ด?
- ๋์ปค : ๋์ปค๋ ์ปจํ ์ด๋ ๊ธฐ๋ฐ์ ์คํ์์ค ํ๋ซํผ. ์ฆ ์ปจํ ์ด๋ ์คํ์ ํ์ํ ํ์ผ๊ณผ ์ค์ ๊ฐ์ธ ์ด๋ฏธ์ง๋ฅผ ์ปจํ ์ด๋์ ๋์ฐ๊ณ ์คํ ํ ์ ์๋ ๊ธฐ์ . ํ๊ฐ์ ์๋ฒ์ ์ปจํ ์ด๋๋ฅผ ๊ด๋ฆฌํ๋ค๋ฉด Docker๊ฐ ์ ํฉ.
- ์ฟ ๋ฒ๋คํฐ์ค : ์ฟ ๋ฒ๋คํฐ์ค๋ ์ปจํ ์ด๋๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋ฐฐํฌ/ํ์ฅํ๊ณ ๊ด๋ฆฌ๋ฅผ ์๋ํํด์ฃผ๋ ์คํ์์ค ํ๋ซํผ. ์ปจํ ์ด๋ ์์ฅ์ด ์ปค์ง๊ณ ์ ์ ๋ ๋ง์ ์ปจํ ์ด๋๋ฅผ ๊ด๋ฆฌ, ๋ฐฐํฌํด์ผ ์ํฉ์์ ์ฌ์ฉํ๊ธฐ ์ข์.
cgroup์ด๋?1

-
๋จ์ผ, ๋๋ ํ์คํฌ ๋จ์์ ํ๋ก์ธ์ค ๊ทธ๋ฃน์ ๋ํ ์์ ํ ๋น์ ์ ์ดํ๋ ์ปค๋ ๋ชจ๋. ์ปจํ ์ด๋์์๋ ์ปจํ ์ด๋๊ฐ ์์ฑ๋๋ฉด ์ปจํ ์ด๋์ ํ๋ก์ธ์ค๋ค์ ๋ด๋นํ๋ ์ปจํ ์ด๋ cgroup์ด ์์ฑ๋๋ค. ์ปจํ ์ด๋ ๋ด๋ถ ํ๋ก์ธ์ค๊ฐ fork system call์ ํตํด์ ์์ ํ๋ก์ธ์ค๋ค์ ์์ฑํด๋ ์์ฑ๋ ์์ ํ๋ก์ธ์ค ์ญ์ ์ปจํ ์ด๋ cgroup์ ์์๋๊ธฐ ๋๋ฌธ์ ์ปจํ ์ด๋์ ๋ฆฌ์์ค๋ฅผ ์ ์ดํ๊ธฐ ์ํด์๋ ์ปจํ ์ด๋ cgroup์ ์ ์ดํ๋ฉด ๋๋ค.
cgroup์ ์ ์ดํ๋ ๋ฐฉ๋ฒ์๋ cgroupfs์ systemd์์ ์ ๊ณตํ๋ API๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.

- cgroupfs : cgroup ์ ์ด๋ฅผ ์ํด ํ์ํ ํน์ file system. cgroup ์ ๋ณด๋ ๋ฆฌ๋ ์ค ์ปค๋ ๋ด๋ถ์์ ๊ด๋ฆฌํ๊ณ ์์ผ๋ฉฐ ๋ฆฌ๋ ์ค ์ปค๋์ cgroup ์ ์ด๋ฅผ ์ํด ๋ณ๋์ system call์ ์ ๊ณตํ์ง ์๊ณ cgroupfs๋ฅผ ์ ๊ณตํ๊ณ ์๋ค. cgroupfs๋ฅผ ์ฌ์ฉํ์ฌ cgroup์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ cgroupfs์ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ๋ฉด ๋๋ค. ๊ฒฝ๋ก๋ /sys/fs/cgroup/memory.
- systemd : ๋ฆฌ๋ ์ค์ init process์ด๋ฉฐ ๊ธฐ์กด ๊ธฐ๋ฅ์ ๋ฐ๋ชฌ ํ๋ก์ธ์ค ์ ์ด์ด์ง๋ง cgroup์ ์ ์ดํ๋ ์ญํ ๋ ์ํํ๋ค. systemd์ cgroup ์ ์ด ๊ธฐ๋ฅ์ ์์ ์ด ์ ์ดํ๋ ๋ฐ๋ชฌ ํ๋ก์ธ์ค์ ๋ฆฌ์์ค ์ฌ์ฉ๋์ ์ ์ดํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. systemd-run ๋ช ๋ น์ด๋ฅผ ํตํด unit์ ์์ฑํ๊ณ ์คํํ๋ฉด cgroup์ด ์์ฑ๋๋ค.
๊ฒฐ๊ตญ cgroup์ ์ ์ดํ๊ธฐ ์ํด ๋ ๊ฐ์ง ๋ฐฉ์์ด ์ฌ์ฉ๋๋๋ฐ, ๋ ๊ฐ์ง ๋ฐฉ์์ ์ฐจ์ด์ ์ ์์ฒญํ๋ ์ฃผ์ฒด๊ฐ ๋ค๋ฅธ ๊ฒ์ผ ๋ฟ ๋์ผํ ๋์์ ํ๋ค. cgroupfs ๋๋ผ์ด๋ฒ ๋ฐฉ์์ ์ฌ์ฉ ์ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ง์ cgroup ๋๋ ํ ๋ฆฌ์ ๊ด์ฌ๋ฅผ ํ๊ณ , systemd ๋๋ผ์ด๋ฒ ๋ฐฉ์์ ์ฌ์ฉ ์ systemd API๋ฅผ ํตํด cgroup ๋๋ ํ ๋ฆฌ์ ๊ด์ฌ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ๋ ๋ฐฉ์์ cgroup ์์ฑ ๊ฒฝ๋ก๊ฐ ๋ฌ๋ผ์ง๊ฒ ๋๋ค.
systemd๋ ์ฌ์ฉ์ ๋ ๋ฒจ์ ์ดํ๋ฆฌ์ผ์ด์ ์ด๊ณ cgroupfs๋ ์ง์ cgroup์ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ์์ ์ฑ ์ฐจ์ด๋ ์์ ์ ์์ผ๋ ์ฑ๋ฅ์์ ์ฐจ์ด์ ์ ์๋ค. ๋ค๋ง kubernetes ๊ณต์ ๋ฌธ์์๋ kubelet ๋ฐ ๋์ปค์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์๋ก ๋ค๋ฅธ cgroup ์ ์ด ์ ์ฑ ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๋ฆฌ์์ค๊ฐ ๋ถ์กฑํ ๋ ๋ถ์์ ํด์ง๋ ์ฌ๋ก๊ฐ ์์๋ค๊ณ ๋ณด๊ณ ๋์๋ค.
์ปจํ ์ด๋ ๋ฐํ์์ด๋?
: ์ปจํ ์ด๋ ์คํ์ ๋ด๋นํ๋ ์ํํธ์จ์ด. ๋ํ์ ์ผ๋ก dockershim, containerd, CRI-O ๋ฑ์ด ์๋ค.
- docker-shim : ๋์ปค ํธํ์ฑ์ ์ํด ์ฟ ๋ฒ๋คํฐ์ค์์ ์์ฒด์ ์ผ๋ก ๊ฐ๋ฐ ํ ๋์ปค ์ปจํ ์ด๋ ๋ฐํ์ ํด ๊ฒฝ๋ก : /var/run/dockershim.sock
- containerd : ๋์ปค ์ฌ์์ ๊ฐ๋ฐํ ์ปจํ ์ด๋ ๋ฐํ์ ํ๋ก์ ํธ. ๊ฒฝ๋ก : /run/containerd/containerd.sock
- CRI-O : ๋ ๋ํ์ด ๊ฐ๋ฐํ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ํ ํ์ค ์ปจํ ์ด๋ ๋ฐํ์. ๊ธฐ๋ณธ์ ์ธ cgroup ๊ด๋ฆฌ ๋ชจ๋๋ก systemd๋ฅผ ์ฌ์ฉํ๋ค. ๊ฒฝ๋ก : /var/run/crio/crio.sock
CRI๋?
: CRI๊ฐ ์๊ธฐ๊ธฐ ์ ์๋ ๋ํ์ ์ธ ์ปจํ ์ด๋ ๋ฐํ์ ํด์ธ ๋์ปค์ rkt๊ฐ kubelet์ ์ง์ ํตํฉ๋์ด์์์ผ๋, ์ด ์ธ์๋ ์๋ก์ด ์ปจํ ์ด๋ ๋ฐํ์ ํด์ด ์๊ฒจ๋๋ฉด์ ์ฟ ๋ฒ๋คํฐ์ค์์ ๋ค์ํ ๋ฐํ์ ํด์ ์ง์ํ๊ธฐ ์ํด ๋ฐํ์๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ํต์ผํ ํ ์ ์๊ฒ ํด์ฃผ๋ CRI๋ฅผ ๊ฐ๋ฐํ์๋ค.
๋ฐ๋ผ์ ๋ชจ๋ ์ปจํ ์ด๋ ๋ฐํ์ ํด์ CRI ์คํ์ ๋ง์ถฐ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌํํ๋ฉด kubelet๊ณผ ํธํ ํ ์ ์๋ค.
์ฟ ๋ฒ๋คํฐ์ค์์ ๋์ปค ๋ฐํ์ ์ง์์ ์ค๋จ ํ ์ด์ ?2
: ์ปจํ ์ด๋ ๋ฐํ์๊ณผ ํธํ์ฑ์ด ์๊ธฐ ๋๋ฌธ์. Docker๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค์ ํตํฉ๋๋๋ก ์ค๊ณ๋์ด์์ง ์๊ธฐ ๋๋ฌธ์ ํธํ์ฑ์ ๋ง์ ๋ฌธ์ ๊ฐ ์๋ค.
๋์ปค๊ฐ ๋จผ์ ๊ฐ๋ฐ๋์๊ธฐ ๋๋ฌธ์ ๋์ปค๋ ์ฟ ๋ฒ๋คํฐ์ค์ CRI๊ธฐ์ค์ ๋ง์ง ์์ ์ฟ ๋ฒ๋คํฐ์ค์์ ๋์ปค๋ฅผ ์ง์ํ๊ธฐ ์ํ ๋์ปค ๋ฐํ์์ธ docker-shim์ ๊ฐ๋ฐํ๊ฒ ๋จ.
๊ทธ๋ฌ๋ ์ฟ ๋ฒ๋คํฐ์ค์์ docker-shim ์ ์ง๋ณด์์ ์ด๋ ค์์ ๋๊ผ๊ณ , docker์์๋ CRI ๊ธฐ์ค์ ๋ง์ถ ๋ฐํ์ ํด์ ๋ฐ๋ก ๊ฐ๋ฐํ์ง ์์ ์ง์์ ์ค๋จํ๊ฒ ๋์๋ค.
์ด ์ธ์๋ docker์ ๋ชจ๋ ๋ช ๋ น์ root ๊ถํ์ ์ด์ฉํด์ผํ๊ธฐ ๋๋ฌธ์ ๋ณด์์์ ๋ฌธ์ ๋ ์๊ณ , ๋ฐ๋ชฌ ํํ๋ก ์คํ๋๋ ๋์ปค๋ ์ด๋ฏธ์ง ๋น๋, ๊ด๋ฆฌ, ๊ณต์ , ์คํ ๋ฑ ๋์ปค ์์ฒด์๋ ๋ง์ ๊ธฐ๋ฅ์ด ์๊ณ ๋ฐ๋ชฌ ํ์์ ๋ชจ๋ ์ปจํ ์ด๋๋ฅผ ์์ ํ๋ก์ธ์ค๋ก ์์ ํ๊ณ ์์ด ์ฟ ๋ฒ๋คํฐ์ค ์์์ ํ์ํ์ง ์์ ๊ธฐ๋ฅ์ผ๋ก ์ธํด ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ๋ฌด๊ฑฐ์์ง๊ณ , ๋์ปค ๋ฐ๋ชฌ์ด ์ค์ง๋๋ฉด ์ฟ ๋ฒ๋คํฐ์ค ์์์๋ ์ํฅ์ด ๋ฏธ์น๊ธฐ ๋๋ฌธ์ ๋์ปค์ ๋ฐํ์ ์ง์์ ์ค๋จํ์๋ค.
์ด๋ค ์ปจํ ์ด๋ ๋ฐํ์์ ์ ํํด์ผ ํ ๊น?3
๊ด๋ จ ๋ ผ๋ฌธ ๊ฐ์ฃผ ์ฐธ์กฐ
๋ค๋ง CRI-O๋ ์ฟ ๋ฒ๋คํฐ์ค์์ ์ปจํ ์ด๋ ์คํ์ ๋ํ ๋ถ๋ถ๋ง ๊ด์ฌํ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด์ ์ปดํฌ๋ํธ ์ค์น๊ฐ ํ์ํ๋ค.
- crictl : ์ฟ ๋ฒ๋คํฐ์ค ์ปจํ ์ด๋ ๋ฐํ์ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ฒ์ฌ, ๋๋ฒ๊น
- runc : ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์คํ
- podman : ์ปจํ ์ด๋ ์์ง์ ์ธ๋ถ์์ Pod์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๊ด๋ฆฌ ( run, stop, start, ps, attach, exec ) ๋ฑ
- buildah : ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋น๋ ๋ฐ ํธ์
- skopeo : ์ด๋ฏธ์ง ๋ณต์ฌ, ๊ฒ์ฌ, ์ ๊ฑฐ
์ฟ ๋ฒ๋คํฐ์ค ์ฉ์ด
- kubeadm : ์ฟ ๋ฒ๋คํฐ์ค์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ์ ์ธ ๋๊ตฌ, ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํธ ๊ตฌ์ถ ๊ด๋ จ ๋ช ๋ น์ด.
- kubelet : ํด๋ฌ์คํฐ ๋ด์ ๋ชจ๋ ๋ ธ๋์์ ์คํ๋๋ ์์ด์ ํธ. pod ๋ด์ ์ปจํ ์ด๋๋ค์ด ์คํ๋๋ ๊ฒ์ ์ง์ ์ ์ผ๋ก ๊ด๋ฆฌ ๋ฐ ์ํ ์ฒดํฌ. ๋ํ master node์ worker node ๊ฐ ํต์ ์ ์ฑ ์์ง๋ค.
- kubectl : ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ ์ดํ๊ธฐ ์ํ ์ปค๋งจ๋ ๋ผ์ธ ๋๊ตฌ.
์ฟ ๋ฒ๋คํฐ์ค ์ํคํ ์ฒ

์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ์ํคํ ์ฒ
- ETCD : ๋ ธ๋ ์ ๋ณด ๋ฑ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณ ๊ฐ์ฉ์ฑ ํค-๊ฐ ์ ์ฅ์, etcd ๋ฐ์ดํฐ ๋ฐฑ์ ๊ณํ์ ํ์์ด๋ค.
- kube-apiserver : ์ฟ ๋ฒ๋คํฐ์ค API, ์ธ/๋ด๋ถ์์ ๊ด๋ฆฌ์์ ์๊ฒฉ ๋ช ๋ น์ ๋ฐ์ ์ ์๋ ์ปดํฌ๋ํธ ์ฟ ๋ฒ๋คํฐ์ค์ frontend. ์์ ์ํ๋ฅผ ์ ์ํ๊ณ ์กฐํ ํ ์ ์๋ RESTful ์น ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค. ์ฟ ๋ฒ๋คํฐ์ค์ ๊ฐ ๊ตฌ์ฑ ์์๋ API ์๋ฒ๋ฅผ ๊ฑฐ์ณ์ ์๋ก ํต์ ํ๊ฒ ๋๋ค.
-
kube-controller-manager : ์ฟ ๋ฒ๋คํฐ์ค๋ ํ์ฌ ์์คํ ์ ์ฌ์ฉ์๊ฐ ์ ์ํ ์ํ๋ก ๋ง์ถฐ์ค๋ค. ์ค๋ธ์ ํธ์ ํ์ฌ ์ํ๋ฅผ ์ง์์ ์ผ๋ก ์ฒดํฌํ๊ณ ์ํ๋ฅผ ์ ์ดํ๋ค. ์ปจํธ๋กค๋ฌ ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ณ ํด๋ฌ์คํฐ์ ์ค์ ์ํ๋ฅผ ์ํ๋ ์ฌ์์ผ๋ก ์กฐ์ ํ๋ค.
1
2
3
4
5
6
7- Node Controller : ๋ ธ๋๊ฐ ๋ค์ด๋์์ ๋ ์๋ฆผ๊ณผ ๋์์ ๊ดํ ์ญํ ์ ํ๋ค. - Replication Controller : ์ง์ ๋ ์์ pod๋ค์ ์ ์ง์์ผ ์ฃผ๋ ์ญํ ์ ํ๋ค. - Endpoints Controller : ์๋น์ค์ pod๋ฅผ ์ฐ๊ฒฐ์์ผ endpoint ์ค๋ธ์ ํธ๋ฅผ ๋ง๋ ๋ค. - Service Account & Token Controllers : ์๋ก์ด ๋ค์์คํ์ด์ค์ ๋ํ ๊ธฐ๋ณธ ๊ณ์ ๊ณผ API ์ ๊ทผ ํ ํฐ์ ์์ฑํ๋ค. - kube-scheduler : ์์ฑ ๋ pod๋ฅผ ๋ ธ๋์ ํ ๋น ํด ์ฃผ๋ ์ปดํฌ๋ํธ. ๋ฆฌ์์ค, ํ๋์จ์ด, ์ํํธ์จ์ด, ์ ์ฑ , ์ํฌ๋ก๋ ๋ฑ์ ์ฐธ๊ณ ํ์ฌ ๊ฐ์ฅ ์ต์ ํ ๋ ๋ ธ๋์ pod๋ฅผ ๋ฐฐ์นํ๋ค.
- kube-proxy : ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๊ด๋ฆฌํ๊ณ ๋ ธ๋๊ฐ์ ๋คํธ์ํฌ ๊ท์น์ ์ ์งํ๋ค.
๋คํธ์ํฌ ํ๋ฌ๊ทธ์ธ

์ฑ๊ธ ๋
ธ๋์์ Pod to Pod ํต์ ์ ์ฟ ๋ฒ๋คํฐ์ค์์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ kubenet์ ํตํด ๊ฐ๋จํ ๋คํธ์ํฌ ํ๋ฌ๊ทธ์ธ์ ์ ๊ณตํด์ค๋ค. ํ์ง๋ง ์ด ๋คํธ์ํฌ ํ๋ฌ๊ทธ์ธ์ ํฌ๋ก์ค ๋
ธ๋ ๋คํธ์ํน์ด๋ ๋คํธ์ํฌ ์ ์ฑ
์ค์ ๊ณผ ๊ฐ์ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ๊ตฌํ๋์ด์์ง ์๋ค. ๋ฐ๋ผ์ CNI(Container Network Interface)์ ์คํ์ ์ค์ํ๋ ๋คํธ์ํฌ ํ๋ฌ๊ทธ์ธ์ ๋ฐ๋ก ์ฌ์ฉํด์ผํ๋ค.

๊ธฐ์กด ๋คํธ์ํฌ ๊ตฌ์กฐ๋ก ์ฌ๋ฌ ๋ ธ๋๋ฅผ ๊ตฌ์ฑํ๊ฒ ๋๋ฉด ๊ฐ ๋ ธ๋์ ์ค๋ณต๋๋ ip๊ฐ ํ ๋น๋๊ธฐ ๋๋ฌธ์ ์์ฒญ์ด ์์ ๋ ์ด๋ ๋ ธ๋์ ํ๋๋ก ํจํท์ด ์ ๋ฌ๋์ด์ผ ํ๋์ง ์ ์ ์๋ค.
๋ฐ๋ผ์ ์ฟ ๋ฒ๋คํฐ์ค ๋คํธ์ํฌ์ ์ค๋ฒ๋ ์ด ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํด์ฃผ๊ณ ํ๋์ ํธ์คํธ ์ธํฐํ์ด์ค๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ๋ถ๋ถ์ ๋ณ๋์ ๋ชจ๋๋ก ๋ถ๋ฆฌํ CNI๊ฐ ํ์ํ๋ค.
CNI๋ ์ปค๋ ๋ผ์ฐํ , ๋์ ๋ผ์ฐํ , Pod ์ธํฐํ์ด์ค ์์ฑ, IP / Subnet / Routing Table ์ค์ , Proxy ARP ๊ธฐ๋ฅ ๋ฑ์ ์ํํ๋ค.
Application ๋ฐฐํฌ ๋ฐฉ๋ฒ
- Replicaset : pod์ ๋ณต์ ๋ณธ์ ๊ด๋ฆฌํ๋ ์ปจํธ๋กค๋ฌ.

- Deployment : stateless ์ฑ์ ๋ฐฐํฌํ ๋ ์ฌ์ฉ๋๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ์ปจํธ๋กค๋ฌ. deployment๋ replicaset์ ๊ด๋ฆฌํ๊ฒ ๋๋๋ฐ ๋ฐฐํฌ๋ฅผ ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ๋กค๋ง์ ๋ฐ์ดํธ, ๋ฐฐํฌ ์ค๋จ, ๋กค๋ฐฑ ๋ฑ์ด ๊ฐ๋ฅํ๋ค. deployment controller๋ ์ง์์ ์ผ๋ก ๋ฐฐํฌ ๋ ์ธ์คํด์ค๋ค์ ๋ชจ๋ํฐ๋งํ๊ณ , ๋ ธ๋๊ฐ ๋ค์ด๋๊ฑฐ๋ ์ญ์ ๋๋ฉด ํด๋น ์ปจํธ๋กค๋ฌ๊ฐ ํด๋ฌ์คํฐ ๋ด๋ถ์ ๋ค๋ฅธ ๋ ธ๋ ์ธ์คํด์ค๋ก ๊ต์ฒดํด์ค๋ค.
์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค ์ข ๋ฅ

- ClusterIP : ํด๋ฌ์คํฐ ๋ด๋ถ์์ ํด๋น ClusterIP๋ฅผ ํตํด Pod to Pod ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค. ClusterIP๋ ์๋น์ค (Deployment / Replicaset ) ๋จ์๋ก ์์ฑ๋๋ฏ๋ก, ClusterIP ์ฃผ์๋ก ์๋น์ค๋ฅผ ํธ์ถํ๋ฉด backend ๋จ์ Pod ์ค ํ๋๋ก ํ๋ก์๋๋ค.

- NodePort : ํด๋ฌ์คํฐ์ ์ํ Node์ IP:NodePort๋ฅผ Pod์ Service Port์ ๋งคํ์ํจ๋ค.

- LoadBalancer : ์ธ๋ถ์ LB๋ฅผ ์์ฑํ์ฌ, ์ธ๋ถ LB์์ NodePort๋ก ๋ค์ด์ค๋ ํธ๋ํฝ์ ํ๋ก์ํ๋ค.

- ๋ฒ์ธ) Ingress : ์๋น์ค์ ์ข ๋ฅ๋ ์๋์ง๋ง, ์ธ๋ถ์์ ํด๋ฌ์คํฐ ๋ด๋ถ๋ก ๋ค์ด์ค๋ ๋คํธ์ํฌ ์์ฒญ์ ์ฒ๋ฆฌ ํ ๋ฐฉ๋ฒ์ ์ ์ํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค ์คํ ๋ฆฌ์ง

- pv : ์ธํ๋ผ ๊ด๋ฆฌ์๊ฐ ์ฌ์ ์ ์ ์ ํด ๋์ ๋ณผ๋ฅจ
- pvc : ์ฌ์ฉ์ ( ๊ฐ๋ฐ์ ) ๊ฐ pod๋ฅผ ์์ฑํ๊ธฐ ์ํด ์์ฒญํ๋ ๋ณผ๋ฅจ
- Storage Class : ๋งค๋ฒ pvc๋ฅผ ์์ฒญ ํ ๋ ๋ง๋ค pv ๋ฅผ ์์ฑํ ์๊ฐ ์๊ธฐ ๋๋ฌธ์, ๋ง๋ pv๊ฐ ์์ ์ ์๋์ผ๋ก pv๋ฅผ ์์ฑํ ์ ์๋๋ก ๋ฏธ๋ฆฌ pv๋ฅผ ์์ฑ ํ ๊ณต๊ฐ์ ์ ์ธ.
๋ง์น๋ฉฐ
์ด๋ฒ ํฌ์คํ ์์๋ ์ฟ ๋ฒ๋คํฐ์ค ๊ด๋ จ ๊ฐ๋ ๋ฐ ์ฉ์ด์ ๋ํด ์ ๋ฆฌํด๋ณด์๋ค. ๊ฐ๋ ๋ ์ด๋ ต๊ณ ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ด ๋ง์ ๊ตฌ์ถํ๊ธฐ๊ฐ ๊น๋ค๋กญ๊ธด ํ์ง๋ง ์ ์ฌ์ฉํ๋ค๋ฉด ์ถฉ๋ถํ ๋งค๋ ฅ์ ์ธ ํด๋ผ์ฐ๋ ์ปดํจํ ์ ๊ตฌ์ฑ ํ ์ ์์ ๊ฒ ๊ฐ๋ค. ๋ค์ ํฌ์คํ ์์๋ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๊ตฌ์ถ์ ๋ํด์ ๋ค๋ฃฐ ์์ ์ด๋ค.
-
์ฐธ๊ณ : https://ikcoo.tistory.com/189ย ↩
-
๊ด๋ จ ๋ ผ๋ฌธ ์ฐธ์กฐ : https://www.scitepress.org/Papers/2020/93404/93404.pdfย ↩