๐[Sprint1] ์ปจํ ์ด๋ ํ๋ฐฉ ์ ๋ฆฌ
- -
*ํด๋น ๊ธ์ ์ธํ๋ฐ ใ์ฟ ๋ฒ๋คํฐ์ค ์ด๋๋ ํด๋์ค (์ง์ํธ) - Sprint1ใ ๊ฐ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ณต์ต&์ ๋ฆฌ ์ฐจ ์์ฑ๋์์ต๋๋ค.
๐๊ธฐ์ ์ ํ๋ฆ์ผ๋ก ์ดํดํ๋ ์ปจํ ์ด๋
Kubernetes๋ DevOps์ Container Infra ํ๊ฒฝ์์ ๋นผ๋์ ์ ์๋ ๋ถ๋ถ์ด ๋์์ต๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ ์ดํดํ๊ธฐ ์ํด์๋ OS์ ๊ธฐ์ ๋ฐ์ ๊ณผ ๋๋ถ์ด ๊ฐ์ํ ๋ฐ ์ปจํ ์ด๋ ํ๊ฒฝ์ ๋ํ ์ ๋ฐ์ ์ธ ๋ฐฐ๊ฒฝ ํ๋ฆ์ ์ ํ์๊ฐ ์์ต๋๋ค.
๐Linux OS ํ๋ฆ
Linux OS๋ UNIX๋ฅผ ์์์ผ๋ก ๋ฐ๋น์๊ณ์ด๊ณผ ๋ ๋ํ๊ณ์ด๋ก ๋ฐฐํฌํ์ ์ ๊ณตํ๊ณ ์๊ณ RedHat์์๋ ๊ธฐ์ ์ฉ ๋ฐฐํฌํ์ธ Red Hat Enterprise Linux(RHEL)์ ์ ๋ฃ์ ๊ณตํ์ฌ ๋๋ถ๋ถ์ ๊ธฐ์ ์์๋ ํด๋น ๋ฐฐํฌํ์ ์ฃผ๋ก ์ฌ์ฉํ๊ฑฐ๋ CentOS, Ubuntu ๋ ๋ณํํ์ฌ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
ํ์ง๋ง RedHat ๋ฐฐํฌํ ๊ฐ๋ฐ ์์๊ฐ ๋ณ๊ฒฝ๋๋ฉด์ CentOS๋ RHEL์ ๋ฌด๋ฃ ๋ฐฐํฌํ ํ์์ด ์๋๋ผ RHEL ์ ์๋ฐฐํฌํ ์ถ์ ์ด์ ์ ๊ฐ๋ฐ ๋ฐ ์์ ํ๋ฅผ ์ํ ์ญํ ์ ํ๊ฒ๋๋ฉด์ CentOS๋ฅผ ์ด์ํ๊ฒฝ์์ ์ฌ์ฉํ๊ธฐ์๋ ์ด์ ์ด๋ ค์์ง ์ค์ ์ด ๋์์ต๋๋ค.
์ด์ ๋ฐ๋ฅธ ๋์์ผ๋ก RHEL์ ๋ฌด๋ฃ ๋ฐฐํฌํํ์์ผ๋ก Rocky Linux ์ Almo Linux ๊ฐ ๋์ด์ ๋ฐ๋ผ ์์ผ๋ก๋ ํด๋น ๋ฐฐํฌํ๋ค์ ์ฌ์ฉ์ด ๋๋๋ฌ์ง ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
Linux OS๋ ์ฌ๋ฌ ๋ฐฐํฌํ์ ์ ๊ณตํ๊ณ ์๊ณ , ํฌ๊ฒ ๋ฐ๋น์๊ณ์ด๊ณผ ๋ ๋ํ๊ณ์ด๋ก ๊ตฌ๋ถ๋์ด ์ฟ ๋ฒ๋คํฐ์ค ์ค์น ๊ฐ์ด๋์์๋ 2๊ฐ์ง ๊ณ์ด์ ๋ฐ๋ฅธ ์ค์น๊ฐ์ด๋๋ฅผ ์ ๊ณตํฉ๋๋ค. (์ค์ต์์๋ ๋ ๋ํ๊ณ์ด์ Rocky Linux๋ฅผ ์ฌ์ฉ ์์ )
๐Container ํ๋ฆ
๊ธฐ์ ์ด ๋ฐ์ ํ๋ฉด์ ๋ด๋ถ์ ์ผ๋ก ๋ง์ ์ฝ์ด ๊ธฐ์ ๋ค์ด ๊ฐ๋ฐ๋์๋๋ฐ ๊ทธ ์ค ํ๋๊ฐ ๊ฒฉ๋ฆฌ ๊ธฐ์ ์ ๋๋ค.
chroot(์ฌ์ฉ์ ๊ฒฉ๋ฆฌ)๋ฅผ ์์์ผ๋ก ํ์ผ์ด๋ ๋คํธ์ํฌ๋ฅผ ๋ถ๋ฆฌํ๋ ๊ธฐ์ ์ด ๊ฐ๋ฐ๋์๊ณ , cgroup๋ฅผ ํตํด App์ด๋ CPU, Memory๋ฅผ ํ ๋น ํ ์ ์๊ฒ ๋์์ต๋๋ค. namespace๋ก 1๊ฐ์ App์ด 1๊ฐ์ ๋ ๋ฆฝ์ ์ธ ํ๋ก์ธ์ค๋ฅผ ์ฐจ์งํ๋๋ก ํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค. ํ๋ก์ธ์ค๋ฅผ ๊ฒฉ๋ฆฌ ์์ผ์ฃผ๋ ๊ธฐ์ ์ด ๊ฐ๋ฐ๋๋ฉด์ , ์ด์ ๊ฐ๊ฐ์ Application์ ๋ ๋ฆฝ์ ์ธ ํ๊ฒฝ์์ ์คํ์ํฌ ์ ์๊ฒ ๋์์ต๋๋ค.
์ด๋ฐ ๊ธฐ์ ๋ค์ ์ง์ฝํด์ ์ ๋ฆฌ ํ๊ฒ์ด LXC (Linux Container) ์ฆ, ์ต์ด์ ์ปจํ ์ด๋๊ฐ ํ์ํ์ต๋๋ค.
์ดํ Docker๊ฐ ํ์ํ๋ฉด์ ๋๊ตฌ๋ ์ฝ๊ฒ ์ปจํ ์ด๋ ํ๊ฒฝ์ ๋์ธ ์ ์๊ฒ ๋์์ต๋๋ค. ์ด๊ธฐ Docker๋ root ๊ถํ์ผ๋ก ์ค์น&์คํ์ ํ์ด์ผ ํ๊ธฐ์ ๋ณด์์ ์ทจ์ฝํ ๋ฉด์ด ์์๊ณ , ๋ณด์๊ณผ ์ฑ๋ฅ์ ๊ฐ์กฐํ rkt(rocket) ์ด๋ผ๋ ์ปจํ ์ด๋๊ฐ ๋์์ต๋๋ค. ํ์ฌ๋ rootless ์ค์น๋ชจ๋๊ฐ ์๊ฒจ์ Docker์ ๋ํ ๋ณด์์ด ๊ฐํ๋์์ต๋๋ค.
๊ทธ ์ดํ Docker์์ ๊ธฐ๋ฅ์ด ๋ถ๋ฆฌ๋ containerd ์ RedHat็คพ์ cri-o ๋ผ๋ ์ปจํ ์ด๋๋ ๋์ค๊ฒ๋๋ฉด์ ์ปจํ ์ด๋ ์์ฅ์์๋ ๊ฒฝ์๋ ฅ์ด ์ค์ํด์ง ์ํฉ์ ๋๋ค.
๐์ฉ์ด ์ง๊ณ ๋์ด๊ฐ๊ธฐ
Container: App์ด ๊ตฌ๋๋๋ ํ๊ฒฝ์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํํ ์ ์๋๋ก ํ๋ ๊ฒฉ๋ฆฌ ๊ธฐ์
Container Runtime: ์ปจํ ์ด๋ ๊ธฐ์ ์ ๋ค๋ฃจ๋ tool (ex. Docker)
Kubernetes: ์ปจํ ์ด๋ ๋ฐํ์์ ํตํด ์ปจํ ์ด๋๋ฅผ Orchestaration ํ๋ tool
Orchestaration: ์ฌ๋ฌ ์ปจํ ์ด๋ ํ๊ฒฝ์ ํตํฉ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ํ์(์ปจํ ์ด๋์ ๋ฐฐํฌ, ๊ด๋ฆฌ, ํ์ฅ, ๋คํธ์ํน ๋ฑ)
๐Application ๋ฐฐํฌ ํ๊ฒฝ์ ํ๋ฆ
์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ ๋๋ช ์ฌ๊ฐ ๋ ์ฟ ๋ฒ๋คํฐ์ค๋ ์ด๋ป๊ฒ ์ ์ฉํ tool์ด ๋์์๊น. ์ด์ ์ ๋ฐฐํฌํ๊ฒฝ๋ถํฐ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉด,,
Application ๋ฐฐํฌ ํ๊ฒฝ์ ๋ํ ํ๋ฆ์ ๋ณด๋ฉด, ์ด๊ธฐ ์ ํต์ ์ธ ๋ฐฐํฌ ํ๊ฒฝ์ ๋ฌผ๋ฆฌ์๋ฒ์ OS๋ฅผ ์ฌ๋ฆฌ๊ณ ๊ทธ ์์ App์ด ๊ตฌ๋๋๋ ๋ฐฉ์์ด์๊ณ , ํ ๋ฌผ๋ฆฌ์๋ฒ์์ ์ฌ๋ฌ App๋ค์ ๋ฆฌ์์ค ํ๊ณ๋ฅผ ์ ์ํ ๋ฐฉ๋ฒ์ด ์์ด ๋ฆฌ์์ค ํ ๋น ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ก์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๊ฐ App๋ค์ ๋ํ ๋ณ๋์ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ฑฐ๋ ์๋ฒ์์์ ์ฆ์คํ๋ ๋ฐฉ์์ผ๋ก ๋น์ฉ์ด ๋ง์ด ๋ค์์ต๋๋ค.
์ด์ ๋ํ ํด๊ฒฐ์ฑ ์ผ๋ก ๊ฐ์ํ ํ๊ฒฝ์ ํตํ ๋ฐฐํฌํ๊ฒฝ์ด ๋ํ๋ฌ์ต๋๋ค. ๋จ์ผ ๋ฌผ๋ฆฌ ์๋ฒ์ Hypervisor๋ฅผ ์ฌ๋ฆฌ๊ณ , ๊ทธ ์์ ์ฌ๋ฌ Virtual Machine์ ์คํํ์ฌ App์ ๊ฐ๊ฐ์ VM์ ํตํด ๊ฒฉ๋ฆฌ์์ผ ๊ธฐ์กด ์ ํต์ ์ธ ๋ฐฐํฌํ๊ฒฝ์ ๊ฐ์ ํด๋๊ฐ์ต๋๋ค. ๋ค๋ง ๊ฐ๊ฐ์ VM๋ง๋ค OS๋ฅผ ์ค์นํ๊ณ ํ๊ฒฝ์ธํ ์ ์ผ์ผํ ํด์ฃผ์ด์ผํจ์ ๋ฐ๋ผ ์ฌ์ ํ ๋ฆฌ์์ค์์ ๋ฌด๊ฑฐ์์ ์กด์ฌํ์ต๋๋ค.
์ดํ ์ปจํ ์ด๋ ๊ธฐ์ ์ด ๊ฐ๋ฐ๋๋ฉด์ App๋ง๋ค ๋ณ๋์ OS๋ฅผ ์ค์นํด์ค์ผํ๋ ํ๊ฒฝ์ด ํ๋์ OS์์์ ๊ฒฉ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ก์ต๋๋ค. ํ๋์ OS์์ ์ฌ๋ผ๊ฐ์ง๋ง, ์ปจํ ์ด๋ ๋ฐํ์์ ์ด์ฉํด ๊ฐ๊ฐ์ App๋ค์ด ์ปจํ ์ด๋๋ฅผ ํตํด ๊ฒฉ๋ฆฌ๋ ๊ณต๊ฐ์์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํํ๊ฒ ๋๋ฉด์ ๊ฐ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ํ ๋นํ๊ณ ๊ด๋ฆฌํ ์ ์๊ฒ ๋์์ต๋๋ค.
๐Container Orchestration & Container ํ๋ฆ
Application๋ค์ ์ฌ๋ฌ ์ปจํ ์ด๋์ ๊ฑธ์ณ์๊ณ , ์ด๋ฌํ ์ปจํ ์ด๋๋ ์ฌ๋ฌ ์๋ฒ์ ๋ฐฐํฌ๋์ด์ผ ํ ๋, Kubernetes๋ผ๋ Container Orchestration tool์ ํ์ฉํ์ฌ ์ง์์ ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ๋ฐฐํฌํ๊ณ ํ๊ฒฝ์ ๊ตฌ์ถ& ๊ด๋ฆฌํ๋๋ฐ ์ ์ฉํด์ก์ต๋๋ค.
Container Runtime Interface(CRI)๋ ํด๋ฌ์คํฐ ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ์ปดํ์ผํ์ง ์์๋ kubelet์ด ๋ค์ํ ์ปจํ ์ด๋ ๋ฐํ์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ํ๋ฌ๊ทธ์ธ ์ธํฐํ์ด์ค๋ก kubelet ๊ณผ ์ปจํ ์ด๋ ๋ฐํ์ ์ฌ์ด์ ํต์ ์ ์ํ ์ฃผ์ ํ๋กํ ์ฝ์ ๋๋ค.
์ปจํ ์ด๋ ๊ธฐ์ ์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ ๋ง์ ์ปจํ ์ด๋๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋๊ตฌ๊ฐ ํ์ํด์ก๊ณ , CRI ํ์ค์ด ๋ง๋ค๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ํตํด ์ฌ๋ฌ ์ปจํ ์ด๋์ ๋ํ ์ค์ผ์คํธ๋ ์ด์ ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.
CRI์ ๋๋ถ์ด ์ปจํ ์ด๋์ ๊ธฐ์ ๋ฐ์ ๊ณผ ์ข ๋ฅ๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ปจํ ์ด๋ ๋ฐํ์์ ๋ํ ํ์คํ๋ฅผ ์ํด Open Container Initiative(OCI)๊ฐ ์๊ฒจ๋ฌ๊ณ , OCI์คํ์ ๋ง์ถฐ์ ๊ตฌํ๋ ์ปจํ ์ด๋ ๋ฐํ์์ ๋ณ๋์ CRI ๊ตฌํ ์์ด OCI๋ฅผ ์ง์ํ๋ CRI๊ตฌํ์ฒด์ ์ํด ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง๊ฒ ๋์์ต๋๋ค.
'Containers > Kubernetes' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐[Sprint1] ์ค๋ฌด์์ ๋๊ปด๋ณธ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ ๋ง ํธํ ์ด์ (0) | 2023.12.06 |
---|---|
๐[Sprint1] ์ฟ ๋ฒ๋คํฐ์ค ๋ฌด๊ฒ๊ฐ ์๊ฒ ์ค์นํ๊ธฐ (0) | 2023.09.21 |
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค