
์ต๊ทผ Kubernetes ํ๊ฒฝ์์ Docker ๋์ Podman์ ์ฌ์ฉํ๋ ์ฌ๋ก๊ฐ ๋์ด๋๊ณ ์๋ค. ์ด๋ ๋จ์ํ ํธ๋ ๋๊ฐ ์๋๋ผ, Kubernetes์ ๊ตฌ์กฐ์ ๋ณํ์ ์ด์ ํจ์จ์ฑ์ ๋ํ ๊น์ ๊ณ ๋ฏผ์ด ๋ฐ์๋ ๊ฒฐ๊ณผ๋ค. (Docker์ ๋ถ๋ถ ์ ๋ฃํ๋ ..! ๐ธ)
์ด ๊ธ์์๋ Docker๊ฐ Kubernetes์์ ์ ์ธ๋ ์ด์ , Podman์ ๊ตฌ์กฐ์ ์ฅ์ , ๊ทธ๋ฆฌ๊ณ ๋ ๋๊ตฌ์ ์ฒ ํ์ ์ฐจ์ด์ ์ค๋ฌด์ ํ์ฉ ์ฐจ์ด๋ฅผ ์ค๋ช
ํ๋ค.
Kubernetes๋ 1.20๋ถํฐ Docker ์ง์ ์ข
๋ฃ ์์ ์ ๋ฐํํ๊ณ , 1.24๋ถํฐ๋ ๊ณต์์ ์ผ๋ก Docker ๋ฐํ์์ ์ ๊ฑฐํ๋ค. ์ด ๊ฒฐ์ ์ ๋ง์ ์ฌ๋๋ค์๊ฒ ์ถฉ๊ฒฉ์ด์์ง๋ง, ๊ธฐ์ ์ ์ผ๋ก๋ ๋งค์ฐ ํ๋นํ ๋ณํ์๋ค.
dockershim์ ์ ๊ฑฐํ๊ธฐ๋ก ๊ฒฐ์ ํ ๊ฒ.์์ฝ : Docker ์์ฒด๊ฐ ์ซ์ด์๊ฐ ์๋๋ผ, ๋นํ์ค ์ค๊ฐ ๊ณ์ธต์ ์ ๊ฑฐํ๊ธฐ ์ํด์ Docker ๋ฐํ์์ ์ ์ธํ ๊ฒ์ด๋ค.
| ๋ฐํ์ | ํน์ง |
|---|---|
| containerd | Docker์์ ๋ถ๋ฆฌ๋ ํต์ฌ ๋ฐํ์. ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋จ |
| CRI-O | OpenShift, Red Hat ๊ธฐ๋ฐ์์ ์ฑํํ ๊ฒฝ๋ ๋ฐํ์ |
| Podman | Daemonless, Rootless, CLI ๊ธฐ๋ฐ. ๊ฐ๋ฐ ํ๊ฒฝ์์ ๊ฐ๋ ฅ |
Kubernetes ํด๋ฌ์คํฐ์์๋ ๋๋ถ๋ถ containerd ๋๋ CRI-O๋ฅผ ์ฌ์ฉํ๋ค. ํ์ง๋ง ๊ฐ๋ฐ๊ณผ ์ด์์ ์ค๊ฐ ๋จ๊ณ์์ Podman์ด ๋งค์ฐ ๊ฐ๋ ฅํ ๋๊ตฌ๋ก ์๋ฆฌ ์ก๊ณ ์๋ค.
Docker๋ ๋ฐ๋ชฌ(dockerd)์๊ฒ REST API๋ก ๋ช ๋ น์ ์์ํ๋ ๋ฐฉ์์ด๊ณ ,
Podman์ CLI์์ ์ง์ ๋ช ๋ น์ ์ํํ๋ ๋ฐฉ์์ด๋ค.
| ํญ๋ชฉ | Docker | Podman |
|---|---|---|
| ๊ตฌ์กฐ | Client โ dockerd (daemon) | ๋จ์ผ ์คํ ํ๋ก์ธ์ค (daemonless) |
| ์คํ ๋ฐฉ์ | REST API๋ก ๋ฐ๋ชฌ์๊ฒ ์์ | ๋ช
๋ น์ด๊ฐ ๋ฐ๋ก runc ํธ์ถ |
| ๋ฐ๋ชฌ ํ์ ์ฌ๋ถ | โ ํ์ | โ ํ์ ์์ |
| rootless ์ง์ | โ ๊ธฐ๋ณธ root ๋ฐ๋ชฌ ์ฌ์ฉ | โ ์ผ๋ฐ ์ฌ์ฉ์๋ก๋ ์คํ ๊ฐ๋ฅ |
| ์ํ ๊ด๋ฆฌ ๋ฐฉ์ | ๋ฐ๋ชฌ ๋ฉ๋ชจ๋ฆฌ์ ์ํ ์ ์ฅ | ํ์ผ ๊ธฐ๋ฐ ์ํ ์ ์ฅ (/var/lib/...) |
| ๋ณด์ ์ธก๋ฉด | ๋ฐ๋ชฌ์ด root ๊ถํ์ ์๊ตฌ | ๋ณด์ ์ฐ์ (์ฌ์ฉ์ ๊ถํ ๊ฒฉ๋ฆฌ) |
| ์ปจํ ์ด๋ ์คํ ๋ฐฉ์ | docker run โ ๋ฐ๋ชฌ์ด ์คํ | podman run โ ์ง์ ์คํ |
dockerd์ ์ ๋ฌ๋๋ค.dockerd๋ ์ด๋ฏธ์ง ๊ด๋ฆฌ, ์ปจํ
์ด๋ ์์ฑ/์ค์ง, ์ํ ์ถ์ , ๋คํธ์ํฌ ์ค์ ๋ฑ์ ์ด๊ดํ๋ค.dockerd๊ฐ ์ฃฝ์ผ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ํํด์ง๋ค.๋ฐ๋ชฌ์ด ์์ง๋ง, ๋ ์์ ํ๊ณ ์ ์ฐํ ๊ตฌ์กฐ๋ก ์คํ์ด ๊ฐ๋ฅํ๋ค.
Podman์ ๋ค์ ๋ฐฉ์์ผ๋ก ๋ฐ๋๋ฝ์ด๋ ๋ฆฌ์์ค ์ถฉ๋ ์์ด ๋์ํ๋ค:
containers/storage)podman generate systemd, podman play kube๋ก ๋ณต๊ตฌ ๊ฐ๋ฅ๐ Podman์ daemon์ด ์์ด๋ ์์ ์ฑ๊ณผ ๋์์ฑ ์ ์ด๋ฅผ ์๋ฒฝํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ๊ตฌ์กฐ๋ค.
โ Kubernetes์์ Podman์ ๋ฐํ์์ผ๋ก ์ง์ ์ฐ๋๊ฐ?
โ ์๋์, Kubernetes๋containerd๋๋CRI-O๋ง ์ฌ์ฉํ๋ค.
๊ทธ๋ฌ๋ Podman์ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก Kubernetes์ ๋งค์ฐ ์ ํตํฉ๋๋ค:
podman build โ OCI ํธํ ์ด๋ฏธ์ง ์์ฑ โ ECR ๋ฑ์ ํธ์ โ Kubernetes์์ ๊ทธ๋๋ก ์ฌ์ฉpodman generate kube โ Kubernetes YAML ์๋ ์์ฑpodman play kube โ ๋ก์ปฌ์์ K8s ๋ฐฐํฌ ํ
์คํธGithub Action์ ์ฌ์ฉํ๋ค๋ฉด, .github/workflows/ ๋๋ ํ ๋ฆฌ ์๋์ yamlํ์ผ์ docker์ ๋์ ํ์ฌ podman์ผ๋ก ๋น๋ํ๊ณ ํธ์ํ๋๋ก ํ๋ฉด ๋๋ค.
Kubernetes์์ Docker๋ ์ฌ๋ผ์ก์ง๋ง, ์ปจํ
์ด๋์ ์๋๋ ๋๋์ง ์์๋ค.
Podman์ Docker์ ๋ค๋ฅผ ์ด์ ์ฐจ์ธ๋ ๊ฐ๋ฐ/์ด์ ๋๊ตฌ๋ก์ ์ ์ ๋ ๋ง์ ๊ด์ฌ์ ๋ฐ๊ณ ์์ผ๋ฉฐ, ํนํ ๋ณด์์ฑ, ์ ์ฐ์ฑ, ํ์ค ํธํ์ฑ ์ธก๋ฉด์์ ๊ฐ๋ ฅํ ๋์์ด ๋๊ณ ์๋ค.
โผ๏ธ์ด์ ์ปจํ ์ด๋์ ๋ฏธ๋๋, ๋ฐ๋ชฌ์ด ์๋ ์ธ์์์ ๋์ฑ ๋น ๋ฅด๊ณ ์์ ํ๊ฒ ์งํํ๊ณ ์๋ค.
๐ ์ฐธ๊ณ
์ปจํ ์ด๋๋ฅผ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๊ฒ ๋ง๋ค์ด์ฃผ๋ ์ปจํ ์ด๋ ํ๋ซํผ์ ์ง์ ์
docker run, docker build ๋ฑ)๋ฅผ ์ฒ๋ฆฌํ๋ ์ ์ฒด ์์คํ
containerd์ runC๊ฐ ์ํ๐ ์ฆ, Docker Engine์ ์ปจํ ์ด๋ ํ๋ซํผ์ ํ๋ก ํธ์๋ ์ญํ ์ด๋ค.
Docker์ ๋ฐ๋ชฌ ํ๋ก์ธ์ค
docker CLI๊ฐ ๋ช
๋ น์ ๋ด๋ฆฌ๋ฉด, dockerd๊ฐ ์ด๋ฅผ ๋ฐ์ ์คํ๐ dockerd๋ Docker ์์คํ
์ ์งํ์๋ก, ์คํ ํ๋ฆ์ ์กฐ์จํ๋ค.
์ปจํ ์ด๋์ ์คํ์ ์ฑ ์์ง๋ ๊ณ ์ฑ๋ฅ ๋ฐํ์ ๊ด๋ฆฌ์
๐ containerd๋ ์ปจํ
์ด๋ ์คํ์ ์ํ ํต์ฌ ์คํ ๊ด๋ฆฌ์์ด๋ค.
์ปจํ ์ด๋๋ฅผ ์ค์ ๋ก ์คํํ๋ ๋ฆฌ๋ ์ค ํ๋ก๊ทธ๋จ
๐ runC๋ ๋ฐฐ์ฐ๊ฐ ๋ฌด๋์ ์ค๋ฅด๋ ๊ฒ์ฒ๋ผ ์ปจํ
์ด๋ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ์ฃผ์ฒด๋ค.
Kubernetes ์ ์ฉ ์ปจํ ์ด๋ ๋ฐํ์
runC๋ฅผ ์ฌ์ฉ๐ CRI-O๋ Kubernetes ์ ์ฉ์ ๊ฐ๋ณ๊ณ ํจ์จ์ ์ธ ๋ฐํ์ ๋์ฒด์
์ปจํ ์ด๋ ๊ฐ ๊ฒฉ๋ฆฌ๋ฅผ ๊ตฌํํ๋ ๋ฆฌ๋ ์ค ์ปค๋ ๊ธฐ์
pid: ํ๋ก์ธ์ค ๋ฒํธ ๋ถ๋ฆฌnet: ๋คํธ์ํฌ ์ธํฐํ์ด์ค ๊ฒฉ๋ฆฌmnt: ํ์ผ์์คํ
๋ง์ดํธ ๊ฒฉ๋ฆฌuts: ํธ์คํธ๋ช
๊ฒฉ๋ฆฌipc: ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ฒฉ๋ฆฌuser: ์ฌ์ฉ์/๊ถํ ๊ฒฉ๋ฆฌ๐ namespace๋ ์ปจํ
์ด๋๋ผ๋ฆฌ ์๋ก ๋ค๋ฅธ ์ฐ์ฃผ์ ์ด๊ฒ ํด์ฃผ๋ ๊ธฐ์
์ปจํ ์ด๋ ๋ฆฌ์์ค๋ฅผ ์ ํยท๊ด๋ฆฌํ๋ ๋ฆฌ๋ ์ค ์ปค๋ ๊ธฐ์
cgroup์ ๊ฐ ์ปจํ
์ด๋์ ์ผ๋ง๋งํผ์ ํ์๋ฅผ ์ธ ์ ์๋์ง ์ ํด์ฃผ๋ ์์ ๋ฒจํธ