๐ ํด๋น ํฌ์คํ ์ ์์ํ์ธ์! ๋์ปค/์ฟ ๋ฒ๋คํฐ์ค ์์ ์ ์ฝ๊ณ ๊ฐ์ธ์ ์ธ ๋ชฉ์ ํ์ ์์ฑ๋๋ ๊ธ์ ๋๋ค. ํฌ์คํ ์ ์ฌ์ฉ๋๋ ๋ชจ๋ ์๋ฃ๋ ์ ๊ฐ ์ง์ ์ฌ๊ตฌ์ฑํ์์์ ์๋ฆฝ๋๋ค.
์ด๋ฒ ํฌ์คํ ์์ ๋ถํฐ๋ ์ฟ ๋ฒ๋คํฐ์ค ์๋ฆฌ์ฆ ํฌ์คํ ์ ๊ฒ์ํ๋ค. ๊ทธ ์ฒซ ์ฑํฐ๋ก, ์ฟ ๋ฒ๋คํฐ์ค์ ๋ํ ๊ฐ๋ ์ ๋ํด ์์๋ณด๊ณ , ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์.
1. ์ฟ ๋ฒ๋คํฐ์ค๋ ๋ญ๊น?
์ง๋ ์๊ฐ๊น์ง ๋์ปค ์๋ฆฌ์ฆ ํฌ์คํ ์ผ๋ก ๋์ปค์์ง์ ๋ํด ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ๋ถํฐ ํด์ ์ฌ๋ฌ ํธ์คํธ์ ๋์ปค๋ฅผ ๊ด๋ฆฌํ๋ ๋์ปค ์ค์, ์ฌ์ฒ ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ํ ๋ฒ์ ๊ด๋ฆฌํ๋ ๋์ปค ์ปดํฌ์ฆ ๋ฑ์ ๋ํด ๋ฐฐ์์๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ฌํ ๊ฐ๋ ๋ค์ ํ ๊ตฐ๋ฐ๋ก ๋ชจ์ ์ฌ์ฉํ ์ ์๋ ํ๋ก์ ํธ๊ฐ ์๋๋ฐ, ๊ทธ๊ฒ์ด ๋ฐ๋ก ์ฟ ๋ฒ๋คํฐ์ค์ด๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ๋์ปค ์ค์ ๋ชจ๋์ฒ๋ผ ์ฌ๋ฌ ๋์ ํธ์คํธ์ ๋์ปค๋ฅผ ํ๋์ ํด๋ฌ์คํฐ๋ก ๋ง๋ค์ด์ค๋ค๋ ์ธก๋ฉด์์๋ ๋น์ทํ๋, ๋์ปค ์ค์๋ณด๋ค๋ ๋ ์ธ๋ถ์ ์ธ ๊ธฐ๋ฅ์ ํญ๋๊ฒ ์ ๊ณตํ๊ณ ์๋ค๋ ๊ฒ์ด ํน์ง์ด๋ค. ๊ทธ๋์ ํ์ ์์์ ์ ํ๋ฆฌ์ผ์ด์ ์๋น์ค ์ด์ ๋จ๊ณ์์ ๋๋ถ๋ถ์ ํ์ฌ๋ค์ด ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค.
๊ทธ๋ฌ๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๋ ๋จ์ํ ๋์ปค ์ค์๊ณผ ๋น์ทํ ์ญํ ์ ํ๋ ๋๊ตฌ์ ๋ ๋ค๋ฅธ ์ข ๋ฅ์ธ ๊ฑธ๊น? ์์ง ์ค์ค๋ก์๊ฒ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ๋ผ๊ณ ํ๋ฉด ๋ช ํํ ์ ์ ๋ด๋ฆฌ๊ธฐ๊ฐ ๋ชจํธํ๋ค. ๋ฐ๋ผ์ ์ข ๋ ๋ช ํํ๊ฒ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ด๋ค ๊ฐ๋ ์ธ์ง ์์๋ณผ ํ์๊ฐ ์์ ๋ฏ ํ๋ค. ๊ทธ ์ ์ ์์ ์ฐ๋ฆฌ๊ฐ ์ง๊ธ๊น์ง ๋ฐฐ์ ๋ ๋์ปค์์ง์ ์ค์ฒด(?)์ ๋ํด์ ์ง์ด๋ณด์์ผ ํ ๊ฒ์ด ์๋ค.
1-1. ๋์ปค๋ ์ฌ์ค ์ปจํ ์ด๋๊ฐ ์๋๋ค?
๋์ปค ์๋ฆฌ์ฆ์ ์ฒซ ํฌ์คํ ์์ ์ฐ๋ฆฌ๋ ๋์ปค๋ผ๋ ๊ฒ์ด ์ปจํ ์ด๋์ ํ ์ข ๋ฅ๋ผ๊ณ ๋ฐฐ์ ๋ ๊ธฐ์ต์ด ์๋ค. ๊ทธ ๋ ๋น์์๋ ์ฑ ์์๋ ๊ทธ๋ฌ์ง๋ง ๋์ปค๋ผ๋ ๊ฐ๋ ์ ์ง๊ด์ ์ผ๋ก ์ดํด์ํค๊ธฐ ์ํด์ ์ฑ ์ ์ด๋ฐ๋ถ ์ค๋ช ์์๋ ๋์ปค๋ฅผ OpenVZ, cri-o์ ๊ฐ์ ์ปจํ ์ด๋์ ์ข ๋ฅ ์ค ํ๋๋ผ๊ณ ๊ฐ๋จํ ์ค๋ช ํ์๋ค. ์ฌ์ค ์๋ฐํ ๋งํ๋ฉด ๋์ปค์ cri-o, OpenVZ์ ๋์ผํ ์นดํ ๊ณ ๋ฆฌ์ ๊ฐ๋ ์ ์๋๋ค. ์ฌ์ง์ด cri-o, OpenVZ๋ ์ฌ์ค์ ์ปจํ ์ด๋์ ์ข ๋ฅ๊ฐ ์๋ ์ปจํ ์ด๋ ๋ฐํ์ ์ข ๋ฅ ์ค ํ๋์ด๋ค. ๊ฐ์๊ธฐ ํผ๋์ค๋ฝ๋ค..๋์ปค๊ฐ ์ปจํ ์ด๋๊ฐ ์๋๋ผ๋? ์ด์ ๋ํด ์ดํดํ๊ธฐ ์ํด์ ์ฒ์ฒํ ์๋ ๋ด์ฉ์ ํ๋์ฉ ์ง์ด๋ณด์.
์ฐ์ ์ปจํ ์ด๋ ๋ฐํ์์ด๋ผ๋ ๊ฒ์ ์ปจํ ์ด๋๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ญ์ ํ๋ ๋ฑ๊ณผ ๊ฐ์ด ์ปจํ ์ด๋๋ฅผ ์ ์ดํ ์ ์๋ ํ๋ก๊ทธ๋จ์ ์๋ฏธํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ์ปจํ ์ด๋๋ฅผ ์ ์ดํ๋ ํ๋ก๊ทธ๋จ ์ฆ, ์ปจํ ์ด๋ ๋ฐํ์์ ์น ํต์ ์ ๊ท์น์ธ HTTP์ฒ๋ผ ์ผ์ข ์ ํ๋กํ ์ฝ์ด์ ๊ท์น์ผ๋ก ๋ง๋ ๊ฒ์ด ๋ฐ๋ก ์ปจํ ์ด๋ ๋ฐํ์ ์ธํฐํ์ด์ค(CRI, Container Runtime Interface)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋์ปค, ๊ทธ ์ค์์๋ ๋์ปค ์๋ฒ์ ์ญํ ์ด์ ๋์ปค์ ํต์ฌ ํ๋ก์ธ์ค๋ผ๊ณ ํ๋ ๋์ปค ๋ฐ๋ชฌ(dockerd)์ด ์ฐ๋ฆฌ๋ ์ปจํ ์ด๋๋ฅผ ์ง์ ์ ์ผ๋ก ์ ์ดํ๋ ์ฆ, ์ปจํ ์ด๋ ๋ฐํ์์ ํ ์ข ๋ฅ๋ผ๊ณ ๊ทธ๋์ ์ธ์ํ๊ณ ์์๋ค. ํ์ง๋ง ์ค์ ์ ์ผ๋ก ๋์ปค ์์ง์์ ์ปจํ ์ด๋ ๋ฐํ์์ ์ญํ ์ ํ๋ ์ผ๋ช '์ปจํ ์ด๋ ํ๋ก์ธ์ค'๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฒ์ ์ปจํ ์ด๋ ๋ฐํ์์ ๊ตฌ์ฑํ๋ ์์ ์ค ํ๋์ธ runC๊ฐ ํ๊ฒ ๋๋ค. ์ด runC ๋ผ๋ ๊ฒ์ ์ปจํ ์ด๋์ 1:1์ผ๋ก ๋งค์นญ๋๋ ๊ฒ์ด ํน์ง์ด๋ค. ์ฆ, ์ปจํ ์ด๋๊ฐ 2๊ฐ์ด๋ฉด runC๊ฐ 2๊ฐ์ด๊ณ , ์ปจํ ์ด๋๊ฐ 10๊ฐ๋ฉด runC๊ฐ 10๊ฐ๊ฐ ๋๋ค. ์ด๋ฌํ ์ฌ๋ฌ ๊ฐ์ runC ๋ผ๋ ์ปจํ ์ด๋ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๋ ์ฃผ์ฒด๊ฐ ๋ฐ๋ก containerd ๋ผ๋ ์ปจํ ์ด๋ ๋ฐํ์ ์ธํฐํ์ด์ค(CRI)์ ์ข ๋ฅ ์ค ํ๋์ด๋ค. ๋ฐ๋ผ์ ์ค์ง์ ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ๊ด๋ฆฌํ๋ ์ฃผ์ฒด๋ CRI ์ข ๋ฅ ์ค ํ๋์ธ containerd ์ด๋ค.
์ฌ๊ธฐ์ ๊ทธ๋ฌ๋ฉด runC์ containerd ์์ ์ฐจ์ด์ ์ ๋ฌด์์ธ์ง ๊ถ๊ธํ ์ ์๋ค. runC๋ ์์ ๋งํ ๊ฒ์ฒ๋ผ ์ปจํ ์ด๋์ 1:1์ผ๋ก ๋งค์นญ๋๋ ๊ฒ์ผ๋ก, ๋จ์ผ ์ปจํ ์ด๋์ ๋ํ ์์ ์ ์ํํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ containerd๋ ์ด๋ฌํ ์ฌ๋ฌ๊ฐ์ runC๋ค์ ์ค์ผ์คํธ๋ ์ด์ ํ๋ CRI ์ข ๋ฅ ์ค ํ๋๋ค. ์๋ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ข ๋ ๋ช ํํ ๊ฒ์ด๋ค. ์๋ ๊ทธ๋ฆผ์ ๋์ปค ์์ง์์ containerd, runC, ์ปจํ ์ด๋๋ค์ด ์ด๋ค ์ํธ์์ฉ์ ํ๋์ง ๋ณด์ฌ์ฃผ๋ ๊ทธ๋ฆผ์ด๋ค.
์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๊ฐ ์ปจํ ์ด๋๋ง๋ค runC ๋ผ๋ ๋ฐํ์์ด ๋งค์นญ๋์ด ์๊ณ , ์ด runC๋ฅผ ํ์ฉํด์ ์ปจํ ์ด๋๋ฅผ ์ ์ดํ๋๋ฐ, ์ด runC๊ฐ 1๊ฐ๊ฐ ์๋๊ณ ์ฌ๋ฌ๊ฐ์ด๋ค ๋ณด๋, ํ๋์ ํด๋ก ์ฌ๋ฌ๊ฐ์ runC๋ฅผ ์ ์ดํจ์ผ๋ก์จ ๊ณง ์ฌ๋ฌ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์ ์ดํ ์ ์๊ฒ ๋๋ค. ์ด ๋ 'ํ๋์ ํด' ์ด๋ผ๋ ๊ฒ์ด ๋ฐ๋ก CRI ์ข ๋ฅ ์ค ํ๋์ธ containerd ์ด๋ค. ๋์ปค ์์ง์์๋ ๋์ปค ๋ฐ๋ชฌ์ด ์ด containerd์ ํต์ ํ๋ฉด์ ์ปจํ ์ด๋๋ฅผ ์ ์ดํ๋ ๊ตฌ์กฐ์๋ค.
1-2. ๋์ปค ์์ง์ด ์์ด๋ ๋์ํ๋ ์ฟ ๋ฒ๋คํฐ์ค
์ด์ ๋์ปค ์์ง์ ์ค์ฒด(?)์ ๋ํด ์์๋ณด์๋ค. ์ ๊ตฌ์กฐ์ ๋๋นํด์ ์ฟ ๋ฒ๋คํฐ์ค๋ ๊ทธ๋ฌ๋ฉด ์ด๋ค ๊ตฌ์กฐ์ผ๊น? ์๋ ๊ทธ๋ฆผ์ ๋ณด์.
๋์ปค ์์ง ๊ตฌ์กฐ์์์ Docker Engine์ ์ญํ ์ด ์ฟ ๋ฒ๋คํฐ์ค์์๋ Kubernetes(kubelet)์ผ๋ก ๋์ฒด๋ ๊ฒ์ ์ ์ ์๋ค. ์ฌ๊ธฐ์ ํต์ฌ์ ์ฟ ๋ฒ๋คํฐ์ค์์๋ ๋์ปค ์์ง์ด ์์ด๋ ์ปจํ ์ด๋๋ฅผ ์ ์ดํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ด ๊ฐ๋ฅํ ์ด์ ๋ ์์์ ๋ฐฐ์ด ๊ฒ์ฒ๋ผ "์ปจํ ์ด๋๋ฅผ ์ค์ง์ ์ผ๋ก ์ ์ดํ๋ ์ฃผ์ฒด๋ CRI(ex. containerd, cri-o, OpenVZ, LXC, ๋ฑ..) ์ด๊ธฐ ๋๋ฌธ"์ด๋ค! ๋ฐ๋ผ์ ์ฟ ๋ฒ๋คํฐ์ค์ผ ๋์ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ๋์ปค ์์ง์ด ์์ด๋ containerd ๋ cri-o์ ๊ฐ์ CRI ๊ตฌํ์ฒด๋ง ์์ด๋ ์ปจํ ์ด๋๋ฅผ ์ ์ดํ ์ ์๋ ๊ฒ์ด๋ค. ๋ฌผ๋ก ์ด ๋, ๋์ปค ์์ง์ด ์๊ธฐ ๋๋ฌธ์ ์ปจํ ์ด๋๋ฅผ ์ ์ดํ๊ธฐ ์ํด ์ฌ์ฉ์๋ 'docker~' ๋ผ๋ ํค์๋๋ก ์์ํ๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋์ 'crictl ~' ์ ๊ฐ์ ํค์๋๋ก ์์ํ๋ ๋ช ๋ น์ด ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ๋ฌผ๋ก ์ฟ ๋ฒ๋คํฐ์ค์์๋ crictl ์ด๋ผ๋ ๋ช ๋ น์ด๋ณด๋ค๋ ์ฟ ๋ฒ๋คํฐ์ค์ ๊ธฐ๋ฅ์ ํญ๋๊ณ ๋ค์ํ๊ฒ ํ์ฉํ๊ธฐ ์ํด (์ฐ๋ฆฌ๊ฐ ํํ ์๋) kubectl ์ด๋ผ๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
์, ์ด ์ ๋๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ ํํ ์ด๋ป๊ฒ ๋ถ๋ฆฌ๋๋ ๊ฐ๋ ์ธ์ง ์ด์ ๋ณด๋ค ํ ์๋ฟ์ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฉด ์ด์ ๊ฐ๋จํ๊ฒ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ๋์ปค ์ค์๊ณผ ๊ฐ์ ๋ค๋ฅธ ์คํ์์ค ์ค์ผ์คํธ๋ ์ด์ ํด๋ณด๋ค ์ด๋ค ์ฅ์ ๋ค์ด ์๋์ง ์ดํด๋ณด์.
- ์๋ฒ ์์ ํด๋ฌ์คํฐ๋ง, ๋ง์ดํฌ๋ก์๋น์ค ๊ตฌ์กฐ์ ์ปจํ ์ด๋ ๋ฐฐํฌ, ์๋น์ค ์ฅ์ ๋ณต๊ตฌ ๋ฑ ์ปจํ ์ด๋ ๊ธฐ๋ฐ์ ์๋น์ค ์ด์์ ํ์ํ ์ฌ๋ฌ๊ฐ์ง ์ค์ผ์คํธ๋ ์ด์ ๊ธฐ๋ฅ์ ์ง์
- ๋ง์ ์คํ์์ค์์ ์ฟ ๋ฒ๋คํฐ์ค์ ์์ค ์ฝ๋์ ๊ธฐ์ฌํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ ์ธก๋ฉด์์ ์ ๋ขฐ๋๊ฐ ์๋ ์ํํธ์จ์ด
- ์์์ ๋ณผ๋ฅจ, ์ค์ผ์ฅด๋ง, ์ฅ์ ๋ณต๊ตฌ, ์คํ ์ค์ผ์ผ๋ง, ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ ๋ฐ ์ธ๊ทธ๋ ์ค์ ๊ฐ์ ์ปจํ ์ด๋ ๊ธฐ๋ฐ์ ํด๋ผ์ฐ๋๋ฅผ ์ด์ํ ๋ ํ์ํ ๋๋ถ๋ถ์ ๊ธฐ๋ฅ๊ณผ ๊ตฌ์ฑ์์๋ฅผ ์ฌ์ฉ์๊ฐ ์ง์ ์ปค์คํฐ๋ง์ด์ง ํ ์ ์์
- ๋ค๋ฅธ ํด๋ผ์ฐ๋ ์ด์ ๋๊ตฌ๋ค๊ณผ ์ฝ๊ฒ ์ฐ๋์ด ๋์ด ํ์ฅ์ฑ์ด ๋์
์ด๋ฐ ๊ฒ๋ค๋ก ๋ณด์, ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ํ์ฉํ๋ฉด ์ฐธ ๋ง์ ์ฅ์ ์ด ์๋ ๊ฒ ๊ฐ๋ค. ํ์ง๋ง ๊ทธ ์ฅ์ ์ด ๋ง์ ๋งํผ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ ๋๋ก ํ์ฉํ๊ธฐ ์ํด์๋ ๊ทธ๋งํผ ํจ์ฌ ๋ง์ ์ง์์ ํ์๋ก ํ๋ค. ๋ฐ์์ ๋ฐฐ์ฐ๊ฒ ์ง๋ง, ํด๋ผ์ฐ๋์์ ์ ๊ณตํ๋ ๋งค๋์ง๋ ์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค๊ฐ ์๋ ์ง์ ์จํ๋ ๋ฏธ์ค ์๋ฒ์์ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ์๋ ํจ์ฌ ๋ ๋ง์ ์ง์์ ์๊ตฌํ๊ฒ ๋๊ณ , ์์นซํ๋ค๊ฐ ์ค๋ฒ ์์ง๋์ด๋ง, ๊ธฐ์ ๋ถ์ฑ๊ฐ ๋ ๊ฐ๋ฅ์ฑ๋ ์กด์ฌํ๋ค. ๋ฐ๋ผ์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ํ์ฉํ๊ธฐ ์ ์ ๊ฐ์์ ํ๊ฒฝ์ ์ฐ์ ์ ์ผ๋ก ๊ณ ๋ คํด์ผ ํ๋ค.
๊ทธ๋ฌ๋ฉด ๋ค์ ๋ชฉ์ฐจ๋ถํฐ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ๊ณผ ๊ฐ๊ธฐ ํน์ง์ ์ดํด๋ณด๋๋ก ํ์.
2. ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ๋ ๋ค์ํ ๋ฐฉ๋ฒ
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ๊ธฐ ์ํด์๋ ์ฐ์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ ์ฉํ๊ธฐ ์ํ ๊ทธ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ฐฉ๋ฒ์ด ์ฝ๊ฐ ๋ฌ๋ผ์ง๋ค. ์ฐ์ ํฌ๊ฒ๋ ์๋ 2๊ฐ์ง ์ฉ๋์ ๋ฐ๋ผ ์ค์นํ ์ฟ ๋ฒ๋คํฐ์ค ๊ด๋ จ ํ๋ก๊ทธ๋จ์ด ๋ฌ๋ผ์ง๋ค.
์ฉ๋ | ์ค์นํ ํ๋ก๊ทธ๋จ๋ค |
๊ฐ๋ฐ ์ฉ๋ | - Minikube - Docker for Desktop for Mac/Windows์ ๋ด์ฅ๋ ์ฟ ๋ฒ๋คํฐ์ค |
์๋น์ค ํ ์คํธ ๋๋ ์ด์ ์ฉ๋ | - kops - kubespray - kubeadm - AWS์ EKS(Elastic Kuberenetes Service) - GCP์ GKE(Google Kubernetes Engine) |
๋ณดํต์ ๊ฐ์ธ์ด ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์คํฐ๋ํ๋ ๋ชฉ์ ์ผ๋ก ํ๋ค๋ฉด ์ ํ์์ ๊ฐ๋ฐ ์ฉ๋์ ํ๋ก๊ทธ๋จ๋ค์ ์ค์นํด์ ๊ณต๋ถ๋ฅผ ์งํํ๋ค. ํ์ง๋ง ์ด๋ฌํ ๊ฐ๋ฐ ์ฉ๋์ ์ฟ ๋ฒ๋คํฐ์ค ํ๋ก๊ทธ๋จ๋ค์ ํ๋์ ๋จธ์ (ex. ๊ฐ์ธ ๋ ธํธ๋ถ, ํ๋์ VM) ์ฆ ํ๋์ ๋ก์ปฌ ๋ ธ๋๋ฅผ standalone ๋ชจ๋๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฟ ๋ฒ๋คํฐ์ค์ ๊ธฐ๋ฅ์ ์๋ฒฝํ๊ฒ ์ฌ์ฉํ๊ธฐ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค. ์๋ํ๋ฉด ์ฟ ๋ฒ๋คํฐ์ค์ ์ง์ ํ ํ์ ์ฌ๋ฌ ๋จธ์ ์ฆ, ์ฌ๋ฌ ํธ์คํธ์ ์ปจํ ์ด๋๋ค์ ๊ด๋ฆฌํ ๋ ๋ฐํ๋๊ธฐ ๋๋ฌธ์ด๋ค.
๋ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ ๋ ๊ณ ๋ คํ ๋ค๋ฅธ ์ธก๋ฉด์ผ๋ก๋ ์๋ฒ ํ๊ฒฝ์ด ์๋ค. ์๋ฒ๋ฅผ ์จํ๋ ๋ฏธ์ค๋ก ๊ตฌ์ฑํ ๊ฒ์ธ์ง, AWS๋ GCP์ ๊ฐ์ ํด๋ผ์ฐ๋์์ ์ ๊ณตํ๋ ๋งค๋์ง๋ ์๋น์ค๋ฅผ ์ด์ฉํ ๊ฒ์ธ์ง, ํด๋ผ์ฐ๋์ ์๋ฒ๋ฅผ ํ์ฉํ๋ ์๋ฒ ๋ด์ ์ฟ ๋ฒ๋คํฐ์ค๋ ์ง์ ์ค์นํ๋ ๋ฐฉํฅ์ผ๋ก ํ ๊ฒ์ธ์ง๊ฐ ์๋ค. ํด๋ผ์ฐ๋์ ์ข ์๋ ์๋ก ๊ด๋ฆฌ์ ๋ณต์ก๋๋ ๊ฐ์ํ๊ธด ํ์ง๋ง ์ง์ ์ ์ผ๋ก ์ปค์คํฐ๋ง์ด์งํ ์ ์๋ ๋ถ๋ถ์ ์ค์ด๋ค ์ ์๋ค. ๊ด๋ฆฌ ๋ณต์ก๋์ ์์ ๋์ trade-off ๊ด๊ณ๋ผ๊ณ ํ ์ ์๋ค.
๋ค์์ ์ฟ ๋ฒ๋คํฐ์ค ๋ฒ์ ์ ์ ํํด๋ณด๋ ๊ฒ์ด๋ค. ์ฟ ๋ฒ๋คํฐ์ค์ ๊ธฐ๋ฅ์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์ ๋ฐ์ดํธ ๋๊ณ ์๋ ์ถ์ธ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ํ ๋ฒ์ ์ฐจ์ด๋ก ์ธํด ์ฟ ๋ฒ๋คํฐ์ค์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ด๋ ๊ธฐ๋ฅ์ด ๋ฌ๋ผ์ง๊ฑฐ๋ ํ ์ ์๋ค. ์ฑ ์ ์๋ถ์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ ๋๋ ๋๋ฌด ์ต์ ๋ฒ์ ์ด๋ ๋๋ฌด ์์ ๋ฒ์ ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค๊ณ ๊ถ๊ณ ํ๋ค. ์์ผ๋ก ์ฑ ์์ ์ค๋ช ํ ๋ชจ๋ ๋ถ๋ถ์ ์ฟ ๋ฒ๋คํฐ์ค 1.23์ ๋ฒ์ ์ ๊ธฐ์ค์ผ๋ก ํ๋ค. ํ์ฌ(2023.06.18) ๊ธฐ์ค ์ฟ ๋ฒ๋คํฐ์ค ๋ฒ์ ์ ํ์ฌ 1.27 ๋ฒ์ ๊น์ง ๋์จ ๋ฏ ํ๋ค.
๊ทธ๋ฌ๋ฉด ์ด์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์ ์ค์นํ๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์.
2-1. Mac์์ ์ฟ ๋ฒ๋คํฐ์ค ์ค์นํ๊ธฐ
Mac OS๋ฅผ ์ฌ์ฉํ๋ ์ ์ ์ด๋ฉด์ ๋์ปค๋ฅผ ์ฌ์ฉํด๋ณธ ์ ์ ๋ผ๋ฉด Docker for Desktop for Mac ํ๋ก๊ทธ๋จ์ด ์ด๋ฏธ ๊น๋ ค์์ ๊ฒ์ด๋ค. ๋งฅ์์๋ ํด๋น ํ๋ก๊ทธ๋จ์ ์ด์ฉํด์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ ์ ์๋ค. ํด๋น ํ๋ก๊ทธ๋จ ์์ด์ฝ์ ๋๋ฌ [Settings โ Kubernetes] ํญ์ผ๋ก ์ด๋ํด๋ณด๋ฉด ์๋์ ๊ฐ์ ํ๋ฉด์ด ๋์จ๋ค. ๊ทธ๋ฆฌ๊ณ 'Enable Kubernetes' ๋ฐ์ค๋ฅผ ์ฒดํฌํด์ฃผ๊ณ Apply & Restart ๋ฒํผ์ ๋๋ฅด๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ค์น๋๋ค.
๋ค ์ค์น๋ ํ, ํฐ๋ฏธ๋์์ ์๋ ๋ช ๋ น์ด๋ฅผ ํ์ฉํด ์ฟ ๋ฒ๋คํฐ์ค์ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๋ฒ์ ์ ์ถ๋ ฅ์ด ๋๋ฉด ์ ์์ ์ผ๋ก ์ค์น๋ ๊ฒ์์ ์ ์ ์๋ค.
$ kubectl version --short
2-2. ๋ฆฌ๋ ์ค ์๋ฒ์์ ์ฟ ๋ฒ๋คํฐ์ค ์ค์นํ๊ธฐ
๋ค์์ ๋ฆฌ๋ ์ค ์๋ฒ์์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ด๋ค. ํฌ๊ฒ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋๋ฐ, ๋ฆฌ๋ ์ค ์๋ฒ์์ ๊ฐ์ ๋จธ์ ์ ์ค์นํ๊ณ , ์ด๋ฅผ ์ด์ฉํด Minikube๋ฅผ ์ค์นํ๋ ๊ฒ์ด๊ณ , ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋์ปค ์์ง๋ง์ผ๋ก Minikube๋ฅผ ์ค์นํ๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์์๋ ์ค์ ์ค์น ์ค์ต์ ์งํํ์ง๋ ์์๊ณ , ์ค์นํ๊ธฐ ์ํด ํ์ํ ๋ช ๋ น์ด๋ค๋ง ๊ฒ์ํ๋ ค๊ณ ํ๋ค. ์ฐ์ ๊ฐ์ ๋จธ์ ์ ์ค์นํ ๋ค Minikube๋ฅผ ์ค์นํ๋ ๊ฒ์ด๋ค. ๋ฆฌ๋ ์ค ์๋ฒ๋ ์ฐ๋ถํฌ๋ผ๊ณ ๊ฐ์ ํ์๋ค.
$ apt-get install virtualbox
$ curl -Lo minukube \
https://storage.googleapis.com/minikube/releases/v1.25.2/minikube-linux-amd64 && \
chmod +x minukube && \
sudo mv minikube /usr/local/bin/
$ curl -Lo kubectl \
http://storage.googleapis.com/kubernetes-release/release/v1.23.6/bin/linux/amd64/kubectl && \
chmod +x kubect && \
sudo mv kubectl /usr/local/bin/
์ ๋ช ๋ น์ด๋ ๋ฆฌ๋ ์ค ์๋ฒ์์ ๊ฐ์๋จธ์ ์ ์ค์นํ๊ณ , Minikube์ kubectl์ ๋ค์ด๋ก๋ ๋ฐ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด Minikube ๊ฐ์ ๋จธ์ ์ ์์ฑํด๋ณด์.
$ minikube start --kubernetes-version v1.23.5
๋ค์ ๋ฐฉ๋ฒ์ ๋์ปค ์์ง์ด ์ค์น๋์ด ์๋ ๋ฆฌ๋ ์ค ์๋ฒ์์ ๋์ปค ์์ง๋ง์ผ๋ก Minikube๋ฅผ ์ค์นํ๋ ๊ฒ์ด๋ค. ์ฐ์ ์๋ ๋ช ๋ ์ด๋ฅผ ํ์ฉํด minikube์ kubectl๋ฅผ ์ค์นํ์.
$ curl -Lo minukube \
https://storage.googleapis.com/minikube/releases/v1.25.2/minikube-linux-amd64 && \
chmod +x minukube && \
sudo mv minikube /usr/local/bin/
$ curl -Lo kubectl \
http://storage.googleapis.com/kubernetes-release/release/v1.23.6/bin/linux/amd64/kubectl && \
chmod +x kubect && \
sudo mv kubectl /usr/local/bin/
๊ทธ๋ฆฌ๊ณ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ๋๋ค. ์ ์ค์น๋์๋ค๋ฉด kubectl์ ํ์ฉํด์ ๋ฒ์ ์ด ์ ์ถ๋ ฅ๋๋์ง ํ์ธ ํ๋ฉด ๋๋ค.
$ minikube start --vm-driver=none
$ kubectl version --short
๋ง์ฝ ์ค์นํ minikube๋ฅผ ์ญ์ ํ๋ ค๋ฉด delete ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
$ minikube delete
2-3. ์ฌ๋ฌ ์๋ฒ๋ก ๊ตฌ์ฑ๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ์ค์น
๋ค์์ ์ฟ ๋ฒ๋คํฐ์ค์ ์ง์ ํ ํ์ ๋ง๋ณด๊ธฐ ์ํ ํ๊ฒฝ ์ค์น๊ฐ ๋๊ฒ ๋ค. ๋ฐ๋ก ์ฌ๋ฌ ์๋ฒ(๋จธ์ )๋ก ๊ตฌ์ฑ๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ฟ ๋ฒ๋คํฐ์ค์ ๊ธฐ๋ฅ์ ์ ๋๋ก ํ์ฉํ๊ธฐ ์ํด์๋ ์ ์ด๋ 3๋ ์ด์์ ์๋ฒ๋ฅผ ์ค๋นํ๋ ๊ฒ์ด ์ข๋ค. ์ฌ๊ธฐ ์์์์๋ 1๊ฐ์ ๋ง์คํฐ ๋ ธ๋์ 3๊ฐ์ ์์ปค ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ํ๊ฒฝ์ ๋ง๋ จํ๋ค. ๋จ, ๊ฐ ์๋ฒ๋ฅผ ๊ตฌ์ฑํ ๋, ์๋์ ์ฌํญ๋ค์ด ์ ์ง์ผ์ง๋์ง ํ์ธํด๋ณด๋ฉด ์ข๋ค.
- ๋ชจ๋ ์๋ฒ์ ์๊ฐ์ด ntp๋ฅผ ํตํด ๋๊ธฐํ๋์ด ์๋์ง
- ๋ชจ๋ ์๋ฒ์ ๋งฅ(MAC) ์ฃผ์๊ฐ ๋ค๋ฅธ์ง ํ์ธ(ํน์ฌ๋ ๊ฐ์ ๋จธ์ ์ ๋ณต์ฌํด ์ฌ์ฉํ ๊ฒฝ์ฐ, ๊ฐ์ ๋งฅ ์ฃผ์๋ฅผ ๊ฐ์ง๋ ์๋ฒ๊ฐ ์์ ์ ์์)
- ๋ชจ๋ ์๋ฒ๊ฐ ์ต์ 2GB ๋ฉ๋ชจ๋ฆฌ, 2 CPU ์ด์์ ์ถฉ๋ถํ ์์์ ๊ฐ๋์ง ํ์ธ
- ๋ชจ๋ ์๋ฒ์์ ๋ฉ๋ชจ๋ฆฌ ์ค์์ ๋นํ์ฑํํ๊ธฐ. ๋ฉ๋ชจ๋ฆฌ ์ค์์ด ํ์ฑํ๋์ด ์์ผ๋ฉด ์ปจํ ์ด๋์ ์ฑ๋ฅ์ด ์ผ๊ด๋์ง ์์ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ์ ์ฟ ๋ฒ๋คํฐ์ค ์ค์น ๋๊ตฌ๋ ๋ฉ๋ชจ๋ฆฌ ์ค์์ ํ์ฉํ์ง ์์. ๋ฉ๋ชจ๋ฆฌ ์ค์ ๋นํ์ฑํ๋ ์๋ ๋ช ๋ น์ด๋ฅผ ๊ฐ ์๋ฒ ํฐ๋ฏธ๋์์ ์ ๋ ฅํ๋ฉด ๋จ
$ swapoff -a
ํ์๋ ํด๋ผ์ฐ๋๋ฅผ ํ์ฉํด VM 4๋๋ฅผ ๊ตฌ์ฑํ๊ณ , ๊ฐ VM์ ํธ์คํธ ์ด๋ฆ๊ณผ IP ์ฃผ์๋ ์๋์ ๊ฐ๋ค.(IP ์ฃผ์๋ ์ค์ ์๋ ๋ค๋ฅธ ์์์ IP์ฃผ์๋ก ๋ณํ)
kube-master1 123.456.789.21
kube-worker1 123.456.789.22
kube-worker2 123.456.789.23
kube-worker3 123.456.789.24
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ค์นํ๋ ๊ณผ์ ์ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ๋ค.
- ๊ฐ ์๋ฒ์ ์ฟ ๋ฒ๋คํฐ์ค ์ ์ฅ์๋ฅผ ์ถ๊ฐ
- ๊ฐ ์๋ฒ์ CRI ๊ตฌํ์ฒด(ex. containerd, cri-o ๋ฑ..)์ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๋๊ตฌ(ex. kubeadm)๋ฅผ ์ค์น
- ํด๋ฌ์คํฐ๋ฅผ ์ด๊ธฐํ
- ์ปจํ ์ด๋ ๋คํธ์ํฌ ์ ๋์จ ์ค์น
๋จผ์ 1๋ฒ ๋จ๊ณ๋ฅผ ์ํํ๊ธฐ ์ํด ๊ฐ ์๋ฒ์์ ์๋์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ฃผ์. ํน์ ์๋ ๋ช ๋ น์ด ์ค ํ์ค ์ ๋ ฅ์ผ๋ก ๋ฐ์๋ค์ธ ํ ์คํธ๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉํ๋ cat <<EOF ์ ๋ํด ๋ชจ๋ฅธ๋ค๋ฉด ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์.
$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
$ cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
๋ค์์ 2๋ฒ ๋จ๊ณ๋ฅผ ์ํํด๋ณด๋๋ก ํ์. ์ฐ์ ์ด๋ฒ ์์์์๋ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ํ์ฉํ CRI ๊ตฌํ์ฒด๋ก์, containerd๋ฅผ ์ค์นํ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด containerd๋ ๋์ปค๋ฅผ ์ค์นํ๋ฉด ๊ฐ์ด ์ค์น๋๊ธฐ ๋๋ฌธ์ ๋์ปค์ ํฌํจ๋ containerd๋ฅผ ์ฟ ๋ฒ๋คํฐ์ค์ ์ฐ๋ํด๋ณด๋๋ก ํ์. ์๋ ๋ช ๋ น์ด๋ ๋์ปค๋ฅผ ์ค์นํ๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก CRI๊ฐ ๋นํ์ฑํ๋์ด ์๋ containerd ์ค์ ํ์ผ์ ๋ฎ์ด์์ด ๋ค containerd๋ฅผ ์ฌ์์ํ๋ ์ญํ ์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง ์ค์ ๋ช ๋ น์ด๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ์ปจํ ์ด๋๋ฅผ ์ง์ ์ ์ผ๋ก ์ ์ดํ๋ kubelet, ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ด๊ธฐํํ๊ณ ๋ ธ๋ ๊ฐ์ ํต์ ๋ฐ ๋คํธ์ํฌ ๊ธฐํ ์ค์ ์ ์ํํ๋ kubadm, ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉ์๊ฐ ์กฐ์ํ ์ ์๋ CLI์ธ kubectl, ๋ง์ง๋ง์ผ๋ก ํด๋ฌ์คํฐ ๋ด์์ ์ปจํ ์ด๋ ๋คํธ์ํฌ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ kubernetes-cni๋ฅผ ์ค์นํ๋ค.
์ฐธ๊ณ ๋ก, ํ์ฌ ์์์์๋ ์ฟ ๋ฒ๋คํฐ์ค 1.23.6 ๋ฒ์ ๊ธฐ์ค์ด๊ธฐ ๋๋ฌธ์ kubelet, kubeadm, kubectl์ 1.23.6 ๋ฒ์ ์ ๋ช
์ํด์ฃผ๋๋ก ํ์.(์ด๋ ๊ฒ 3๊ฐ์ง ๋ฒ์ ์ ๋ง์ถฐ์ฃผ์ง ์์ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ฝ์ง์ ๋ง์ด ํจ..) ๋ง์ฝ ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ด ์ด๋ค ๊ฒ์ด ์๋์ง ์ดํด๋ณด๊ณ ์ถ๋ค๋ฉด 'apt-cache policy [๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๋ฆ]' ํํ๋ก ๋ฒ์ ๋์ ๊ฒ์ํด๋ณผ ์ ์๋ค.
$ apt-get update
$ wget -qO- get.docker.com | sh
$ containerd config default > /etc/containerd/config.toml
$ service containerd restart
$ apt-get install -y kubelet=1.23.6-00 kubeadm=1.23.6-00 kubectl=1.23.6-00 kubernetes-cni
๋ค์์ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ด๊ธฐํํ๋ ๊ฒ์ด๋ค. ๋ง์คํฐ ๋ ธ๋์ ์ญํ ์ ํ ์๋ฒ๋ก ๊ฐ์ ๋ค์ ๋ช ๋ น์ด๋ก ํด๋ฌ์คํฐ๋ฅผ ์ด๊ธฐํํ๋ค. ์ด ์ ์ฐจ๋ ๋์ปค ์ค์์์ ๋ฐฐ์ ๋ ๊ฒ๊ณผ ๋น์ทํ๋ค.
$ kubeadm init --apiserver-advertise-address 123.456.789.21 \
--pod-network-cidr=192.168.0.0/16 \
--cri-socket /run/containerd/containerd.sock \
--kubernetes-version 1.23.6
์ ๋ช ๋ น์ด์์ ์ฌ๋ฌ๊ฐ์ง ์ต์ ๋ค์ด ๋ถ์ด์๋๋ฐ, ์ด์ ๋ํด์ ํ๋์ฉ ์ดํด๋ณด์.
- --apiserver-advertise-address : ๋ค๋ฅธ ๋ ธ๋๊ฐ ๋ง์คํฐ ๋ ธ๋์๊ฒ ์ ๊ทผํ ์ ์๋ IP ์ฃผ์๋ฅผ ๋ช ์ํด์ฃผ์ด์ผ ํจ. ๋์ปค ์ค์๋์ ์ ์ฌ
- --pod-network-cidr : ์ฟ ๋ฒ๋คํฐ์ค์์ ์ฌ์ฉํ ์ปจํ ์ด๋๋ค์ ๋คํธ์ํฌ ๋์ญ์ด๋ฉฐ, ๊ฐ ์๋ฒ์ ๋คํธ์ํฌ ๋์ญ๊ณผ ์ค๋ณต๋์ง ์๊ฒ ์ ์ ํ ๋ช ์ํด์ฃผ์ด์ผ ํจ(์ฐธ๊ณ ๋ก ํด๋น ์ต์ ๊ฐ์ ๋ช ์ํ ๋ ์ฌ์ฉํ IP ์ฃผ์๋ค์ ์ซ์์ธ CIDR์ ๋ํ ๊ฐ๋ ์ ๋ชจ๋ฅธ๋ค๋ฉด ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ )
- --kubernetes-version : ์์์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ ๋ ํน์ ๋ฒ์ ์ ๋ช ์ํด์ฃผ์ด ์ค์นํด์ฃผ์๋ค๋ฉด ํด๋น ์ต์ ์ ๋ช ์ํด์ฃผ์๋ ํน์ ๋ฒ์ ์ ๋ช ์ํด์ฃผ์ด์ผ ํจ
- --cri-socket : ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ฌ์ฉํ CRI ๊ตฌํ์ฒด๋ฅผ ๋ช ์. ๋ง์ฝ ๋์ปค์ containerd ์์ชฝ ๋ชจ๋ ์ฌ์ฉํด์ ์ปจํ ์ด๋๋ฅผ ์ ์ดํ ์ ์๋ ํ๊ฒฝ์ด๋ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋จผ์ ๋์ปค๋ฅผ ํ์ฉํ๊ฒ ๋๋ฏ๋ก, ์ฌ๊ธฐ์์๋ containerd๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ฌ์ฉํ๋๋ก ์ผ๋ถ๋ฌ ๋ช ์๋ฅผ ํด์ค ๊ฒ. ์ฐธ๊ณ ๋ก ์ฟ ๋ฒ๋คํฐ์ค 1.24 ๋ฒ์ ๋ถํฐ๋ ๋์ปค ์์ง์ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค๊ณ ํจ. ํ์ฌ ๋ฒ์ ์ด 1.27์ด๊ธฐ ๋๋ฌธ์ ๋์ด์ ๋์ปค์์ง์ ํ์ฉํ ์ปจํ ์ด๋ ์ ์ด๋ ์ฟ ๋ฒ๋คํฐ์ค์์ ๋ถ๊ฐ๋ฅ - ์ถ์ฒ: ๊ณต์ ๋ฌธ์)
๋ง์คํฐ ๋ ธ๋์์ ์ด๊ธฐํ๊ฐ ์๋ฃ๋๋ฉด ํฐ๋ฏธ๋์์ ํ์ค์ถ๋ ฅ์ผ๋ก ์ฌ๋ฌ๊ฐ์ง ๋ด์ฉ์ด ๋์ค๋๋ฐ, ๊ทธ ํ์ค์ถ๋ ฅ์ ์๋ ๋ด์ฉ์ ์ฝ์ด๋ณด๋ฉด ์ถ๊ฐ์ ์ผ๋ก ํ์๋ก ์ค์ ํด์ฃผ์ด์ผ ํ๋ ๋ช ๋ น์ด๋ค์ด ์ฐ์ฌ์ ธ ์๋ค. ๊ทธ ๋ช ๋ น์ด๋ค์ ์ฐ์ํด์ ๋ง์คํฐ ๋ ธ๋์์ ์ํํด์ฃผ์.
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
์ด์ ๋์ปค ์ค์๊ณผ ์ ์ฌํ๊ฒ ๋ค๋ฅธ ์์ปค ๋ ธ๋์์ ๋ง์คํฐ ๋ ธ๋๋ก join ์ํฌ ์ ์๋ ๋ช ๋ น์ด๊ฐ ํ ํฐ๊ณผ ํจ๊ป ํฐ๋ฏธ๋์ ์ ๊ณต๋์์ ๊ฒ์ด๋ค. ํด๋น ๋ช ๋ น์ด๋ฅผ ํ์ฉํด์ ๊ฐ ์์ปค ๋ ธ๋ ๋จธ์ ์ผ๋ก ์ด๋ํด join ์์ผ์ฃผ๋๋ก ํ์.
$ kubeadm join 123.456.789.21:6443 \
--token [TOKEN] \
--cri-socket /run/containerd/containerd.sock
๋ง์ฝ ์ฟ ๋ฒ๋คํฐ์ค 1.24 ๋ฒ์ ์ดํ๋ฅผ ํ์ฉํ๊ฒ ๋๋ค๋ฉด ์์์ --cri-socket ์ต์ ์ ์ฌ์ฉํ์ง ์์๋ ๋ ๊ฒ์ด๋ค. ์๋ํ๋ฉด ๋ ์ด์ ๋์ปค ์์ง์ ํ์ฉํ๋ ์ปจํ ์ด๋ ์ ์ด ๊ธฐ๋ฅ์ด ์ง์๋์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.(๊ณต์ ๋ฌธ์)
๋ง์ง๋ง์ผ๋ก๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๋ด์ ์ปจํ ์ด๋๋ค ๊ฐ์ ํต์ ์ ์ํด flannel, weaveNet, calico๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ค๋ฒ๋ ์ด ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋๋ก ํด์ฃผ๋ ๊ฒ์ด๋ค. ์ฑ ์์์์๋ calico๋ฅผ ์ฌ์ฉํ๋ค. ๋ง์คํฐ ๋ ธ๋๋ก ์ด๋ํด์ ์๋ ๋ช ๋ น์ด๋ฅผ ํ์ฉํด calico ๋คํธ์ํฌ ํ๋ฌ๊ทธ์ธ์ ์ค์นํด์ฃผ์.
$ kubectl apply -f https://docs.projectcalico.org/v3.22/manifests/calico.yaml
๊ทธ๋ฐ๋ฐ ๋ง์ฝ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ด๊ธฐํํ ๋ --pod-network-cidr ์ต์ ์ 192.168.0.0/16์ด ์๋ ๋ณ๋์ IP ๋์ญ์ ์ค์ ํ๋ค๋ฉด calico.yaml ํ์ผ์ wget์ ํตํด ๋ค์ด๋ก๋ ๋ฐ์ ํ, ํด๋น ํ์ผ์ CALICO_IPV4POOL_CIDR ํ๊ฒฝ ๋ณ์์ ์ ๋ ฅํด์ค ๋ณ๋์ IP ๋์ญ์ ์ ๋ ฅํด์ฃผ์ด์ผ ํ๋ค. wget ๋ช ๋ น์ด๋ก ๋ค์ด๋ก๋ ๋ฐ๊ณ vim, nano ๋ฑ ํ ์คํธ ํธ์ง ์๋ํฐ๋ฅผ ์ด์ฉํด์ calico.yaml ํ์ผ์ ์์ ํ๋ฉด ๋๋ค.
$ wget https://docs.projectcalico.org/v3.22/manifests/calico.yaml
์ด์ ๋ชจ๋ ์ค์น๊ณผ์ ์ด ๋ค ๋์ด ๋ฌ๋ค. ์ ์์ ์ผ๋ก ์ ์ค์น๋์๋์ง ์ดํด๋ณด๊ธฐ ์ํด, ์๋ ๋ช ๋ น์ด๋ก ์ฟ ๋ฒ๋คํฐ์ค ํต์ฌ ์ปดํฌ๋ํธ๋ค์ ์คํ ๋ชฉ๋ก์ ํ์ธํ๋ค. ์ ๋ถ Running ์ด๋ผ๋ ํค์๋๊ฐ ๋ฑ์ฅํ๋ฉด ์ ์ค์น๋์๋ค๋ ๊ฒ์ด๋ค.
$ kubectl get pods --namespace kube-system
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ์๊น join ์ํจ ๋ ธ๋๋ค์ด ์ ์๋์ง ๋ณด๊ธฐ ์ํด ์๋ ๋ช ๋ น์ด๋ฅผ ํ์ฉํด ์ดํด๋ณด์.
$ kubectl get nodes
์ ํ๋ฉด์ฒ๋ผ ํด๋ฌ์คํฐ์ ๊ตฌ์ฑ ๋ ธ๋๋ค์ด ์ ๋ณด์ฌ์ง๋ ๊ฒ์ด ํ์ธ๋๋ค.
์ถ๊ฐ๋ก kubeadm ์ผ๋ก ์ค์น๋ ์ฟ ๋ฒ๋คํฐ์ค๋ ๊ฐ ๋ ธ๋์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด ์ญ์ ํ ์ ์๋ค. ๋ํ ์ฟ ๋ฒ๋คํฐ์ค ์ค์น ๋์ค ์๋ฌ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ํ ์คํธ์ฉ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ญ์ ํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ ์๋์ ๊ฐ๋ค.
$ kubeadm reset
๊ทธ๋ฆฌ๊ณ ํ์๋ ์ค์นํ๋ฉด์ ๊ฒช์๋ ์ฝ์ง..์ด์๋๋ฐ, ์ ๋ช ๋ น์ด๋ก ์ค์ฌ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ญ์ ํด์ค๋ค๊ณ ํ๋ค ํด๋น ์๋ฒ์ /etc/kubernetes/ ๋๋ ํ ๋ฆฌ์ ์ฌ๋ฌ๊ฐ์ง ์ค์ ๊ฐ์ด ์ญ์ ํ ํด๋ฌ์คํฐ์ ๊ธฐ์ค์ผ๋ก ๊ทธ๋๋ก ๋จ์์์ด์ ์๋กญ๊ฒ ํด๋ฌ์คํฐ๋ฅผ ์์ฑํ ๋ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋ฐ๋ผ์ ํด๋น ๋๋ ํฐ๋ฆฌ๋ฅผ ์ญ์ ํด์ฃผ๊ณ ๋ค์ ์ค์นํ๋ ๊ฒ๋ ํฐ ๋์์ด ๋ ๊ฒ์ด๋ค.
ํด๋น ๋ฐฉ๋ฒ๋ค ์ด์ธ์ kops๋ฅผ ํ์ฉํด์ AWS, GCP์์ ์ ๊ณตํ๋ VM ์๋ฒ์์ ์ง์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ๋ ์๊ณ , ์์ AWS์ EKS๋ GCP์ GKE์ ๊ฐ์ ๋งค๋์ง๋ ์๋น์ค๋ฅผ ํ์ฉํด์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ๋ ์๋ค. ์ด ๋ฐฉ๋ฒ๋ค์ ๋ํด์๋ ์ฑ ์ ์์ธํ๊ฒ ๋์์์ผ๋ฏ๋ก ๊ถ๊ธํ์ ๋ถ๋ค์ ์ฑ ์๋ณธ์ ํ์ธํด๋ณด๋๋ก ํ์. ์ด ํฌ์คํ ์์๋ ์๋ตํ๋๋ก ํ๋ค.
์ด๋ ๊ฒ ํด์ ์ด๋ฒ ํฌ์คํ ์ ํตํด ์ฟ ๋ฒ๋คํฐ์ค์ ๊ฐ๋ ์ด ๋ฌด์์ธ์ง, ๊ทธ๋ฆฌ๊ณ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์๋ค. ๋ค์ ํฌ์คํ ๋ถํฐ๋ ์ด์ ๋ณธ๊ฒฉ์ ์ธ ์ฟ ๋ฒ๋คํฐ์ค ํ์ฉ๋ฒ์ ๋ํด ํ์ตํด๋ณด๋๋ก ํ์.