Kubernetes
๐ ์ฟ ๋ฒ๋คํฐ์ค(Kubernetes) ๊ฐ์
1๏ธโฃ ์ฟ ๋ฒ๋คํฐ์ค๋?
์ฟ ๋ฒ๋คํฐ์ค(Kubernetes, K8s)๋ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ (Container Orchestration) ํ๋ซํผ์ผ๋ก, ๋ค์์ ์ปจํ ์ด๋๋ฅผ ์๋์ผ๋ก ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ๋ ์์คํ ์ด๋ค.
Google์ด ๋ด๋ถ์์ ์ฌ์ฉํ๋ Borg ์์คํ ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํ ์คํ์์ค ํ๋ก์ ํธ๋ก, ํ์ฌ๋ CNCF(Cloud Native Computing Foundation)์์ ๊ด๋ฆฌํ๊ณ ์๋ค.
๐น ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ๊ฐ๋
์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ ๋ค์์ ์ปจํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋์ผ๋ก ๋ฐฐํฌ, ํ์ฅ ๋ฐ ์ด์ํ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ฏธํ๋ค.
์ปจํ ์ด๋ ๋จ๋ ์คํ ํ๊ฒฝ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ์ ์ด ๋ฐ์ํ ์ ์๋ค:
- ์๋ ๊ด๋ฆฌ ๋ถ๋ด: ์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ๋ฐฐํฌํ๊ณ ์ ์ง๋ณด์ํ๋ ์์ ์ด ๋ณต์กํ๋ค.
- ์๋น์ค ํ์ฅ ์ด๋ ค์: ํธ๋ํฝ ์ฆ๊ฐ ์ ์ปจํ ์ด๋๋ฅผ ๋์ ์ผ๋ก ํ์ฅ(scale-out)ํ๊ธฐ ์ด๋ ต๋ค.
- ์ฅ์ ๋์ ๋ถ์กฑ: ์ปจํ ์ด๋๊ฐ ๊ฐ์๊ธฐ ์ข ๋ฃ๋๋ฉด, ์ด๋ฅผ ์๋์ผ๋ก ๋ณต๊ตฌํ๋ ๋ฉ์ปค๋์ฆ์ด ํ์ํ๋ค.
Kubernetes๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ํ๋ ์ปจํ ์ด๋ ๊ด๋ฆฌ ์์คํ ์ ์ ๊ณตํ๋ค.
๐น ์ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ํ์ํ๊ฐ? (Docker Swarm, Mesos ๋น๊ต)
์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ ์ํ ๋ค์ํ ์๋ฃจ์ ์ด ์กด์ฌํ์ง๋ง, Kubernetes๊ฐ ์ฌ์ค์ ์ ๊ณ ํ์ค์ผ๋ก ์๋ฆฌ ์ก์๋ค.
ํน์ง | Kubernetes | Docker Swarm | Apache Mesos |
---|---|---|---|
ํ์ฅ์ฑ | ๋๊ท๋ชจ ํด๋ฌ์คํฐ ์ง์, ๋ณต์กํ ์๋น์ค์๋ ์ ํฉ | ์๊ท๋ชจ ์๋น์ค์ ์ ํฉ, ๋๊ท๋ชจ ํ์ฅ ์ด๋ ค์ | ๋ค์ํ ์ํฌ๋ก๋ ์ง์, ๋น ๋ฐ์ดํฐ ๋ฐ VM๋ ๊ด๋ฆฌ ๊ฐ๋ฅ |
์๋ํ ๊ธฐ๋ฅ | ์๋ ๋ณต๊ตฌ, ์คํ ์ค์ผ์ผ๋ง, ํฌ์ค ์ฒดํฌ ์ง์ | ๊ธฐ๋ณธ์ ์ธ ์๋ํ ์ ๊ณต, ๊ธฐ๋ฅ์ด ์ ํ์ | ์ํฌ๋ก๋ ์๋ ๋ถ๋ฐฐ ๊ฐ๋ฅ |
๋คํธ์ํฌ ๋ชจ๋ธ | ๊ฐ๋ ฅํ ๋คํธ์ํฌ ์ ์ฑ ๋ฐ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ ์ง์ | ๊ฐ๋จํ ๋คํธ์ํฌ ๊ตฌ์กฐ | ๋คํธ์ํฌ ๊ตฌ์ฑ ์์ ๋กญ์ง๋ง ๋ณต์กํจ |
์ปค๋ฎค๋ํฐ & ์ง์ | ๊ฐ์ฅ ํ๋ฐํ ์คํ์์ค ํ๋ก์ ํธ, ๊ด๋ฒ์ํ ์ง์ | Docker ์ํ๊ณ์ ํตํฉ์ด ์ฌ์ | ํน์ ๊ธฐ์ (์: Twitter, Airbnb ๋ฑ) ์ค์ฌ์ ์ฌ์ฉ ์ฌ๋ก |
๐ Kubernetes๊ฐ ๋ ์ ํฉํ ๊ฒฝ์ฐ
- ๋ณต์กํ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ ์ด์
- ๋๊ท๋ชจ ํธ๋ํฝ์ ์ฒ๋ฆฌํด์ผ ํ๋ ์๋น์ค
- ๋ค์ํ ํ๊ฒฝ(์จํ๋ ๋ฏธ์ค, ํด๋ผ์ฐ๋ ๋ฑ)์์ ๋์ผํ ๋ฐฐํฌ ๋ฐฉ์ ์ ์ง
๐ Docker Swarm์ด ์ ํฉํ ๊ฒฝ์ฐ
- ๋น ๋ฅด๊ณ ๊ฐ๋จํ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ํ์
- Kubernetes์ ๋ณต์ก์ฑ์ ํผํ๊ณ ์ถ์ ๊ฒฝ์ฐ
๐ Apache Mesos๊ฐ ์ ํฉํ ๊ฒฝ์ฐ
- ์ปจํ ์ด๋๋ฟ๋ง ์๋๋ผ VM, ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊น์ง ํฌํจํ๋ ๋ณตํฉ์ ์ธ ํ๊ฒฝ ์ด์
๐น ์ฃผ์ ๊ธฐ๋ฅ ๋ฐ ํน์ง
Kubernetes๋ ์ปจํ ์ด๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
โ ์๋ ๋ฐฐํฌ ๋ฐ ์ค์ผ์ผ๋ง
- ์ํ๋ ๊ฐ์์ ์ปจํ ์ด๋๋ฅผ ๋ฐฐํฌํ๊ณ , ํธ๋ํฝ์ ๋ฐ๋ผ ์๋์ผ๋ก ํ์ฅ/์ถ์ ๊ฐ๋ฅ
- HPA(Horizontal Pod Autoscaler)๋ฅผ ์ฌ์ฉํ์ฌ CPU, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ฐ๋ผ ์๋ ์กฐ์
โ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ & ๋ก๋ ๋ฐธ๋ฐ์ฑ
- Pod์ IP ๋ณ๊ฒฝ ์์ด ์๋น์ค ์ด๋ฆ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅ
- ์ธ๋ถ ํธ๋ํฝ์ ๊ด๋ฆฌํ๋ Ingress ๊ธฐ๋ฅ ์ ๊ณต
โ ์๋ ๋ณต๊ตฌ(Self-healing)
- ์ฅ์ ๋ฐ์ ์ ์ปจํ ์ด๋๋ฅผ ์๋์ผ๋ก ์ฌ์์
- ํฌ์ค ์ฒดํฌ(Liveness, Readiness Probe)๋ฅผ ํตํด ์ํ ํ์ธ
โ ์คํ ๋ฆฌ์ง ์ค์ผ์คํธ๋ ์ด์
- ๋ก์ปฌ ๋ณผ๋ฅจ, ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง(GCP, AWS, Azure) ์ง์
- PVC(Persistent Volume Claim)์ผ๋ก ๋์ ์คํ ๋ฆฌ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ
โ ๋ณด์ ๋ฐ ์ ๊ทผ ์ ์ด
- RBAC(Role-Based Access Control)๋ก ์ฌ์ฉ์ ๊ถํ ๊ด๋ฆฌ
- ๋คํธ์ํฌ ์ ์ฑ (Network Policy)์ผ๋ก Pod ๊ฐ ํต์ ์ ์ด
โ ๋ฉํฐ ํด๋ฌ์คํฐ ๋ฐ ํ์ด๋ธ๋ฆฌ๋ ํด๋ผ์ฐ๋ ์ง์
- ์จํ๋ ๋ฏธ์ค์ ํด๋ผ์ฐ๋๋ฅผ ํผํฉํ ํ์ด๋ธ๋ฆฌ๋ ํ๊ฒฝ์์๋ ์ด์ ๊ฐ๋ฅ