๐ Kubernetes ๋ฐ์ ์ฌ: ๋ฌธ์ ํด๊ฒฐ ์ค์ฌ
์ปจํ ์ด๋ ๊ธฐ์ ๊ณผ Kubernetes์ ๋ฐ์ ์ ๋ฌธ์ ํด๊ฒฐ ๊ด์ ์์ ์ดํด๋ณด๋ฉด, ๊ฐ ๊ธฐ์ ์ด ์ด๋ค ํ์์ ์ํด ๋ฑ์ฅํ๋์ง ์์ฐ์ค๋ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค. ์ค์ ๋ฐ์ํ ๋ฌธ์ ๋ค๊ณผ ๊ทธ ํด๊ฒฐ ๊ณผ์ ์ ์ค์ฌ์ผ๋ก ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.

1๋จ๊ณ: ์๋ฒ ์์ ํ์ฉ์ ๋๋ ๋ง (2000๋ ๋ ์ด๋ฐ)
๐ด ๋ฌธ์ ์ํฉ
๊ฐ์ ๋จธ์ ์ ํ๊ณ
๊ฐ VM๋ง๋ค ์ ์ฒด ์ด์์ฒด์ ํ์ โ ๋ฉ๋ชจ๋ฆฌ, CPU ๋ญ๋น ์ฌ๊ฐ
ํ๋์ ๋ฌผ๋ฆฌ ์๋ฒ์ ๋ช ๊ฐ ์ ๋๋ VM๋ง ์คํ ๊ฐ๋ฅ
๋ถํ ์๊ฐ๋ ์ค๋ ๊ฑธ๋ฆฌ๊ณ ๊ด๋ฆฌ ๋ณต์ก
๋ฌผ๋ฆฌ ์๋ฒ ์ง์ ์ฌ์ฉ์ ๋ฌธ์
์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ฐ์ ์๋ฒ์์ ์คํ๋๋ฉด ์๋ก ๊ฐ์ญ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ถฉ๋, ํฌํธ ์ถฉ๋ ๋ฑ ๋ฌธ์ ๋น๋ฐ
์ฅ์ ๋ฐ์ ์ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ๊น์ง ์ํฅ
๐ข ํด๊ฒฐ์ฑ : ๋ฆฌ๋ ์ค ์ปค๋ ๊ฒฉ๋ฆฌ ๊ธฐ์ ๋ฐ์
ํต์ฌ ๊ธฐ์ ๋ค์ ๋ฑ์ฅ
chroot (1982๋ ): ํ์ผ ์์คํ ๊ฒฉ๋ฆฌ - "์ ํ๋ฆฌ์ผ์ด์ ๋ณ๋ก ๋ณด์ด๋ ํ์ผ ์์คํ ๋ถ๋ฆฌ"
namespace (2002๋ ): ํ๋ก์ธ์ค, ๋คํธ์ํฌ, ์ฌ์ฉ์ ๋ฑ ์์คํ ๋ฆฌ์์ค ๊ฒฉ๋ฆฌ
cgroup (2006๋ ): CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ I/O ๋ฑ ํ๋์จ์ด ์์ ์ ์ด ๋ฐ ๋ชจ๋ํฐ๋ง
์ด ๊ธฐ์ ๋ค์ด ํ๋ ์ปจํ ์ด๋์ ํ ๋๊ฐ ๋์์ง๋ง, ์ง์ ์ฌ์ฉํ๊ธฐ์ ๋๋ฌด ๋ณต์กํ์ต๋๋ค.
2๋จ๊ณ: ์ปค๋ ๊ธฐ์ ์ ๋ณต์ก์ฑ ๋ฌธ์ (2008๋ )
๐ด ๋ฌธ์ ์ํฉ
๊ฐ๋ฐ์์๊ฒ๋ ๋๋ฌด ์ด๋ ค์ด ๊ธฐ์
chroot, namespace, cgroup์ ์กฐํฉํด์ ์ฌ์ฉํ๋ ค๋ฉด ๋ฆฌ๋ ์ค ์ปค๋ ์ ๋ฌธ ์ง์ ํ์
๋งค๋ฒ ๋ณต์กํ ์ค์ ๊ณผ์ ๋ฐ๋ณต
๊ฐ์ ํ๊ฒฝ์ ๋ค๋ฅธ ์๋ฒ์ ์ฌํํ๊ธฐ ์ด๋ ค์
์ค์๋ก ์๋ชป ์ค์ ํ๋ฉด ๋ณด์ ์ทจ์ฝ์ ๋ฐ์ ๊ฐ๋ฅ
๐ข ํด๊ฒฐ์ฑ : LXC (Linux Containers) ๋ฑ์ฅ
"์ฌ์ด ์ปจํ ์ด๋"์ ์์
๋ณต์กํ ์ปค๋ ๊ธฐ์ ๋ค์ ๋ฌถ์ด์ ๊ฐ๋จํ ๋ช ๋ น์ด๋ก ์ ๊ณต
์ค์ ํ์ผ์ ํตํ ์ผ๊ด๋ ํ๊ฒฝ ๊ตฌ์ฑ
๊ฐ์ ๋จธ์ ๋ณด๋ค ๊ฐ๋ณ๊ณ , ๋ฌผ๋ฆฌ ์๋ฒ๋ณด๋ค ์์ ํ ์ค๊ฐ ์ง์ ์ ๊ณต
ํ์ง๋ง ์ฌ์ ํ ์์คํ ๊ด๋ฆฌ์ ์์ค์ ๊ธฐ์ ์ง์์ด ํ์ํ์ต๋๋ค.
3๋จ๊ณ: ๊ฐ๋ฐ์ ์นํ์ฑ ๋ถ์กฑ (2013๋ )
๐ด ๋ฌธ์ ์ํฉ
LXC์ ํ๊ณ
์ฌ์ ํ ์์คํ ๊ด๋ฆฌ์ ์ค์ฌ์ ๋๊ตฌ โ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ๊ธฐ ๋ณต์ก
์ปจํ ์ด๋ ์ด๋ฏธ์ง ๊ด๋ฆฌ ๊ธฐ๋ฅ ์์ โ "๋ด๊ฐ ๋ง๋ ํ๊ฒฝ์ ์ด๋ป๊ฒ ๊ณต์ ํ์ง?"
๋คํธ์ํน, ๋ก๊น , ์คํ ๋ฆฌ์ง ๊ด๋ฆฌ ๋ฑ ์ค์ ์๋น์ค ์ด์์ ํ์ํ ๊ธฐ๋ฅ ๋ถ์กฑ
๊ฐ ๋ฐฐํฌํ๋ง๋ค ๋ค๋ฅธ ์ค์ ๋ฐฉ์
๐ข ํด๊ฒฐ์ฑ : Docker์ ํ์ ์ ๋ฑ์ฅ
๊ฐ๋ฐ์ ๊ฒฝํ(DX) ํ์
์ด๊ธฐ(2013๋ ): LXC๋ฅผ ๋ฐฑ์๋๋ก ์ฌ์ฉํ๋ ์ฌ์ฉ์ ์นํ์ ์ธํฐํ์ด์ค ์ ๊ณต
2014๋ Docker 0.9: libcontainer ๋์ ์ผ๋ก LXC ์์กด์ฑ ์ ๊ฑฐ
ํตํฉ ๊ด๋ฆฌ ํ๋ซํผ:
์ง๊ด์ ์ธ CLI (
docker run,docker build)Docker Hub๋ฅผ ํตํ ์ด๋ฏธ์ง ๊ณต์
์๋ ๋ก๊ทธ ๊ด๋ฆฌ, ๋คํธ์ํฌ ์ค์
Dockerfile์ ํตํ ์ฌํ ๊ฐ๋ฅํ ํ๊ฒฝ ๊ตฌ์ฑ
Docker์ ์ฑ๊ณต ๋น๊ฒฐ์ ๋ณต์กํ ๊ธฐ์ ์ ๊ฐ๋ฐ์๊ฐ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ ๊ฒ์ด์์ต๋๋ค.
4๋จ๊ณ: ์ปจํ ์ด๋ ๊ด๋ฆฌ์ ๋ณต์ก์ฑ (2014๋ )
๐ด ๋ฌธ์ ์ํฉ
์ด์ ํ๊ฒฝ์ ํ์ค
์์ญ, ์๋ฐฑ ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ๊ฒ์ธ๊ฐ?
์ปจํ ์ด๋๊ฐ ์ฃฝ์ผ๋ฉด ๋๊ฐ ๋ค์ ์คํ์์ผ ์ฃผ๋?
ํธ๋ํฝ ์ฆ๊ฐ ์ ์ปจํ ์ด๋๋ฅผ ์๋์ผ๋ก ๋๋ฆฌ๋ ค๋ฉด?
์ฌ๋ฌ ์ปจํ ์ด๋ ๊ฐ ๋คํธ์ํฌ ํต์ ์ ์ด๋ป๊ฒ?
๋ก๋๋ฐธ๋ฐ์ฑ, ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋?
๐ข ํด๊ฒฐ์ฑ : Kubernetes ๋ฑ์ฅ
์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ ์์
Google์ ๋ด๋ถ ์์คํ Borg ๊ฒฝํ์ ๋ฐํ์ผ๋ก ๊ฐ๋ฐ
์ด๊ธฐ ์ํคํ ์ฒ (๋จ์ํจ):
kube-apiserver: ์ฌ์ฉ์ ์์ฒญ ์ฒ๋ฆฌ
kubelet: ๊ฐ ๋ ธ๋์์ ์ปจํ ์ด๋ ๊ด๋ฆฌ
์ง์ ํตํฉ: kubelet โ Docker API ์ง์ ํธ์ถ
๋น์์๋ Docker๊ฐ ๊ฑฐ์ ์ ์ผํ ์ปจํ ์ด๋ ๋ฐํ์์ด์๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ๋จ์ํ ๊ตฌ์กฐ๋ก๋ ์ถฉ๋ถํ์ต๋๋ค.
5๋จ๊ณ: ๋ฐํ์ ์ํ๊ณ์ ๋ค์ํ (2016๋ )
๐ด ๋ฌธ์ ์ํฉ
๋จ์ผ ๋ฐํ์ ์์กด์ ์ํ์ฑ
Docker์๋ง ์์กดํ๋ ๊ตฌ์กฐ์ ๋ฆฌ์คํฌ
CoreOS rkt, Intel Clear Containers ๋ฑ ๋์ ๋ฐํ์ ๋ฑ์ฅ
๊ฐ ๋ฐํ์๋ง๋ค ์ฅ๋จ์ ์ด ๋ค๋ฆ (๋ณด์, ์ฑ๋ฅ, ๊ธฐ๋ฅ ๋ฑ)
ํ์ง๋ง Kubernetes๋ Docker์๋ง ์ฐ๊ฒฐ ๊ฐ๋ฅ โ ์๋ก์ด ๋ฐํ์ ์ถ๊ฐํ ๋๋ง๋ค kubelet ์ฝ๋ ์์ ํ์
๐ข ํด๊ฒฐ์ฑ 1: Docker ๋ด๋ถ ๊ตฌ์กฐ ๊ฐ์
containerd ํ๋ก์ ํธ ์์
2016๋ 4์ Docker 1.11: ๋ด๋ถ์ ์ผ๋ก containerd ์ฌ์ฉ ์์
2016๋ 12์: containerd๋ฅผ ๋ ๋ฆฝ ์คํ์์ค ํ๋ก์ ํธ๋ก ๊ณต๊ฐ
๊ตฌ์กฐ ๋ณ๊ฒฝ: Docker Engine = dockerd โ containerd โ runc
containerd๊ฐ ์ค์ ์ปจํ ์ด๋ ๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ ๋ด๋น
๐ข ํด๊ฒฐ์ฑ 2: CRI(Container Runtime Interface) ๋์
Kubernetes 1.5 (2016๋ 12์)
ํ์ค ์ธํฐํ์ด์ค ์ ์: kubelet๊ณผ ๋ฐํ์ ๊ฐ์ ํต์ ๊ท์ฝ ํ์คํ
ํ๋ฌ๊ทธ์ธ ์ํคํ ์ฒ: ์๋ก์ด ๋ฐํ์ ์ถ๊ฐ ์ kubelet ์ฝ๋ ์์ ๋ถํ์
ํ์ฅ์ฑ ํ๋ณด: ๋ฐํ์ ๋ฒค๋๊ฐ CRI ๊ตฌํ์ฒด๋ง ์ ๊ณตํ๋ฉด ๋จ
ํ์ง๋ง ๋ฌธ์ ๋ฐ์: Docker๋ CRI๋ฅผ ์ง์ ์ง์ํ์ง ์์ โ Kubernetes๊ฐ dockershim ์์ ์ด๋ํฐ ๊ฐ๋ฐ
6๋จ๊ณ: ํ์คํ์ ํ์์ฑ (2015-2017๋ )
๐ด ๋ฌธ์ ์ํฉ
๋ฐํ์ ๊ฐ ํธํ์ฑ ๋ถ์ฌ
Docker, rkt, containerd ๋ฑ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋์
์ปจํ ์ด๋ ์ด๋ฏธ์ง ํฌ๋งท์ด ๋ฐํ์๋ง๋ค ๋ค๋ฆ
A ๋ฐํ์์์ ๋ง๋ ์ด๋ฏธ์ง๊ฐ B ๋ฐํ์์์ ์คํ ์ ๋๋ ๊ฒฝ์ฐ ๋ฐ์
๋ฒค๋ ๋ฝ์ธ(vendor lock-in) ์ํ์ฑ
๐ข ํด๊ฒฐ์ฑ : OCI(Open Container Initiative) ํ์ค ์ ์
2015๋ 6์ OCI ์ค๋ฆฝ
Docker์ CoreOS(rkt ๊ฐ๋ฐ์ฌ)๊ฐ ์ฃผ๋
๋ชฉํ: ์ปจํ ์ด๋ ๋ฐํ์๊ณผ ์ด๋ฏธ์ง ํฌ๋งท ํ์คํ
๊ฒฐ๊ณผ: ๋ฐํ์ ๊ฐ ์ํธ ํธํ์ฑ ๋ณด์ฅ
runc ๊ฐ๋ฐ (2015๋ )
OCI ํ์ค์ ๊ตฌํํ ๋ก์ฐ๋ ๋ฒจ ๋ฐํ์
Docker์ libcontainer๋ฅผ OCI ํ์ค์ ๋ง๊ฒ ์ฌ์์ฑ
containerd๊ฐ libcontainer ๋์ runc ์ฌ์ฉ์ผ๋ก ๋ณ๊ฒฝ
7๋จ๊ณ: dockershim์ ๊ด๋ฆฌ ๋ถ๋ด (2018-2020๋ )
๐ด ๋ฌธ์ ์ํฉ
์์๋ฐฉํธ์ ํ๊ณ
dockershim์ ์๋ "์์" ํด๊ฒฐ์ฑ ์ด์๋๋ฐ ๊ณ์ ์ฌ์ฉ๋จ
Docker๊ฐ CRI๋ฅผ ์ง์ ์ง์ํ์ง ์์์ Kubernetes ํ์ด ์ด์ฉ ์ ์์ด ์ ์ง๋ณด์
๋ณต์กํ ํธ์ถ ์ฒด์ธ: kubelet โ dockershim โ Docker API โ containerd โ runc
Kubernetes ํ์๊ฒ Docker ๊ด๋ จ ๋ฒ๊ทธ๊น์ง ๋ ์๊ธฐ๋ ๋ถ๋ด
์ฑ๋ฅ ์ค๋ฒํค๋์ ์ํคํ ์ฒ ๋ณต์ก์ฑ
๐ข ํด๊ฒฐ์ฑ : Docker ์ง์ ์ค๋จ ๊ฒฐ์
2020๋ 12์ Kubernetes 1.20์์ dockershim deprecated ์ ์ธ
"Kubernetes 1.24์์ dockershim ์ ๊ฑฐ ์์ "
2๋ ๊ฐ์ ๋ง์ด๊ทธ๋ ์ด์ ๊ธฐ๊ฐ ์ ๊ณต
containerd, CRI-O ๋ฑ ๋์ ๋ฐํ์ ๊ถ์ฅ
ํ์ง๋ง ์ฌ์ฉ์ ์ปค๋ฎค๋ํฐ์์ ํฐ ์ฐ๋ ค ํ์ถ - ๋ง์ ๊ธฐ์ ์ด Docker ๊ธฐ๋ฐ์ผ๋ก ์์คํ ๊ตฌ์ถํ๊ธฐ ๋๋ฌธ
8๋จ๊ณ: ์ปค๋ฎค๋ํฐ์ ๋์ ์ ์ (2021-2022๋ )
๐ด ๋ฌธ์ ์ํฉ
ํ์ค์ ์ธ ๋ง์ด๊ทธ๋ ์ด์ ์ด๋ ค์
์๋ง์ ๊ธฐ์ ๋ค์ด Docker ๊ธฐ๋ฐ์ผ๋ก ์ด์ ์ค
containerd๋ก ์ ํํ๋ ๋ฐ ์๊ฐ๊ณผ ๋น์ฉ ํ์
๊ฐ๋ฐ์๋ค์ Docker ๋๊ตฌ ์น์๋
๊ธฐ์กด CI/CD ํ์ดํ๋ผ์ธ์ Docker ์์กด์ฑ
๐ข ํด๊ฒฐ์ฑ : cri-dockerd ํ๋ก์ ํธ
Mirantis์ ์ปค๋ฎค๋ํฐ ํ๋ ฅ
dockershim์ Kubernetes์์ ๋ถ๋ฆฌํ์ฌ ๋ ๋ฆฝ ํ๋ก์ ํธ๋ก ๊ฐ๋ฐ
cri-dockerd: Docker๋ฅผ CRI ํธํ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ์ด๋ํฐ
์คํ์์ค๋ก ์ ๊ณตํ์ฌ Docker ์ฌ์ฉ ์ง์ ๊ฐ๋ฅ
๊ฒฐ๊ณผ: ์ฌ์ฉ์๋ค์ด ์์ ์ ์ผ์ ์ ๋ง์ถฐ ์ ์ง์ ์ผ๋ก ์ ํํ ์ ์๊ฒ ๋จ
9๋จ๊ณ: ์ต์ ํ๋ ๊ตฌ์กฐ๋ก์ ์งํ (2019-ํ์ฌ)
๐ด ๋ฌธ์ ์ํฉ
์ฌ์ ํ ๋นํจ์จ์ ์ธ ๊ตฌ์กฐ
Docker ์ฌ์ฉ ์: kubelet โ cri-dockerd โ Docker โ containerd โ runc
๋ถํ์ํ ์ค๊ฐ ๊ณ์ธต๋ค๋ก ์ธํ ์ฑ๋ฅ ์ค๋ฒํค๋
๋ณต์กํ ์์กด์ฑ ์ฒด์ธ
์ค์ ๋ก๋ containerd๋ง ์์ผ๋ฉด ์ถฉ๋ถํ ์ํฉ
๐ข ํด๊ฒฐ์ฑ : ์ง์ ์ฐ๊ฒฐ ์ํคํ ์ฒ
containerd์ CRI ํ๋ฌ๊ทธ์ธ ๊ฐ๋ฐ
containerd์์ CRI ์ธํฐํ์ด์ค ์ง์ ์ง์
๋จ์ํ๋ ๊ตฌ์กฐ: kubelet โ containerd โ runc
์ค๊ฐ ๊ณ์ธต ์ ๊ฑฐ๋ก ์ฑ๋ฅ ํฅ์ ๋ฐ ์์ ์ฑ ๊ฐ์
ํ์ฌ ๊ถ์ฅ ์ํคํ ์ฒ
Kubernetes 1.24๋ถํฐ dockershim ์์ ์ ๊ฑฐ
containerd๊ฐ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐํ์
CRI-O, Firecracker ๋ฑ ๋ค์ํ ์ ํ์ง ์ ๊ณต
๐ฏ ํ์ฌ ์ํฉ ์ ๋ฆฌ (2025๋ )
๐ ๋ฐํ์ ์ ํ์ง
๋ฐํ์ํน์ง์ฃผ ์ฌ์ฉ์ฒcontainerd๊ฐ์ฅ ์ผ๋ฐ์ , ์์ ์ ๋๋ถ๋ถ์ Kubernetes ํด๋ฌ์คํฐCRI-ORed Hat ์ฃผ๋, OCI ํธํOpenShift, ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝDocker + cri-dockerd๋ ๊ฑฐ์ ์ง์๊ธฐ์กด Docker ๊ธฐ๋ฐ ์์คํ
๐ ํ์ฌ ์ํคํ ์ฒ ๊ณ์ธต
Kubernetes (kubelet)
โ CRI
High-level Runtime (containerd, CRI-O)
โ OCI
Low-level Runtime (runc, firecracker)
โ
Linux Kernel (cgroup, namespace, chroot)๐ ๋ฐ์ ๊ณผ์ ์ ํจํด
์ ์ฒด ๋ฐ์ ๊ณผ์ ์ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ํจํด์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค:
๋ณต์กํจ โ ๋จ์ํจ: ์ด๋ ค์ด ๊ธฐ์ ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๊ฐ์
๋จ์ผ ์ ํ โ ๋ค์ํ ์ ํ: ํ ๊ฐ์ง ์๋ฃจ์ ์์ ์ฌ๋ฌ ๋์์ผ๋ก ํ์ฅ
ํ์คํ: ํผ์ฌ๋ ๊ธฐ์ ๋ค์ ํต์ผ๋ ๊ท์ฝ์ผ๋ก ์ ๋ฆฌ
์ต์ ํ: ๋ถํ์ํ ๋ณต์ก์ฑ ์ ๊ฑฐํ๊ณ ์ฑ๋ฅ ๊ฐ์
๊ฐ ๋จ๊ณ์ ๋ณํ๋ ๋ชจ๋ ์ค์ ์ฌ์ฉ์๋ค์ด ๊ฒช์ ๊ตฌ์ฒด์ ์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ํ์ฐ์ ์งํ์์ต๋๋ค. ๊ธฐ์ ์ ์๋ฒฝํจ๋ณด๋ค๋ ์ค์ฉ์ฑ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ์ฐ์ ์ํ ๊ฒฐ๊ณผ๊ฐ ํ์ฌ์ ์ฑ์ํ ์ปจํ ์ด๋ ์ํ๊ณ๋ฅผ ๋ง๋ค์ด๋์ต๋๋ค.
ํ์ฌ์ ์ํคํ ์ฒ๋ ์ด๋ฌํ ์ํ์ฐฉ์ค๋ฅผ ํตํด ์์ฑ๋ ์์ ์ ์ธ ๊ตฌ์กฐ๋ก, ์์ผ๋ก๋ ์ปจํ ์ด๋ ๊ธฐ์ ๋ฐ์ ์ ๊ฒฌ๊ณ ํ ๊ธฐ๋ฐ์ด ๋ ๊ฒ์ ๋๋ค.
๋ต๋ณ 0





