์ฟ ๋ฒ๋คํฐ์ค์์๋ ์ค์ํ 2๊ฐ์ง ๊ฐ๋ ์ด ์กด์ฌํ๋ค.
- ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ
- ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ
์ฟ ๋ฒ๋คํฐ์ค๋ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์ค๋ธ์ ํธ ํํ๋ก ์ง์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฟ ๋ฒ๋คํฐ์ค๋ ํด๋น ์ค๋ธ์ ํธ ๋ฆฌ์์ค๋ค์ ํด๋ฌ์คํฐ์์ ๊ด๋ฆฌํ๋๋ฐ, ๋ณดํต ์ฐ๋ฆฌ๋ ํด๋ฌ์คํฐ๋ฅผ ์กฐ์ํ๊ธฐ ์ํด kubectl์ ์ด์ฉํ๊ฒ ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ
์ผ๋ฐ์ ์ผ๋ก ์๋ ๋ชจ๋ ์ํฉ์์ ์ฟ ๋ฒ๋คํฐ์ค๋ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์ค๋ธ์ ํธ ํํ๋ก ๊ด๋ฆฌํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ์ค๋ธ์ ํธ์ ์ํ๋ฅผ ์กฐ์ํ๊ณ ์ ์งํ๋ ๋จธ์ ์ด๋ฉฐ ์ค๋ธ์ ํธ๋ k8s ์์ ์์์ฑ์ ๊ฐ์ง๋ ๊ฐ์ฒด์ด๋ค.
์ฐ๋ฆฌ๋ ์ด๋ฌํ ์ค๋ธ์ ํธ๋ฅผ ์ด์ฉํด์ ๋ค์๊ณผ ๊ฐ์ ์ ๋ณด๋ค์ ๊ด๋ฆฌํ๊ณ ์ง์ ํ ์ ์๋ค.
- ์ด๋ค ์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์ ์ค์ธ์ง
- ํด๋น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ ํ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์๋์ง
- ํด๋น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ป๊ฒ ๋ฐฐํฌ๋๊ณ ์ ๋ฐ์ดํธ๋๋ฉฐ ์ค์ผ์ผ๋งํ ์ ์๋์ง
๊ฒฐ๊ตญ ์ฐ๋ฆฌ๋ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ํ๋ค๋ ๊ฒ์ ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ๋ฅผ ๊ด๋ฆฌ ํ๋ค๋ ๊ฒ์ผ๋ก ํด์ํ ์ ์๊ณ ์ฐ๋ฆฌ๋ ์ด ์ค๋ธ์ ํธ๋ค์ ์ ๊ด๋ฆฌํด์ผ ๋๋ ์๋ฌด๋ฅผ ์ํํด์ผ ํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ๋ฅผ ์กฐ์ํ๋ ๋ฐฉ๋ฒ
์์ด ์ฐ๋ฆฌ๋ ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ๋ฅผ ์ ๊ด๋ฆฌํด์ผ ํ๋ค ๋ผ๊ณ ํ๋ค.
์ด ๋ง์ ์ฆ, ์ค๋ธ์ ํธ๋ฅผ ์์ฑ, ์ญ์ , ์์ ์ ์ํด์ ์ง์์ ์ผ๋ก ์ํ ๊ฐ์ ๋ณ๊ฒฝํ๊ณ ์กฐ์ํด์ผ ํ๋ค๋ ์๋ฆฌ์ธ๋ฐ, ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ๋ฅผ ์กฐ์ํ๊ธฐ ์ํด์๋ ์ฟ ๋ฒ๋คํฐ์ค API๋ฅผ ์กฐ์ํด์ผ ํ๋๋ฐ, ๋ํ์ ์ผ๋ก kubectl ์ ์ด์ฉํ๊ณค ํ๋ค.
kubectl
์์ ์ด์ผ๊ธฐ ํ์๋ฏ ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ๋ฅผ ์กฐ์ํ๊ธฐ ์ํด์๋ ์ฐ๋ฆฌ๋ kubectl ์ ์ด์ฉํด์ผ ํ๋ค
์ ํํ๋ ์ฟ ๋ฒ๋คํฐ์ค API๋ฅผ ์กฐ์ํ๊ธฐ ์ํด์ kubectl ์ ์ฌ์ฉํ๋๋ฐ, kubectl ์ ๋ฌด์์ผ๊น?
kubectl์ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ ์ดํ๊ธฐ ์ํ ์ปค๋งจ๋๋ผ์ธ ๋๊ตฌ์ด๋ค.
์ฐ๋ฆฌ๋ kubectl ์ ์ด์ฉํด์ ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๊ณ ์์ ํ๋ฉฐ ์ญ์ ํ ์ ์๊ฒ ๋๋ค.
kubectl ๋ช ๋ น ๊ตฌ๋ฌธ
kubectl ์ ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ๋ช ๋ น์ ์ค ์ ์๋ค.
kubectl [command] [TYPE] [NAME] [flags]
- command
- ํ๋ ์ด์์ ๋ฆฌ์์ค์์ ์ํํ๋ ค๋ ๋์์ ์ง์
- apply, create, get, describe, delete
- TYPE
- ๋ฆฌ์์ค ํ์ ์ ์ง์
- ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ ๋จ์ํ, ๋ณต์ํ ํน์ ์ฝ์ด๋ฅผ ์ฌ์ฉํ ์ ์์
- pods, pod, services, service, svc ๋ฑ
- NAME
- ๋ฆฌ์์ค ์ด๋ฆ์ ์ง์ ํ๋ค.
- flags
- ์ ํ์ ์ผ๋ก ํ๋๊ทธ๋ฅผ ์ง์ ํ๋๋ฐ,
-s
์ต์ ์ด๋-o
์ต์ ๊ณผ ๊ฐ์ด ์ต์ ๊ฐ์ ์ค ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
- ์ ํ์ ์ผ๋ก ํ๋๊ทธ๋ฅผ ์ง์ ํ๋๋ฐ,
๋ง์ฝ ์ฟ ๋ฒ๋คํฐ์ค ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๋ค๋ฉด kubectl apply ...
ํํ๋ก ์ฌ์ฉํ๊ฒ ๋๋ค.
ํด๋น ๊ธ์์ ์ด์ผ๊ธฐ ํ๊ณ ์ ํ๋ ๊ฒ์ kubectl์ ๋ช ๋ น์ด๊ฐ ์๋๋ฏ๋ก ์์ธํ ๋ด์ฉ์ ํด๋น ๋ธ๋ก๊ทธ์ kubernetes ์นดํ ๊ณ ๋ฆฌ์ kubectl ๋ช ๋ น์ด ์น์ ์์ ํ์ธํด์ฃผ์ธ์
์ฐ๋ฆฌ๋ ์์ ๊ฐ์ด ๋ช ๋ น์ด๋ก kubectl ์ ์ด์ฉํ ์ ์์ง๋ง ๋๋ถ๋ถ ์ฐ๋ฆฌ๊ฐ ๊ตฌ์ฑํ๋ ค๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์กฐ๋ ๋งค์ฐ ๋ฐฉ๋ํ๋ค.
์๋น์ค๊ฐ 3๊ฐ ์ด์์์ ๋ง๊ฒ๋ 1์ฒ, 1๋ง ๊น์ง๋ ๋์ด๋ ์ ์๋๋ฐ, ์ด๋ค์ ๊ฐ๊ฐ ๋ช ๋ น์ด๋ก ์กฐ์ํ๋ค๋ ๊ฒ์ ๋งค์ฐ ๊ณ ํต์ค๋ฌ์ธ ๊ฒ์ด๋ค.
๋ณดํต yml ํ์ผ์ ์ด์ฉํด์ ์ค์ ํ๋ค.
๊ทธ๋์ ๋๋ถ๋ถ์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ํ๋ ์ฌ๋๋ค์ yml์ ์ ์์ฑํ๋ ๊ฒ์ด ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ ํ๋ ๊ธธ! ์ด๋ผ๊ณ ํํํ๊ธฐ๋ ํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ
์ด์ ๋๋ง์ ํด๋ฌ์คํฐ์ด๋ค.
์ฟ ๋ฒ๋คํฐ์ค์ ํด๋ฌ์คํฐ๋ ์ฟ ๋ฒ๋คํฐ์ค์ ํต์ฌ์ด๋ผ๊ณ ํ ์ ์๋ค.
ํ ๋ง๋๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ ์ํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ด๋ค.
์ปจํ ์ด๋ํ ๋ ์ ํ๋ฆฌ์ผ์ด์ (dockerized)์ ์คํํ๊ธฐ ์ํ ๋ ธ๋ ๋จธ์
์ฐ๋ฆฌ๋ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ ์ฌ์ฉํ ๊น?
๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ๋ง๋ ์ฌ๋ฌ ์ปจํ ์ด๋๋ค์ ์ ๊ด๋ฆฌํ ์ ์๊ฒ ํ๋ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ ์ํด์ ์ด๋ค.
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ๋ชฉ์ ๊ณผ ์ฐ๋ฆฌ๊ฐ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ๋ ๋ชฉ์ ๊ณผ ๋์ผํ๋ค. ์ด ๋ง์ ์ฆ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๊ฐ ์ฟ ๋ฒ๋คํฐ์ค์ ํต์ฌ์ด๋ผ๋ ์๋ฆฌ์ ๊ฐ์ผ๋ฉฐ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์คํํ๋ค๋ ๊ฒ์ ๋ฐ๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์คํํ๋ค๋ ๊ฒ๊ณผ ๊ฐ์ ๋ง์ด๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ์ปจํ ์ด๋๋ค์ ์์ ์์๋ณธ ์ค๋ธ์ ํธ ํํ๋ก ์ถ์ํํ์ฌ ํด๋ฌ์คํฐ ์ ์ฒด์์ ์ฌ์ฉํ๋๋ฐ, kubectl ์ ์ด์ฉํด์ ํด๋น ์ค๋ธ์ ํธ๋ฅผ ์กฐ์ํ๊ณ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ด์ฉํ๊ฒ ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค์ ํด๋ฌ์คํฐ ์์ 2๊ฐ์ง
์ฟ ๋ฒ๋คํฐ์ค์๋ 2๊ฐ์ง ํต์ฌ ์์์ด ํด๋ฌ์คํฐ์ ์กด์ฌํ๋ค.
- ์ปจ๋๋กค ํ๋ ์ธ
- ๋ ธ๋
์ปจํธ๋กค ํ๋ ์ธ : ํด๋ฌ์คํฐ๋ฅผ ์กฐ์จํ๋ผ
์ปจํธ๋กค ํ๋ ์ธ์ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ค.
๋ณดํต ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ผ์ค๋ง ํ๊ฑฐ๋ ํญ์์ฑ์ ์ ์งํ๊ณ ์ค์ผ์ผ๋ง์ ์ํํ๋ ์ผ์ ํ๋ค.
์ปจํธ๋กค ํ๋ ์ธ์ Kubernetes API ๋ฅผ ์ ๊ณตํ๋๋ฐ, ์์ ๋ณด์๋ kubectl ์ด ์ด์ฉํ๋ API์ ๋์ผํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค API
์ฟ ๋ฒ๋คํฐ์ค API๋ ์ปจํธ๋กค ํ๋ ์ธ์ด ์ ๊ณตํ๋ HTTP API ์๋ฒ์ด๋ค.
์ฐ๋ฆฌ๋ ํด๋น API๋ฅผ kubectl๋ก ์ด์ฉํ๋ฉด์ CLI๋ฅผ ํตํด์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์กฐ์ํ ์ ์๊ฒ ๋๋ค.
ํน์ REST API ํธ์ถ์ ์ด์ฉํด์ ์ง์ ์ ๊ทผํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ฐ, ์ด๋ ์ถํ์ ์์๋ณด์.
๋ ธ๋ : ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ๋์ ๋ด๋นํ๋ผ
๋ ธ๋๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๋ด ์์ปค (worker) ๋จธ์ ์ผ๋ก ๋์ํ๋ VM์ด๋ค.
๊ฐ๋จํ๊ฒ Container Runtime ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๊ฒฐ๊ตญ ๋ ธ๋๋ ์ค์ง์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ํค๋ ์ฃผ์ฒด๊ฐ ๋๊ณ , ์ฐ๋ฆฌ๋ ๋ ธ๋๋ฅผ ์ ๊ด๋ฆฌํด์ผ ํ๋ ๊ฒ์ด๋ค.
๋ ธ๋์ 2๊ฐ์ง ๊ตฌ์ฑ ์์
๋ ธ๋์๋ 2๊ฐ์ง ๊ตฌ์ฑ ์์๊ฐ ์กด์ฌํ๋ค.
- kubelet
- Container Runtime
kubelet์ ์ปจํธ๋กค ํ๋ ์ธ๊ณผ ํต์ ํ๋ ์์ด์ ํธ๋ก ์ปจํธ๋กค ํ๋ ์ธ์ด ์ ๊ณตํ๋ API๋ฅผ ์ด์ฉํด์ ์ฌ๋ฌ ์์ ์ ์ํํ๋ค.
์ด์์ ์ํด์๋ ์ต์ 3๋์ ๋ ธ๋๊ฐ ํ์ํ๋ค.
ํด๋ฌ์คํฐ ์ค์นํ๊ธฐ
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ค์นํ๋ค๋ ๊ฒ์ ์ฌ์ค์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ๋ค๋ ๋ง๊ณผ ๋์ผํ๋ฐ, 2๊ฐ์ง ํ๊ฒฝ์ ๋ฐ๋ผ์ ์ค์นํด์ผ ํ๋ ํด๋ฌ์คํฐ๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค.
์ฐ์ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ์ด์ ํ๊ฒฝ์ ๋ถ๋ฆฌํด์ ์๊ฐํด๋ณด๊ฒ ๋ค.
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ ๋ง์ ์ผ์ ์ํํด์ผ ํ๊ณ ๊ทธ ๋งํผ ๋ฌด๊ฒ๊ฒ ๋์๊ฐ๋ค.
ํ์ง๋ง ์ฐ๋ฆฌ๊ฐ ํ์ต์ ์ํด์ ํน์ ๋จ์ํ ํ ์คํธ๋ฅผ ์ํด์๋ผ๋ฉด ๊ทธ ๋ฌด๊ฑฐ์ด ํด๋ฌ์คํฐ๋ฅผ ๋ชจ๋ ๋ก๋ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๊ฐ ์ด์๊ณผ ๊ฐ๋ฐ์ ๋๋ ํ์๊ฐ ์๋ค.
๊ฐ๋ฐ ํ๊ฒฝ
๊ฐ๋ฐ ํ๊ฒฝ์์๋ ๋ํ์ ์ผ๋ก 2๊ฐ์ง๊ฐ ๋ง์ด ์ฌ์ฉ๋๋ค.
- Docker for Mac/Windows -> ์ค์น ๋ฐ๋ก๊ฐ๊ธฐ (๊ณต์ ๋ฌธ์)
- Minikube -> ์ค์น ๋ฐ๋ก๊ฐ๊ธฐ (๊ณต์ ๋ฌธ์)
๋์ปค๋ฅผ ์ํ ํ๊ฒฝ์ธ Docker for Mac ์ ์ค์นํ๋ฉด ์๋์ ์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค๋ ์ฌ์ฉํ ์ ์๋๋ฐ, docker for mac ์ preference ์์ enable ์์ผ์ฃผ๋ฉด ๋๋ค.
๊ฐ๋ฐ ํ๊ฒฝ์ ์ํ ํด๋ฌ์คํฐ๋ 1๊ฐ์ ๋ ธ๋์์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ๊ฒ ๋์ด ๊ทธ ๋งํผ ๊ฐ๋ณ๊ฒ ๋์๊ฐ๋ค.
ํ์ง๋ง ์ผ๋ถ ๊ธฐ๋ฅ๋ค์ด ์ ํ๋ ์ ์์ด ๋ ๋์ ์์ค์ ํ์ต๊ณผ ํ
์คํธ๋ฅผ ์ํด์๋ ์๋์์ ์ด์ผ๊ธฐ ํ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ผ๋ก ํ
์คํธํ๊ธฐ๋ ํ๋ค.
์ด์ ํ๊ฒฝ
์ด์ ํ๊ฒฝ์์๋ 2๊ฐ์ง ๋ถ๋ฅ๋ก ๋๋ ์ ์๋ค.
- ์์ฒด ์์์ ์ด์ฉํด์ ์ด์ํ๋ ์จํ๋ ๋ฏธ์ค(On-Premise) ํ๊ฒฝ
- ํด๋ผ์ฐ๋ ์์์ ์ด์ฉํ๋ ํด๋ผ์ฐ๋ ํ๋ซํผ ํ๊ฒฝ
์จํ๋ ๋ฏธ์ค(On-Premise) ํ๊ฒฝ
์์ฒด ์์์ ์ด์ฉํ๋ ์จํ๋ ๋ฏธ์ค์์๋ ์ธํ๋ผ์ ๋ํ ์ต์ ํ์ ๋ค์ํ ๊ธฐ๋ฅ์ ์ง์ ์กฐ์ํ ์ ์๊ฒ ์ง๋ง ๊ทธ ๋งํผ ๋์ ์์ค์ ์๋ฒ ์ธํ๋ผ์ ์ง์์ด ํ์ํ๋ค.
ํ์ต ๋ชฉ์ ์์๋ ์กฐ๊ธ ๋ง์ง ์๋ ๊ฒ ๊ฐ๋ค.
๋ํ์ ์ผ๋ก๋ kubespray, kubeadm ๋ฑ์ด ์กด์ฌํ๋ค.
ํด๋ผ์ฐ๋ ํ๋ซํผ ํ๊ฒฝ
์์ฆ ๋ง์ ํ์ฌ๋ค์ด SaaS ํํ์ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ณ ์๊ณ ์ฌ์ฉ ์ค์ ์๋ค.
ํด๋ฌ์คํฐ๋ฅผ ์ง์ ๊ตฌ์ฑํ๋๋ฐ ๋ง์ธ ๋ ธ๋ ฅ์ด ํ์ํ๊ณ ์ฃผ์๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ์์ Amazon ์์๋ EKS๋ผ๋ Saas ํํ์ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ผ์ฐ๋๋ฅผ ์ ๊ณตํ๋ค.
๋ํ์ ์ผ๋ก๋ EKS์ Google์ GKE๊ฐ ์กด์ฌํ๋ค.
๋๊ธ