๋์ปค๋ ์ด์ ์ฟ ๋ฒ๋คํฐ์ค์์ ์ ์ธ๋์ต๋๋ค โ ๊ทธ ์๋ฏธ์ ๋น์ ์ด ์ค๋นํด์ผ ํ ๊ฒ๋ค์ ์์๋ณด์ธ์.
์๋ ๊ฐ Docker์ Kubernetes๋ ์ปจํ ์ด๋ ์ธ๊ณ์ ๋ํ์ ์ธ ๋์ค์์ต๋๋ค. ํํ ๋ฆฌ์ผ, ๋ถํธ์บ ํ, DevOps ํ์ดํ๋ผ์ธ ์ด๋์์๋ ๋์ ๋ผ๋ ค์ผ ๋ ์ ์๋ ์กด์ฌ์์ฃ .
๊ทธ๋ฌ๋ ๋ง์ ์ฌ๋๋ค์ ๋๋ผ๊ฒ ํ ๋ณํ๊ฐ ์์์ต๋๋ค. Kubernetes๋ 1.20 ๋ฒ์ ๋ถํฐ Docker๋ฅผ ์ปจํ ์ด๋ ๋ฐํ์์ผ๋ก ๋ ์ด์ ๊ถ์ฅํ์ง ์์ผ๋ฉฐ, ๊ฒฐ๊ตญ ๊ณต์ ์ง์์ ์์ ํ ์ค๋จํ์ต๋๋ค.
์ฌ๊ธฐ์ ์ค์ํ ์ ์, Kubernetes๊ฐ ์ปจํ ์ด๋ ์์ฒด๋ฅผ ๋ฒ๋ฆฐ ๊ฒ์ด ์๋๋ผ Docker๋ฅผ ๋ฒ๋ฆฐ ๊ฒ์ด๋ผ๋ ์ฌ์ค์ ๋๋ค. ์ด๊ฑด ์ ํ ๋ค๋ฅธ ์ด์ผ๊ธฐ์ ๋๋ค.
์ด ๋ณํ๋ ๋ง์ ๊ฐ๋ฐ์๋ค์ ํผ๋์ค๋ฝ๊ฒ ํ๊ณ , ์ผ๋ถ ํ์์๋ ํผ๋๊ณผ ๋ถ์๊ฐ๋ง์ ์ผ์ผ์ผฐ์ต๋๋ค.
์ด์ ์ด ๋ณํ๊ฐ ์ ํํ ์ด๋ค ์๋ฏธ์ธ์ง, ๊ทธ๋ฆฌ๊ณ ์ ์ด๊ฒ์ด ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ ๋ฏธ๋์ ์คํ๋ ค ๊ธ์ ์ ์ธ ๋ณํ์ธ์ง ์์๋ณด๊ฒ ์ต๋๋ค.
โ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ๋์ปค๋ฅผ ์ ๊ฑฐํ๋คโ๋ ๋ง์ ๋ค์ผ๋ฉด ๋ง์ ์ฌ๋๋ค์ด ์ด๋ ๊ฒ ์๊ฐํฉ๋๋ค:
โ๊ทธ๋ผ ์ด์ ์ฟ ๋ฒ๋คํฐ์ค์์ ๋์ปค ์ปจํ ์ด๋๋ฅผ ์คํํ ์ ์๋ ๊ฑด๊ฐ์?โ
๊ทธ๊ฑด ์ฌ์ค์ด ์๋๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ์ฌ์ ํ ๋์ปค ์ด๋ฏธ์ง(Docker images)๋ฅผ ๋ฌธ์ ์์ด ์คํํ ์ ์์ต๋๋ค.
๋์ปค ์ด๋ฏธ์ง๋ OCI(Open Container Initiative) ํ์ค์ ๋ฐ๋ฅด๋ฉฐ,
์ฟ ๋ฒ๋คํฐ์ค๋ OCI ํธํ ์ด๋ฏธ์ง๋ฅผ ์คํํ ์ ์๋ ์ด๋ค ์ปจํ ์ด๋ ๋ฐํ์๋ ์ง์ํฉ๋๋ค.
์ด๋ฒ ๋ณ๊ฒฝ ์ฌํญ์ ์ด๋ฏธ์ง์ ๊ดํ ๊ฒ์ด ์๋๋ผ, ๋ฐํ์์ ๊ดํ ์ด์ผ๊ธฐ์ ๋๋ค.
์ฌ์ค Docker ์์ฒด๋ ๋ด๋ถ์ ์ผ๋ก๋ containerd๋ฅผ ์ฌ์ฉํฉ๋๋ค.
containerd๋ ์ด๋ฏธ์ง ๋ค์ด๋ก๋, ์ปจํ ์ด๋ ์์ฑ, ์คํ ๋ฆฌ์ง ๊ด๋ฆฌ ๋ฑ์ ๋ด๋นํ๋ ๊ฐ๋ณ๊ณ ํจ์จ์ ์ธ ์ปจํ ์ด๋ ๋ฐํ์์ ๋๋ค.
์ฆ, ์ฐ๋ฆฌ๊ฐ docker run
๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด, Docker๋ ์ค์ ๋ก ๋ค์์ containerd๋ฅผ ํธ์ถํ๊ณ ์๋ ์
์
๋๋ค.
Kubernetes๋ ์ด ๊ณผ์ ์์ ์ค๊ฐ ๋จ๊ณ๋ฅผ ์์ ๊ธฐ๋ก ํ ๊ฒ์ ๋๋ค.
๊ธฐ์กด์๋ Docker โ containerd โ Linux
์ ํ๋ฆ์ด์๋ค๋ฉด, ์ด์ ๋ Kubernetes๊ฐ containerd์ ์ง์ ํต์ ํ๊ฒ ๋ฉ๋๋ค.
๊ทธ ๊ฒฐ๊ณผ๋?
๋ถํ์ํ ์ค๋ฒํค๋ ๊ฐ์, ๋ ๋์ ์ฑ๋ฅ, ๊ทธ๋ฆฌ๊ณ ์ฅ๊ธฐ์ ์ธ ์ ์ง๊ด๋ฆฌ ์ธก๋ฉด์์์ ์ด์ ์ด ์๊น๋๋ค.
์ด๋ฒ ์ํคํ ์ฒ ๋ณ๊ฒฝ์๋ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ๋ฐฐ๊ฒฝ์ด ์์ต๋๋ค:
1. Docker๋ CRI(์ปจํ ์ด๋ ๋ฐํ์ ์ธํฐํ์ด์ค) ํธํ ๋ฐํ์์ด ์๋๋ค
Kubernetes๋ ์ปจํ ์ด๋ ๋ฐํ์๊ณผ ํต์ ํ๊ธฐ ์ํด CRI(Container Runtime Interface)๋ผ๋ ํ๋ฌ๊ทธ์ธ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํ์ง๋ง Docker๋ CRI๋ฅผ ์ง์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์, Kubernetes์ ์ฐ๊ฒฐํ๋ ค๋ฉด dockershim์ด๋ผ๋ ์ค๊ฐ ๊ณ์ธต(shim layer)์ด ํ์ํ์ต๋๋ค.
์ด dockershim์ ์ ์ง๋ณด์ํ๋ ์ผ์ ๋ณต์กํ๊ณ ๋ถ์์ ํ์ผ๋ฉฐ, ๊ฒฐ๊ตญ Kubernetes ํ์ ์ด๋ ๊ฒ ์ ์ธํ์ต๋๋ค: โ๋ ์ด์ ์ ์งํ์ง ์๊ฒ ์ต๋๋ค.โ
2. containerd๋ ์ค์ผ์คํธ๋ ์ด์ ์ ์ํด ์ค๊ณ๋ ๋ฐํ์์ด๋ค
Docker์ ๋ฌ๋ฆฌ, containerd๋ ์ฒ์๋ถํฐ ํ๋ก๋์ ํ๊ฒฝ์ ์ค์ผ์คํธ๋ ์ด์ ์ ์ผ๋์ ๋๊ณ ์ค๊ณ๋์์ต๋๋ค.
๋ ๊ฐ๋ณ๊ณ ๋น ๋ฅด๋ฉฐ, Docker CLI๋ ์ด๋ฏธ์ง ๋น๋, ๋ฐ์คํฌํ ๋๊ตฌ ๊ฐ์ ๋ถํ์ํ ๊ธฐ๋ฅ์ด ํฌํจ๋์ง ์์ Kubernetes์์ ํตํฉ์ ํจ์ฌ ์ ํฉํฉ๋๋ค.
3. ๋ ๊น๋ํ๊ณ ๋จ์ํ ์ํคํ ์ฒ
Docker๋ฅผ ์๋ตํจ์ผ๋ก์จ Kubernetes ์ปจํธ๋กค ํ๋ ์ธ์์์ ๊ณ์ธต ๊ตฌ์กฐ์ ์์กด์ฑ์ ์ค์ผ ์ ์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ํด๋ฌ์คํฐ๋ ๋ ์์ธก ๊ฐ๋ฅํ๊ณ , ๋ฌธ์ ๋ฐ์ ์ ๋๋ฒ๊น ๋ ํจ์ฌ ์ฌ์์ง๋๋ค.
๋น์ ์ด ๋ง์ฝ ์๋ ์์ ์ ํ๊ณ ์๋ค๋ฉด:
๊ฑฑ์ ํ์ง ์์ผ์ ๋ ๋ฉ๋๋ค. ์๋ฌด๊ฒ๋ ๊นจ์ง์ง ์์ต๋๋ค.
Dockerfile์ ๋ค์ ์์ฑํ ํ์๋ ์๊ณ ,
๋ค๋ฅธ ์ด๋ฏธ์ง ํฌ๋งท์ผ๋ก ์ ํํ ํ์๋ ์์ต๋๋ค.
ํ์ง๋ง ๋ช ๊ฐ์ง ์ธก๋ฉด์์๋ ์ด๋ฒ ๋ณ๊ฒฝ์ด ์ํฅ์ ์ค ์ ์์ต๋๋ค.
1. ๋ก๊น ๋ฐ ๋๋ฒ๊น ๋ฐฉ์
๋ง์ ๊ฐ๋ฐ์๋ค์ด docker logs
, docker exec
๊ฐ์ Docker CLI ๋ช
๋ น์ด๋ฅผ ๋๋ฒ๊น
์ ํ์ฉํฉ๋๋ค.
ํ์ง๋ง containerd๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ทธ๋ฐ ์น์ํ CLI๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค.
์ด์ ๋ crictl
, ctr
๊ฐ์ ๋์ฒด ๋๊ตฌ๋ค์ ์ฌ์ฉํด์ผ ํ๋ฉฐ,
์ด๋ค ๋๊ตฌ๋ ์๋กญ๊ฒ ํ์ต์ด ํ์ํฉ๋๋ค.
2. CI/CD ํ์ดํ๋ผ์ธ
์ผ๋ถ ์ปค์คํ CI/CD ํ์ดํ๋ผ์ธ์ Kubernetes ๋ ธ๋ ๋ด๋ถ์์ Docker๋ฅผ ์คํํด ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ฑฐ๋ ํน์ ๋ถ์์ฉ์ ์ ๋ฐํ๋ ๋ฐฉ์์ ์์กดํ๊ณ ์์ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ด์ ๋ ๋ ธ๋์ Docker๊ฐ ์ค์น๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฐ ๋ฐฉ์์ ๋ ์ด์ ๋์ํ์ง ์์ต๋๋ค.
โ ํด๊ฒฐ์ฑ :
Docker๊ฐ ์์ด๋ Kubernetes ๋ด์์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์๋ Kaniko, BuildKit, img ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
3. ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ
Minikube๋ kind(Kubernetes IN Docker)๋ฅผ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด,
์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ๋ก๋ํ๋ ๋ฐฉ์์ ๋ณํ๊ฐ ์๊ฒผ์์ ๋๋ ์ ์์ต๋๋ค.
์ด๋ฌํ ํด๋ค์ ๋น ๋ฅด๊ฒ ์ต์ ํ๋๊ณ ์์ง๋ง,
์ง๊ธ ์ฌ์ฉํ๋ ํ๊ฒฝ์ด ์ ์๋ํ๋์ง ํ ๋ฒ ๋ ์ ๊ฒํด๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค.
์์ผ๋ก ๋ณํ์ ์์ ๋๊ฐ๊ณ ์ถ๋ค๋ฉด, ์๋์ ๊ฐ์ ๋ฐฉ์๋ค์ ๋์ ํด๋ณด์ธ์:
โ OCI ํธํ ์ด๋ฏธ์ง ๋น๋ ์ฌ์ฉํ๊ธฐ:
BuildKit
, Kaniko
, img
๋ Docker ์์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค.
โ containerd ๊ธฐ์ด ์ตํ๊ธฐ:
ํนํ crictl
์ Kubernetes ๋
ธ๋์์ ์ปจํ
์ด๋๋ฅผ ์ง์ ๋ค๋ฃฐ ๋ ์ ์ฉํฉ๋๋ค.
โ Docker-in-Docker ๋ฐฉ์ ํผํ๊ธฐ:
ํธ๋ฆฌํด ๋ณด์ฌ๋ ๋งค์ฐ ๋ถ์์ ํ ๋ฐฉ์์ ๋๋ค.
๊ฐ๋ฅํ๋ฉด ์ปจํ ์ด๋ ์นํ์ ์ธ ๋์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
โ Kubernetes ๋ฆด๋ฆฌ์ค ๋ ธํธ ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ธํ๊ธฐ:
ํนํ ๋ฐํ์ ์ธํฐํ์ด์ค(CRI)์ ๊ด๋ จ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ฑ๊ฒจ๋ณด์ธ์.
Kubernetes๊ฐ Docker ์ง์์ ์ค๋จํ ๊ฒ์ Docker์ ๋์ด ์๋๋ผ,
๋๊ท๋ชจ ์ปจํ ์ด๋ ์คํ ๋ฐฉ์์ ์งํ๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
์คํ๋ ค ์ด๋ฒ ๋ณํ๋ ์ฐ๋ฆฌ๋ฅผ ๋ ๊ฐ๋ณ๊ณ , ํ์คํ๋๊ณ , ํ๋ก๋์ ์ค์ฌ์ ์ธ ์ปจํ ์ด๋ ์ํฌํ๋ก์ฐ๋ก ์ด๋๊ณ ์์ต๋๋ค.
Docker๋ ์ฌ์ ํ ๋ก์ปฌ ๊ฐ๋ฐ๊ณผ ์ด๋ฏธ์ง ๋น๋์ ํ๋ฅญํ ๋๊ตฌ์ ๋๋ค.
ํ์ง๋ง ์ค์ผ์คํธ๋ ์ด์ ์ ๋ฏธ๋๋ containerd์ CRI ํธํ ๋ฐํ์์๊ฒ ์์ต๋๋ค.
๊ทธ๋ฌ๋, ๋์ปค ์๋ ์ฟ ๋ฒ๋คํฐ์ค๋ ๊ณง ํ์ค์ด์ ๋ฏธ๋์ ๋๋ค.
์ง์ง ์ค์ํ ์ง๋ฌธ์ ์ด๊ฒ์ด๊ฒ ์ฃ , ๋น์ ์ ๊ทธ ๋ฏธ๋๋ฅผ ๋ง์ดํ ์ค๋น๊ฐ ๋์ด ์๋์?
CRI
(Container Runtime Interface)๋ฅผ ํตํด ๋ฐํ์๊ณผ ํต์ dockershim
์ด ํ์ํ์ โ ์ ์ง๋ณด์๊ฐ ๋ณต์กํญ๋ชฉ | ์ํฅ | ๋์ฒด ๋ฐฉ๋ฒ |
---|---|---|
Docker CLI ๊ธฐ๋ฐ ๋๋ฒ๊น | docker logs , docker exec ์ฌ์ฉ ๋ถ๊ฐ | crictl , ctr ํ์ต |
CI/CD ํ์ดํ๋ผ์ธ์์ Docker ์ฌ์ฉ | ๋ ธ๋ ๋ด Docker ํ์ ์ ์๋ ์ ํจ | Kaniko , BuildKit , img ์ฌ์ฉ |
๋ก์ปฌ Kubernetes ํ๊ฒฝ | Minikube, kind ์ค์ ๋ณํ ๊ฐ๋ฅ์ฑ | ๊ตฌ์ฑ ํ์ธ ๋ฐ ์ต์ ํ ํ์ |
BuildKit
, Kaniko
, img
crictl
, ctr
Docker-in-Docker
๋ ๋ถ์์ โ ๋์ฒด ๋๊ตฌ ์ฌ์ฉ์ฃผ์ | ์ค๋ช |
---|---|
๐น CRI(Container Runtime Interface) | Kubernetes์ ๋ฐํ์ ์ฌ์ด์ ์ธํฐํ์ด์ค. CRI ์ดํด๋ ํ์ |
๐น containerd vs Docker ์ฐจ์ด | ๋ฐํ์ ๊ณ์ธต ๊ตฌ์กฐ ๋ฐ ์ญํ ๋น๊ต |
๐น crictl / ctr ๋ช ๋ น์ด | ๋๋ฒ๊น ๋ฐ ์ปจํ ์ด๋ ์ ์ด๋ฅผ ์ํ CLI ๋๊ตฌ |
๐น Kaniko / BuildKit ์ฌ์ฉ๋ฒ | Docker ์๋ ํ๊ฒฝ์์ ์ด๋ฏธ์ง ๋น๋ํ๋ ๋ฐฉ๋ฒ |
๐น kind, Minikube ์ค์ ๊ตฌ์กฐ | ๋ก์ปฌ ๊ฐ๋ฐํ๊ฒฝ์์ ์ด๋ฏธ์ง ๋ก๋ฉ ๋ฐฉ์ ๋ณ๊ฒฝ ์ดํด |