โ ์ฟ ๋ฒ๋คํฐ์ค ์ด๋๋ ํด๋์ค (์ง์ํธ) - Spring 1, 2 ์ ๋ฃ๊ณ ์์ฑํ๋ ๋ณต์ต ๋ธ๋ก๊ทธ ์ ๋๋ค.
[๋ฆฌ๋ ์ค ํ๋ฆ์ผ๋ก ์ดํดํ๋ ์ปจํ ์ด๋]
1. ๋ฆฌ๋ ์ค ๋ฐฐํฌํ ์ ํ
1-1. ๋ฆฌ๋ ์ค(Linux) ๋ ?
๋ฆฌ๋ ์ค๋ ์ปดํจํฐ ์ด์์ฒด์ (OS) ์ค ํ๋์ด๋ค.
์ฝ๊ฒ ๋งํด์ ์ปดํจํฐ ํ๋์จ์ด์ ์ํํธ์จ์ด๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ์์คํ ์ด๋ค.
1-2. ๋ฆฌ๋ ์ค ๊ธฐ๋ฐ ์ฌ๋ฌ ๋ฐฐํฌํ
๋ฆฌ๋ ์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ์ฌ๋ฌ ๋ฐฐํฌํ ์ค ํ๋๋ฅผ ์ ํํด์ ์ฌ์ฉํ ์ ์๋๋ฐ, ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋๋ค.
1. Debian ๊ณ์ด : ๋ฌด๋ฃ (์ปค๋ฎค๋ํฐ์ฉ)
2. Redhat ๊ณ์ด : ์ ๋ฃ (๊ธฐ์ ์ฉ)
1-3. Debian ๊ณ์ด
Debian ์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๋ ๋ฆฌ๋ ์ค ๊ธฐ๋ฐ ๋ฐฐํฌํ์ด๋ค.
์ด Debian ์ ํธ์๊ธฐ๋ฅ์ ์ถ๊ฐํด์ ์ฌ์ฉ ํธ์์์ ๋์ธ ๋ฐฐํฌํ์ด ๋ฐ๋ก Ubuntu ๋ก, ํ์ฌ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ค.
1-4. Redhat ๊ณ์ด
๋จผ์ , Redhat ๊ธฐ๋ฐ linux ๋ฐฐํฌํ์ด ์์ฑ๋๋ ์์์ ๋ํด์ ์์๋ณด์
fedora linux -> redhat linux -> CentOS ์์๋ก ๋ฐฐํฌํ์ด ๋ง๋ค์ด์ง๋ค.
- fedora linux : ์ต์ ๊ธฐ๋ฅ๊ณผ ๊ธฐ์ ์ ์คํํ๊ณ ๊ฐ๋ฐํ๋ ๋ฒ์ (๋ฌด๋ฃ)
- redhat linux : fedora ์์ ๊ฒ์ฆ๋๊ณ ์์ ํ๋ ๊ธฐ๋ฅ์ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ธฐ์ ์ฉ ๋ฐฐํฌํ (์ ๋ฃ, ๋ณดํต ๊ธฐ์ ๋ค์ด ์ฌ์ฉ)
- CentOS : redhat linux ์ ๋ณต์ ํ, ์ ์ง๋ณด์๋ฅผ ์ง์ ํ ์ฌ๋ ฅ์ด ๋๋ ๊ธฐ์ ์ด ๋ณดํต ์ฌ์ฉ (๋ฌด๋ฃ)
์ด์ง๋ง, centos ๊ฐ ์ข ๋ฃ๋์๋ค. ๐
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ centos ๋ฅผ ๋์ฒดํ๊ธฐ ์ํด์
- redhat linus ๋ก ์ ํ
- CentOS ๋ฒ์ ์ ๋ํ ๊ธฐ์ ์ง์ ์ ์ง
- ํ OS ๋ก ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ ์ ๊ณตํ์ฌ ์ด์
- CentOS ์ ๋น์ทํ ๋ณต์ ๋ฒ์ ์ ํ (Rocky Linux, AlmaLinux)
4๊ฐ์ง์ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ ํํด์ผ ํ๋ค.
⇒ ๊ฐ์์์๋ Rocky Linux ๋ฅผ ๋์ฒด ๋ฐฐํฌํ์ผ๋ก ์ ํํ๋ค.
2. Container
2-1. LXC
LXC ๋ ๋ฆฌ๋ ์ค์ ์ปค๋ ๊ธฐ๋ฅ๋ค์ ์กฐํฉํด์ ๋ง๋ ์ต์ด์ ์ปจํ ์ด๋ ๊ธฐ์ ์ด๋ค.
2008๋ ์ ๋ฑ์ฅํ์ผ๋ฉฐ ์๋์ ๋ฆฌ๋ ์ค ์ปค๋ ๊ธฐ๋ฅ๋ค์ด ๊ฒฐํฉ๋์ด ์ปจํ ์ด๋ ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ค.
- chroot : ์ ์ , ํ์ผ, ๋คํธ์ํฌ ๊ฒฉ๋ฆฌ
- cgroup : ์์๊ฒฉ๋ฆฌ (cpu, memory)
- namespace : ํ๋ก์ธ์ค ๊ฒฉ๋ฆฌ
์ด๋ฐ ๊ธฐ๋ฅ๋ค๋ก ๊ฒฝ๋ํ๋ ๊ฐ์ํ ๊ธฐ์ ์ ์์ด๊ฐ ๋์๋ค.
2-2. docker
LXC ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก docker ๊ฐ ๋ฑ์ฅํ๋ค.
ํ์ง๋ง, root ๊ถํ์ผ๋ก ์ค์นํ๊ณ ์คํ์ ํด์ผํ๊ธฐ ๋๋ฌธ์ ๋ณด์์ด ์ทจ์ฝํ ์๋ ์๋ค๋ ๋จ์ ์ด ์กด์ฌํ์ง๋ง
rootless ์ค์น ๋ชจ๋์ ๋ฑ์ฅ์ผ๋ก ๋ณด์์ด ๊ฐํ๋์๋ค.
2-3. rkt
rkt๋ CoreOS์์ ๋ง๋ ์ปจํ ์ด๋ ๋ฐํ์์ด์์ง๋ง, CoreOS๊ฐ Red Hat์ ์ธ์๋๊ณ ,
Red Hat์ Kubernetes์ ์ต์ ํ๋ ๋ฐํ์์ธ CRI-O ๊ฐ๋ฐ์ ์ง์คํ๋ฉด์ rkt ๋ ์ ์ง๋ฅผ ์๊ณ ๊ฐ๋ฐ๋ ์ข ๋ฃ๋๋ค.
3. Container Orchestration
Container Orchestrantion ์ ์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์๋ํํ๋ ๊ธฐ์ ์ด๋ค.
์๋์ผ๋ก ๋ฐฐํฌ, ๊ด๋ฆฌ, ํ์ฅ, ๋ณต๊ตฌ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ ๋ณต์กํ ์์คํ ์ ์์ ์ ์ด๊ณ ํจ์จ์ ์ผ๋ก ์ด์ํ ์ ์๊ฒ ํด์ค๋ค.
3-1. Kubernetes
Docker ๊ฐ ๋ฑ์ฅํ๋ฉด์ ์ปจํ ์ด๋ ์ฌ์ฉ์ด ๋์คํ ๋์๋ค.
์ด ํ ์ปจํ ์ด๋๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ ์ค์ผ์คํธ๋ ์ด์ ๋๊ตฌ๋ค์ด ๋ฑ์ฅํ๊ณ ,
๊ทธ ์ค Kubernetes(K8s) ๊ฐ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์ฃผ๋ชฉ๋ฐ๊ณ ์ฑ์ฅํ๋ค.
์๊ฐ์ด ์ง๋๋ฉด์ K8s ๋ ์ฌ์ค์ ํ์ค์ผ๋ก ์๋ฆฌ๋ฅผ ์ก์๊ณ , ์ดํ ์ด๋ค ์ปจํ ์ด๋ ๋ฐํ์์ด K8s์ ์ ๋ง๋๊ฐ๊ฐ ์ค์ํ ๊ฒฝ์ ์์๊ฐ ๋์๋ค.
3-2. container
K8s๊ฐ ์ค์ฌ์ด ๋๋ฉด์, Docker ์ธ์ ์๋ก์ด ์ปจํ ์ด๋ ๋ฐํ์๋ค์ด ๋ฑ์ฅํ๋ค.
๊ฐ์ฅ ๋ํ์ ์ธ ์ปจํ ์ด๋๋ ์๋์ ๊ฐ๋ค.
- containerd : Docker ์์ ๋ถ๋ฆฌ๋์ด ๋ง๋ค์ด์ง ๋ฒ์ฉ ์ปจํ ์ด๋ ๋ฐํ์
- CRI-O : Red Hat ์ฃผ๋๋ก ๊ฐ๋ฐ๋ K8s์ ์ต์ ํ๋ ๊ฒฝ๋ ์ปจํ ์ด๋ ๋ฐํ์
[์ฟ ๋ฒ๋คํฐ์ค ํ๋ฆ์ผ๋ก ์ดํดํ๋ ์ปจํ ์ด๋]
1. Contanier runtime
container runtime ์๋ High Level (์ฌ์ฉ์ ์นํ์ ) ๊ณผ Low Level (๊ธฐ๊ณ ์นํ์ ) ์ด ์๋ค.
1-1. Low Level
- LXC (์ต์ด์ ์ปจํ ์ด๋) : Low Level ์ปจํ ์ด๋ ๋ฐํ์
- libcontainer : docker ๊ฐ LXC ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ Low Level ์ปจํ ์ด๋ ๋ฐํ์
- rkt : docker ๋ณด๋ค ๋ณด์์๋ ์ข์ง๋ง, Low Level ์ด๋ผ ์ฌ์ฉ์์๊ฒ ์ํ์ง๊ณ ์๋ค
1-2. High Level
- docker : libcontainer ๋ฅผ ์ฌ์ฉํด์ ๋ง๋ High Level ์ปจํ
์ด๋ ๋ฐํ์
dockerd -> containerd -> libcontainer -> runC
dockerd : CLI ๋ Log ๋ฑ ๋ค์ํ ๋ถ๊ฐ ๊ธฐ๋ฅ
containerd : ์ปจํ ์ด๋๋ฅผ ๋ง๋ค์ด์ฃผ๋ ์ญํ - docker vs LXC
docker → App ๋ค์ ๋ ๋ฆฝ์ ์ธ ํ๊ฒฝ์์ ๋์ธ๋ ค๊ณ ์ฌ์ฉ (for APP)
LXC → ์ด์์ฒด์ ๋ฅผ ์ปจํ ์ด๋ ๊ฐ์ํ๋ก ๋๋๊ธฐ ์ํ ๋ชฉ์ (for OS)
๊ฐ๊ฐ ์ปจํ ์ด๋๋ฅผ ๋ง๋ค์ด์ฃผ์ง๋ง ๊ทธ ๋ชฉ์ ์ด ๋ค๋ฅด๋ค
2. Container Orchestration
2-1. ๐ฌ Pod ์์ ์ปจํ ์ด๋ ๋ ๊ฐ๋ฅผ ๋ง๋ค๋ผ๋ ๋ช ๋ น์ด ์์ ๋์ ํ๋ฆ
kube-apiserver
- k8s ๋ก ๋ค์ด์ค๋ ๋ชจ๋ API ๋ฅผ ๋ฐ๋๋ค
- ๐ค ํ์ฌ ๋ฐ์ API ๊ฐ Pod ์์ฑ์ ๊ด๋ จ๋ ๋ด์ฉ์ด๋๊น ,,, ์ด๊ฑธ ๋ด๋นํ๋ kubelet ํ๋์ ์ ๋ฌํด
kubelet
- Pod ๋ด์ฉ์ ๊น๋ณด๋๊น ์ปจํ ์ด๋๊ฐ ๋๊ฐ๋ค
- ๊ฐ ์ปจํ
์ด๋ ์์ฑ ์์ฒญ์ ์ปจํ
์ด๋ ๋ฐํ์์ ์ ๋ฌํ๋ค.
๐ฌ "์ปจํ ์ด๋ ๋ ๊ฐ ์์ฑํด์ค!" → 2๋ฒ ์์ฒญ
Container Runtime
- ์ค์ง์ ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ ์ญํ
- ์์ฒญ์ ๋ฐ์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์์ฑํด์ฃผ๋ ์ญํ ์ ํ๋๊ฒ ์ปจํ ์ด๋ ๋ฐํ์์ด๊ณ , ์ปจํ ์ด๋๋ ์์ฑ๋ฌผ
2-2. ์ปจํ ์ด๋ ๋ฐํ์์ ๋ณ๊ฒฝํ๋ฉด ์ด๋ฏธ์ง๋ฅผ ๋ค์ ๋ง๋ค์ด์ผํ ๊น?
๐ โ๏ธ ์ ๋ง๋ค์ด๋ ๋๋ค.
์ด์ ๋ ํ์คํ ๋๋ถ์ด๋ค.
์ปจํ ์ด๋ ๊ธฐ์ ์ด ๋ค์ํด์ง๋ฉด์ ํ์ค์ ํ์์ฑ์ด ๋๋๋์๊ณ , ๊ทธ๋์ OCI ๊ฐ ๋ง๋ค์ด์ก๋ค.
OCI ๋ ์ด๋ฏธ์ง ์ฌ์, ๋ฐํ์ ์ฌ์ ๋ฑ์ ์ ์ํ๊ณ , ์ด ๊ท์ฝ์ ๋ฐ๋ฅด๋ฉด, ์๋ก ๋ค๋ฅธ ์ปจํ ์ด๋ ๋ฐํ์ ๊ฐ ์ด๋ฏธ์ง ๊ณต์ ๊ฐ ๊ฐ๋ฅํ๋ค.
์์
- Docker๋ OCI ํ์ค์ ๋ง์ถ๊ธฐ ์ํด runC๋ผ๋ low-level ๋ฐํ์ ๋๊ตฌ๋ฅผ ๋ง๋ฆ.
- containerd๋ ๋ด๋ถ์ ์ผ๋ก runC๋ฅผ ์ฌ์ฉ.
- runC๋ LXC ๋์ ์ปค๋ ๋ ๋ฒจ์ ๊ฐ์ํ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๋ ์ง์ ์ ์ธ ์ ๊ทผ ์ ๊ณต.
3. kubelet ๊ณผ ์ปจํ ์ด๋ ๋ฐํ์์ ๊ด๊ณ ๋ณํ
3-1. kublet ์ ์ญํ
- Pod ์ ์๋ฅผ ๋ฐ์์, ์ค์ ์ปจํ ์ด๋ ๋ฐํ์์ ์ปจํ ์ด๋ ์์ฑ ์์ฒญ์ ์ ๋ฌํ๋ ์ญํ
- ๋ฐํ์์ด ์ดํดํ ์ ์๋ ํํ์ API ๋ฅผ ํธ์ถํ๋ค.
3-2. k8s 1.0 ๋ฒ์ (์ด๊ธฐ ๊ตฌ์กฐ)
- kubelet ๋ด๋ถ์ ์ปจํ
์ด๋ ๋ฐํ์๋ณ ๋ถ๊ธฐ ๋ก์ง (ex. case๋ฌธ) ๋ด์ฅ
docker, rkt ๋ฑ ๋ฐํ์์ ์ง์ ๊ตฌ๋ถํ์ฌ API ํธ์ถ. - ๋ฌธ์ ์ : ๋ฐํ์์ด ๋์ด๋ ์๋ก kubelet ์์ค๋ฅผ ๊ณ์ ์์ ํด์ผ ํ๋ค.
-> ์ ์ง๋ณด์ ์ด๋ ต๊ณ , ํ์ฅ์ฑ ๋ถ์กฑ.
3-3. k8s 1.5 ๋ฒ์
- CRI (Container Runtime Interface) ๋์
.
- kubelet ↔ ๋ฐํ์ ์ฌ์ด์ ํ์ค ์ธํฐํ์ด์ค ๊ณ์ธต ์์ฑ
- kubelet์ ์ค์ง CRI ์ธํฐํ์ด์ค์๋ง ์์กดํ๋ค.
- ์ค์ ๋ฐํ์ ํธ์ถ์ CRI์ ๊ตฌํ์ฒด์์ ์ํ
์: dockershim, cri-o, containerd ๋ฑ - ๋ฐํ์์ ๋ฐ๊ฟ๋ kubelet ์์ ์์ด CRI ๊ตฌํ์ฒด๋ง ๋ฐ๊พธ๋ฉด ๋๋ค.
3-4. k8s 1.24 ๋ฒ์
- K8s ๊ฐ ๊ณต์์ ์ผ๋ก dockershim ์ ์ ๊ฑฐํ๋ค.
- ๋์ Mirantis ๊ฐ docker ๋ฅผ ์ธ์ํ๊ณ cri-dockerd ๋ผ๋ ์ธ๋ถ ์ด๋ํฐ๋ฅผ ๋ง๋ค์ด์ docker ์ฐ๋์ ๊ณ์ ์ง์ํ๋ค.
⇒ ๋ฏธ๋ํฐ์ค ์ปจํ ์ด๋ ๋ฐํ์ - ์ด์ : docker ์ ์ ๊ธฐ๋ฅ์ด ์๊ธฐ๋ฉด k8s ๋ ๊ฐ์ด ํจ์น๋ฅผ ํด์ผ ํ๊ธฐ ๋๋ฌธ์
→ ์ปจํ ์ด๋ ๋ฐํ์์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค CRI ์ ๊ตฌํ์ฒด๋ ์์ ์ ํด์ผํจ - kubelet ์์ ์ปจํ ์ด๋ ๋ฐํ์์ผ๋ก ๋ฐ๋ก ๋ฐ์ ์ ์๋๋ก ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝ
- ์ด ๊ตฌ์กฐ๋ฅผ ์ง์ํ๊ธฐ ์ํด์ containerd ์ CRI-Plugin ๊ธฐ๋ฅ ์ถ๊ฐ
- cri-o ๋ ํ์๋ถํฐ redhat ์ด ๊ท๊ฒฉ์ ๋ง์ถฐ์ ๋ง๋ ๋ฐํ์
⇒ 1.27 ๋ฒ์ ์์ ์ด๊ฑธ ๊ธฐ๋ฐ์ผ๋ก POD ๋ฅผ ๋ง๋ ๋ค
'๐ฑ ์ธํ๋ฐ > โ ์ฟ ๋ฒ๋คํฐ์ค ์ด๋๋ ํด๋์ค (์ง์ํธ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
(5) Probe ์ดํดํ๊ธฐ (1) | 2025.06.02 |
---|---|
(4) Object ๊ทธ๋ ค๋ณด๋ฉฐ ์ดํดํ๊ธฐ (0) | 2025.05.30 |
(3) ์ค๋ฌด์์ ๋๊ปด ๋ณธ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ ๋ง ํธํ ์ด์ (0) | 2025.05.29 |
(2) ์ฟ ๋ฒ๋คํฐ์ค ๋ฌด๊ฒ๊ฐ ์๊ฒ ์ค์นํ๊ธฐ (0) | 2025.05.28 |
[๋ฏธ์ 1] ์ฟ ๋ฒ๋คํฐ์ค ์ค์น ๊ตฌ๊ฐ๋ณ ์ํ ํ์ธ (1) | 2025.05.28 |