๐ ์์ฝ
SUMMARY
ํด๋ฌ์คํฐ์ CRI๋ฅผ Docker์์ containerd๋ก ๋ฐ๊ฟจ๋ค. Docker๋ ์ฟ ๋ฒ๋คํฐ์ค์ ์ง์ ๋ง์ ๋ชป ํด cri-dockerd๋ผ๋ ์ด๋ํฐ๋ฅผ ํ ๊ฒน ๊ฑฐ์ณ์ผ ํ๋๋ฐ, ๊ทธ ๋ ์ด์ด๋ฅผ ๊ฑท์ด๋ด๋ ๊ตฌ์กฐ๊ฐ ๋จ์ํด์ง๊ณ ๋ผ์ด์ ์ค ๊ฑฑ์ ๋ ์ฌ๋ผ์ก๋ค.
๐ก ๊ฐ์
ํด๋ฌ์คํฐ๋ฅผ ์ธ์ฐ๋ฉด์ ์ปจํ ์ด๋ ๋ฐํ์ ์ธํฐํ์ด์ค(Container Runtime Interface, CRI)๋ฅผ ์ ํด์ผ ํ๋ค. ์ฒ์์ ๊ฐ๋ฐํ์ด Docker์ ์ต์ํ๋ค๋ ์ด์ ๋ก Docker๋ฅผ ๋ถ์ก๊ณ ์์๋๋ฐ, ์ด์ ๊ฒฝํ์ด ์์ด๋ฉด์ containerd๋ก ๋์ด๊ฐ๋ ๊ฒ ๋ง๋ค๋ ๊ฒฐ๋ก ์ ์ด๋ฅด๋ ๋ค.
INFO
CRI๋ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ฌ๋ฌ ์ปจํ ์ด๋ ๋ฐํ์๊ณผ ํต์ ํ๊ธฐ ์ํ ํ์ค ์ธํฐํ์ด์ค๋ค. kubelet์ด ์ปจํ ์ด๋๋ฅผ ๋ง๋ค๊ณ ์์ํ๊ณ ๋ฉ์ถ ๋ ์ด ์ธํฐํ์ด์ค๋ฅผ ์ด๋ค.
๐ ์ ์ ๋ฐฐ๊ฒฝ
์์ ํด๋ฌ์คํฐ์์๋ ๊ฐ๋ฐ์๋ค์ ์ฟ ๋ฒ๋คํฐ์ค ๊ฒฝํ์ด ์์, ๋น ๋ฅธ ๊ฐ๋ฐ์ ํ๊ณ๋ก ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ๊ด๋ฆฌํ์ง ์๋ Docker ์ปจํ ์ด๋๋ฅผ ์ง์ ๋์ ์ฐ๊ณค ํ๋ค. ๊ณต์ ๋ฌธ์๊ฐ ๊ถ์ฅํ์ง ์๋ ๋ฐฉ์์ธ ๊ฑด ์์์ง๋ง, ๊ทธ๋ ์๋๊ฐ ๋จผ์ ์๋ค.
๋ฌธ์ ๋ CLI์๋ค. containerd๋ก ๊ฐ๋ฉด ๊ฐ๋ฐ์๋ค์ด ์ต์ํ docker ๋ช
๋ น์ด ๋์ nerdctl์ ์จ์ผ ํ๋๋ฐ, ๊ทธ ํผ๋์ด ๊ฑฑ์ ๋ผ CRI๋ก Docker๋ฅผ ์ธ๋ฉฐ ๊ฒจ์ ๋จน๊ธฐ๋ก ๋ถ๋ค๊ณ ์์๋ค. ๊ทธ๋ฐ๋ฐ ์ด์์ ํ๋ค ๋ณด๋ ๋ถ๋ค๊ณ ์์ ์ด์ ๋ณด๋ค ๋์์ผ ํ ์ด์ ๊ฐ ๋ ์์๋ค.
- Docker๋ CRI๋ฅผ ์ง์ ์ง์ํ์ง ์์, cri-dockerd๋ผ๋ ์ด๋ํฐ๋ฅผ ๋ณ๋๋ก ๊ฑฐ์ณ์ผ ํ๋ค.
- ๊ทธ ์ค๊ฐ ๋จ๊ณ ๋๋ฌธ์ containerd ๋๋น ๋ถํ์ํ ์ฑ๋ฅ ์ค๋ฒํค๋(Overhead)๊ฐ ์๊ธด๋ค.
- ์ฟ ๋ฒ๋คํฐ์ค๋, Kubespray๋ containerd๋ฅผ ํ์ค์ผ๋ก ๋ฏธ๋ ์ถ์ธ๋ค.
- Docker Desktop ๋ผ์ด์ ์ค ์ด์๋ ๋ง์ ํ์ผ ์ ๊ฑธ๋ ธ๋ค.
๐ ๋น๊ต
| ๊ตฌ๋ถ | Docker + cri-dockerd | containerd |
|---|---|---|
| ์ํคํ ์ฒ | kubelet โ cri-dockerd โ dockerd โ containerd โ runc | kubelet โ containerd โ runc |
| ์ฑ๋ฅ | ์ถ๊ฐ ๋ ์ด์ด๋ก ์ธํ ์ค๋ฒํค๋ | ์ง์ ํต์ ์ผ๋ก ์ต์ ํ |
| ํ์ค ์ง์ | ๋นํ์ค, ๋ณ๋ ์ด๋ํฐ ํ์ | ์ฟ ๋ฒ๋คํฐ์ค ํ์ค CRI ์ง์ |
| ์ ์ง๋ณด์ | cri-dockerd ์ถ๊ฐ ๊ด๋ฆฌ ํ์ | ๊ตฌ์กฐ๊ฐ ๋จ์ํด ๊ด๋ฆฌ ์ฉ์ด |
| CLI | docker ๋ช
๋ น์ด | nerdctl (docker ํธํ) |
| ๋ผ์ด์ ์ค | Docker Desktop ๋ผ์ด์ ์ค ๊ณ ๋ ค ํ์ | Apache 2.0 |
| ์ปค๋ฎค๋ํฐ | ๋ ๊ฑฐ์ ์ง์ | ํ๋ฐํ ๊ฐ๋ฐ๊ณผ ์ง์ |
ํ์ ์ํคํ
์ฒ ํ ์ค์ด ์ฌ์ค์ ๊ฒฐ๋ก ์ด๋ค. Docker๋ฅผ ์ฐ๋ฉด kubelet๋ถํฐ ์ปจํ
์ด๋๊น์ง ๋ค ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋๋ฐ, containerd๋ ๊ทธ๊ฑธ ๋ ๋จ๊ณ๋ก ์ค์ธ๋ค. ๋ถ์ก๊ณ ์์ ๋ช
๋ถ์ด๋ CLI ๋ฌธ์ ๋, ์๊ณ ๋ณด๋ nerdctl์ด docker ๋ช
๋ น์ด์ ๊ฑฐ์ ๊ทธ๋๋ก ํธํ๋ผ ์๊ฐ๋งํผ ํฐ ๋ฒฝ์ด ์๋์๋ค.
โ ์ ์ ์ฌ์
containerd๋ก ์ ํ๋ค. ์ด์ ๋ฅผ ์ถ๋ฆฌ๋ฉด ์ด๋ ๋ค.
1. ์ํคํ ์ฒ ๋จ์ํ
Docker ๊ธฐ๋ฐ์์ kubelet์ด ์ปจํ ์ด๋์ ๋ฟ๊ธฐ๊น์ง๋ ์ฌ๋ฌ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ค.
kubelet โ cri-dockerd โ dockerd โ containerd โ runc
containerd๋ฅผ ์ง์ ์ฐ๋ฉด ์ด ์ค๊ฐ์ด ์ฌ๋ผ์ง๋ค.
kubelet โ containerd โ runc
2. ์ฟ ๋ฒ๋คํฐ์ค ํ์ค ์ค์
์ฟ ๋ฒ๋คํฐ์ค 1.24๋ถํฐ ๋ด์ฅ dockershim์ด ์ ๊ฑฐ๋๋ฉด์, Docker๋ฅผ CRI๋ก ์ฐ๋ ค๋ฉด cri-dockerd๋ฅผ ๋ฐ๋ก ์น์ด์ผ ํ๋ ์ฒ์ง๊ฐ ๋๋ค. ๋ฐ๋๋ก containerd๋ ๊ธฐ๋ณธ ๋ฐํ์์ผ๋ก ์๋ฆฌ ์ก์๊ณ , Kubespray ๊ฐ์ ๋ฐฐํฌ ๋๊ตฌ๋ containerd๋ฅผ ํ์ค์ผ๋ก ์ด๋ค. ํ๋ฆ์ ๊ฑฐ์ค๋ฅผ ์ด์ ๊ฐ ์์๋ค.
3. ์ฑ๋ฅ
๋ถํ์ํ ์ค๊ฐ ๋ ์ด์ด๋ฅผ ๊ฑท์ด๋ด๋ ์ปจํ ์ด๋ ์์ ์๊ฐ๊ณผ ๋ฆฌ์์ค ์ฌ์ฉ๋์ด ๋์์ก๋ค. ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ์ด ์ฐจ์ด๊ฐ ๋ ๋์ ๋์๋ค.
IMPORTANT
์ด๋ฐ์ ์ ์ผ ๊ฑฑ์ ํ๋ CLI ๋ณ๊ฒฝ ํผ๋์ ๊ฑฐ์ ์์๋ค.
nerdctl์ดdocker๋ช ๋ น์ด๋ฅผ ์๋ ์ ํ๋ด ๋ด ์ค ๋์ด๋ค. ๋ถ์ก๊ณ ์๋ ์ด์ ๊ฐ ๋ง์ ๋์ด์ ๋ณด๋ ๋ณ๊ฒ ์๋์๋ ์ ์ด๋ค.