Ver3.0 ๐ Kubernetes ์ํคํ ์ฒ ๊ตฌ์กฐ ํ๋์ ๋ณด๊ธฐ

๐ Kubernetes ์ํคํ ์ฒ ๊ตฌ์กฐ ํ๋์ ๋ณด๊ธฐ
์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ ํต์ฌ, ์ฟ ๋ฒ๋คํฐ์ค์ ๋ด๋ถ๋ฅผ ํํค์ณ๋ณด์!
๐ ์๋
! ์์ฆ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํ๊ฒฝ์์ ๋น ์ง ์ ์๋ ๊ฒ ๋ฐ๋ก Kubernetes(์ฟ ๋ฒ๋คํฐ์ค)์ง? ์ค์ฌ์ K8s๋ผ๊ณ ๋ ๋ถ๋ฅด๋๋ฐ, ์ด ์น๊ตฌ๊ฐ ์ ์ด๋ ๊ฒ ํซํ์ง, ๊ทธ๋ฆฌ๊ณ ๋ด๋ถ ๊ตฌ์กฐ๋ ์ด๋ป๊ฒ ์๊ฒผ๋์ง ๊ถ๊ธํ์ง ์์? ๐
์ค๋์ ์ฟ ๋ฒ๋คํฐ์ค์ ์ํคํ
์ฒ๋ฅผ ์น๊ตฌํํ
์ค๋ช
ํ๋ฏ์ด ์ฝ๊ณ ์ฌ๋ฏธ์๊ฒ ํ์ด๋ณผ ๊ฑฐ์ผ. ๋ณต์กํด ๋ณด์ด์ง๋ง ํ๋ํ๋ ๋ฏ์ด๋ณด๋ฉด ์ ๋ง ๋
ผ๋ฆฌ์ ์ด๊ณ ๋ฉ์ง ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ฑฐ๋ ! ๐ฏ
๐ฏ Kubernetes๊ฐ ๋ญ๊ธธ๋?
๋ณธ๊ฒฉ์ ์ผ๋ก ์ํคํ
์ฒ๋ฅผ ์ดํด๋ณด๊ธฐ ์ ์, ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ ํํ ๋ญํ๋ ๋
์์ธ์ง ์ง๊ณ ๋์ด๊ฐ์! ๐ค
์ฟ ๋ฒ๋คํฐ์ค๋ ์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ด์
ํ๋ซํผ์ด์ผ. ์ฝ๊ฒ ๋งํด์ ์๋ง์ ์ปจํ
์ด๋๋ค์ ์๋์ผ๋ก ๊ด๋ฆฌํด์ฃผ๋ ์งํ์ ๊ฐ์ ์กด์ฌ์ง. ๋ง์น ์ค์ผ์คํธ๋ผ์ ์งํ์๊ฐ ๊ฐ ์
๊ธฐ ์ฐ์ฃผ์๋ค์ ์กฐ์จํ๋ฏ์ด, ์ฟ ๋ฒ๋คํฐ์ค๋ ์ฌ๋ฌ ์ปจํ
์ด๋๋ค์ ๋ฐฐํฌํ๊ณ , ์ค์ผ์ผ๋งํ๊ณ , ๊ด๋ฆฌํ๋ ์ญํ ์ ํด.
์๋ ๊ตฌ๊ธ์์ ๊ฐ๋ฐํ๊ณ , 2014๋
์ ์คํ์์ค๋ก ๊ณต๊ฐ๋์ด. ์ง๊ธ์ CNCF(Cloud Native Computing Foundation)์์ ๊ด๋ฆฌํ๊ณ ์์ง. ๐ช
โข ์๋ ์ค์ผ์ผ๋ง: ํธ๋ํฝ ์ฆ๊ฐํ๋ฉด ์๋์ผ๋ก ์ปจํ ์ด๋ ๋๋ฆฌ๊ณ , ์ค์ด๋ค๋ฉด ์ค์ฌ์ค
โข ์๊ฐ ์น์ (Self-healing): ์ปจํ ์ด๋ ์ฃฝ์ผ๋ฉด ์๋์ผ๋ก ์ฌ์์
โข ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ์ ๋ก๋ ๋ฐธ๋ฐ์ฑ: ์ปจํ ์ด๋๋ค ๊ฐ์ ํต์ ์ ์๋์ผ๋ก ๊ด๋ฆฌ
โข ์คํ ๋ฆฌ์ง ์ค์ผ์คํธ๋ ์ด์ : ๋ก์ปฌ, ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง ์๋ ๋ง์ดํธ
๐๏ธ Kubernetes ์ํคํ ์ฒ์ ํฐ ๊ทธ๋ฆผ
์, ์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๋ค์ฌ๋ค๋ณผ ์๊ฐ์ด์ผ! ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ ํฌ๊ฒ ๋ ๋ถ๋ถ์ผ๋ก ๋๋์ด:
1. Control Plane (์ปจํธ๋กค ํ๋ ์ธ) - ๋๋ ์ญํ ๐ง
2. Worker Nodes (์์ปค ๋
ธ๋) - ์ค์ ์ผํ๋ ์ผ๊พผ๋ค ๐ช
Control Plane์ ํด๋ฌ์คํฐ ์ ์ฒด๋ฅผ ๊ด๋ฆฌํ๊ณ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๊ด๋ฆฌ์ ์ญํ ์ด๊ณ , Worker Nodes๋ ์ค์ ๋ก ์ปจํ
์ด๋๋ฅผ ์คํํ๋ ์์
์๋ค์ด์ผ. ํ์ฌ๋ก ์น๋ฉด ๊ฒฝ์์ง๊ณผ ์ค๋ฌด์ง์ ๊ด๊ณ๋ผ๊ณ ๋ณด๋ฉด ๋ผ! ๐
๐ช ํด๋ฌ์คํฐ(Cluster)๋?
์ฟ ๋ฒ๋คํฐ์ค์์ ํด๋ฌ์คํฐ๋ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์คํํ๋ ๋ ธ๋(์๋ฒ)๋ค์ ์งํฉ์ ๋งํด. ์ต์ 1๊ฐ์ Control Plane ๋ ธ๋์ 1๊ฐ ์ด์์ Worker ๋ ธ๋๋ก ๊ตฌ์ฑ๋์ง. ํ๋ก๋์ ํ๊ฒฝ์์๋ ๊ณ ๊ฐ์ฉ์ฑ(HA)์ ์ํด Control Plane๋ ์ฌ๋ฌ ๊ฐ ๊ตฌ์ฑํ๋ ๊ฒ ์ผ๋ฐ์ ์ด์ผ!
๐ง Control Plane ์ปดํฌ๋ํธ ์์ธ ๋ถ์
Control Plane์ ํด๋ฌ์คํฐ์ ๋๋์ผ. ์ฌ๊ธฐ์ ๋ชจ๋ ์ค์ํ ๊ฒฐ์ ์ด ์ด๋ฃจ์ด์ง์ง. Control Plane์ ์ฌ๋ฌ ๊ฐ์ ํต์ฌ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋์ด ์์ด. ํ๋์ฉ ์์ธํ ์ดํด๋ณด์! ๐
1๏ธโฃ kube-apiserver (API ์๋ฒ)
์ญํ : ์ฟ ๋ฒ๋คํฐ์ค์ ํ๋ก ํธ์๋์ด์ ์ค์ ํ๋ธ
API ์๋ฒ๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ๋ชจ๋ ํต์ ์ด ์ง๋๊ฐ๋ ๊ด๋ฌธ์ด์ผ. ์ฌ์ฉ์๊ฐ kubectl ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ , ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค์ด ์๋ก ํต์ ํ๋ , ๋ชจ๋ ์์ฒญ์ API ์๋ฒ๋ฅผ ๊ฑฐ์ณ์ผ ํด. ๐ช
์ฃผ์ ๊ธฐ๋ฅ:
โข REST API๋ฅผ ํตํ ํด๋ฌ์คํฐ ์ํ ๋
ธ์ถ
โข ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ(Authorization) ์ฒ๋ฆฌ
โข ์์ฒญ ๊ฒ์ฆ(Validation)
โข etcd์์ ์ ์ผํ ํต์ ์ฐฝ๊ตฌ
โข ๋ชจ๋ ์ปดํฌ๋ํธ ๊ฐ ํต์ ์ ์ค๊ฐ์
API ์๋ฒ๋ ์ํ ํ์ฅ์ด ๊ฐ๋ฅํด์, ํธ๋ํฝ์ด ๋ง์ผ๋ฉด ์ฌ๋ฌ ๊ฐ์ API ์๋ฒ๋ฅผ ๋์์ ๋ก๋ ๋ฐธ๋ฐ์ฑํ ์ ์์ด. ์ค์ ๋ก ๋๊ท๋ชจ ํด๋ฌ์คํฐ์์๋ 3๊ฐ ์ด์์ API ์๋ฒ๋ฅผ ์ด์ํ๋ ๊ฒ ์ผ๋ฐ์ ์ด์ง! ๐
2๏ธโฃ etcd (๋ถ์ฐ ํค-๊ฐ ์ ์ฅ์)
์ญํ : ํด๋ฌ์คํฐ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
etcd๋ ์ฟ ๋ฒ๋คํฐ์ค์ ๋ชจ๋ ํด๋ฌ์คํฐ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ์ผ๊ด์ฑ ์๊ณ ๊ณ ๊ฐ์ฉ์ฑ์ ๊ฐ์ง ํค-๊ฐ ์ ์ฅ์์ผ. ํด๋ฌ์คํฐ์ "์ง์ค์ ์์ฒ(Source of Truth)"์ด๋ผ๊ณ ํ ์ ์์ง! ๐
์ ์ฅํ๋ ์ ๋ณด:
โข ํด๋ฌ์คํฐ ์ค์ ์ ๋ณด
โข ๋ชจ๋ ๋ฆฌ์์ค์ ์ํ (Pod, Service, Deployment ๋ฑ)
โข ๋คํธ์ํฌ ์ค์
โข ์ํฌ๋ฆฟ(Secret)๊ณผ ์ปจํผ๊ทธ๋งต(ConfigMap)
etcd๋ Raft ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํด. ๊ทธ๋์ ์ฌ๋ฌ ๊ฐ์ etcd ์ธ์คํด์ค๋ฅผ ํด๋ฌ์คํฐ๋ก ๊ตฌ์ฑํ๋ฉด, ์ผ๋ถ๊ฐ ์ฃฝ์ด๋ ๋ฐ์ดํฐ๊ฐ ์์ ํ๊ฒ ๋ณด์กด๋ผ. ๋ณดํต 3๊ฐ ๋๋ 5๊ฐ์ ํ์ ๊ฐ๋ก ๊ตฌ์ฑํ๋ ๊ฒ ๊ถ์ฅ์ฌํญ์ด์ผ! ๐
โ ๏ธ ์ค์: etcd๋ ๋งค์ฐ ์ค์ํ ์ปดํฌ๋ํธ๋ผ์ ์ ๊ธฐ์ ์ธ ๋ฐฑ์
์ด ํ์์ผ. etcd ๋ฐ์ดํฐ๊ฐ ๋ ์๊ฐ๋ฉด ํด๋ฌ์คํฐ ์ ์ฒด๋ฅผ ์๋ ๊ฑฐ๋ ๋ง์ฐฌ๊ฐ์ง๊ฑฐ๋ !
3๏ธโฃ kube-scheduler (์ค์ผ์ค๋ฌ)
์ญํ : ์๋ก์ด Pod๋ฅผ ์ด๋ ๋
ธ๋์ ๋ฐฐ์นํ ์ง ๊ฒฐ์ ํ๋ ๋ฐฐ์น ์ ๋ฌธ๊ฐ
์ค์ผ์ค๋ฌ๋ ์์ง ๋
ธ๋์ ํ ๋น๋์ง ์์ ์๋ก์ด Pod๋ฅผ ๊ฐ์งํ๊ณ , ๊ทธ Pod๋ฅผ ์คํํ ์ต์ ์ ๋
ธ๋๋ฅผ ์ ํํ๋ ์ญํ ์ ํด. ๋ง์น ํ
ํธ๋ฆฌ์ค ๊ฒ์์์ ๋ธ๋ก์ ์ด๋์ ๋์์ง ๊ฒฐ์ ํ๋ ๊ฒ๊ณผ ๋น์ทํด! ๐ฎ
์ค์ผ์ค๋ง ๊ณ ๋ ค ์ฌํญ:
โข ๋
ธ๋์ ๋ฆฌ์์ค ๊ฐ์ฉ์ฑ (CPU, ๋ฉ๋ชจ๋ฆฌ)
โข Pod์ ๋ฆฌ์์ค ์๊ตฌ์ฌํญ๊ณผ ์ ํ
โข ํ๋์จ์ด/์ํํธ์จ์ด ์ ์ฝ ์กฐ๊ฑด
โข ์ดํผ๋ํฐ(Affinity)์ ์ํฐ-์ดํผ๋ํฐ(Anti-affinity) ๊ท์น
โข ๋ฐ์ดํฐ ์ง์ญ์ฑ(Data locality)
โข ํ
์ธํธ(Taint)์ ํจ๋ฌ๋ ์ด์
(Toleration)
์ค์ผ์ค๋ฌ๋ 2๋จ๊ณ ํ๋ก์ธ์ค๋ก ์๋ํด:
1. ํํฐ๋ง(Filtering): Pod๋ฅผ ์คํํ ์ ์๋ ๋
ธ๋๋ค์ ์ ์ธ
2. ์ค์ฝ์ด๋ง(Scoring): ๋จ์ ๋
ธ๋๋ค์ ์ ์๋ฅผ ๋งค๊ฒจ์ ๊ฐ์ฅ ์ ํฉํ ๋
ธ๋ ์ ํ
์ปค์คํ
์ค์ผ์ค๋ฌ๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ ์๋ ์์ด. ํน๋ณํ ์ค์ผ์ค๋ง ๋ก์ง์ด ํ์ํ ๊ฒฝ์ฐ์ ์ ์ฉํ์ง! ๐ฏ
4๏ธโฃ kube-controller-manager (์ปจํธ๋กค๋ฌ ๋งค๋์ )
์ญํ : ์ฌ๋ฌ ๊ฐ์ ์ปจํธ๋กค๋ฌ๋ค์ ์คํํ๋ ๊ด๋ฆฌ์
์ปจํธ๋กค๋ฌ ๋งค๋์ ๋ ์ฌ์ค ์ฌ๋ฌ ๊ฐ์ ์ปจํธ๋กค๋ฌ๋ฅผ ํ๋์ ํ๋ก์ธ์ค๋ก ๋ฌถ์ด์ ์คํํ๋ ์ปดํฌ๋ํธ์ผ. ๊ฐ ์ปจํธ๋กค๋ฌ๋ ํด๋ฌ์คํฐ์ ํน์ ์ธก๋ฉด์ ๊ด๋ฆฌํ๋ ์ ์ด ๋ฃจํ(Control Loop)๋ฅผ ์คํํด. ๐
์ฃผ์ ์ปจํธ๋กค๋ฌ๋ค:
โข Node Controller: ๋
ธ๋์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ , ๋
ธ๋๊ฐ ๋ค์ด๋๋ฉด ๋์
โข Replication Controller: ์ง์ ๋ ์์ Pod ๋ณต์ ๋ณธ์ด ํญ์ ์คํ๋๋๋ก ๋ณด์ฅ
โข Endpoints Controller: Service์ Pod๋ฅผ ์ฐ๊ฒฐํ๋ Endpoints ๊ฐ์ฒด ๊ด๋ฆฌ
โข Service Account & Token Controllers: ์ ๋ค์์คํ์ด์ค์ ๋ํ ๊ธฐ๋ณธ ๊ณ์ ๊ณผ API ์ก์ธ์ค ํ ํฐ ์์ฑ
โข Deployment Controller: Deployment ๋ฆฌ์์ค ๊ด๋ฆฌ
โข Job Controller: ์ผํ์ฑ ์์
์ ๋ํ๋ด๋ Job ๊ฐ์ฒด ๊ด๋ฆฌ
์ปจํธ๋กค๋ฌ๋ค์ "ํ์ฌ ์ํ"๋ฅผ "์ํ๋ ์ํ"๋ก ๋ง๋ค๊ธฐ ์ํด ๋์์์ด ์๋ํด. ์๋ฅผ ๋ค์ด, Deployment์์ replica๋ฅผ 3์ผ๋ก ์ค์ ํ๋๋ฐ Pod๊ฐ 2๊ฐ๋ง ์คํ ์ค์ด๋ฉด, ์ปจํธ๋กค๋ฌ๊ฐ ์๋์ผ๋ก 1๊ฐ๋ฅผ ๋ ์์ฑํ๋ ์์ด์ง! ๐๏ธ
5๏ธโฃ cloud-controller-manager (ํด๋ผ์ฐ๋ ์ปจํธ๋กค๋ฌ ๋งค๋์ )
์ญํ : ํด๋ผ์ฐ๋ ์ ๊ณต์๋ณ ๋ก์ง์ ์ฒ๋ฆฌํ๋ ์ปจํธ๋กค๋ฌ
ํด๋ผ์ฐ๋ ํ๊ฒฝ(AWS, GCP, Azure ๋ฑ)์์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์คํํ ๋๋ง ์ฌ์ฉ๋๋ ์ปดํฌ๋ํธ์ผ. ํด๋ผ์ฐ๋ ์ ๊ณต์์ API์ ์ํธ์์ฉํ๋ฉด์ ํด๋ผ์ฐ๋ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ์ง. โ๏ธ
์ฃผ์ ์ปจํธ๋กค๋ฌ๋ค:
โข Node Controller: ํด๋ผ์ฐ๋์์ ๋
ธ๋๊ฐ ์ญ์ ๋์๋์ง ํ์ธ
โข Route Controller: ํด๋ผ์ฐ๋ ์ธํ๋ผ์์ ๋ผ์ฐํธ ์ค์
โข Service Controller: ํด๋ผ์ฐ๋ ๋ก๋ ๋ฐธ๋ฐ์ ์์ฑ/์
๋ฐ์ดํธ/์ญ์
์จํ๋ ๋ฏธ์ค ํ๊ฒฝ์์๋ ์ด ์ปดํฌ๋ํธ๊ฐ ํ์ ์์ด!
๐ช Worker Node ์ปดํฌ๋ํธ ์์ธ ๋ถ์
์ด์ ์ค์ ๋ก ์ปจํ ์ด๋๊ฐ ์คํ๋๋ Worker Node์ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด์! Worker Node๋ ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ํฌ๋ก๋๋ฅผ ์คํํ๋ ๊ณณ์ด์ผ. ๊ฐ Worker Node์๋ ๋ค์ ์ปดํฌ๋ํธ๋ค์ด ์คํ๋๊ณ ์์ด. ๐
1๏ธโฃ kubelet (ํ๋ธ๋ฆฟ)
์ญํ : ๊ฐ ๋
ธ๋์์ ์คํ๋๋ ์์ด์ ํธ, Pod ์คํ์ ์ฑ
์์ง
kubelet์ ๊ฐ Worker Node์์ ์คํ๋๋ ๊ฐ์ฅ ์ค์ํ ์ปดํฌ๋ํธ์ผ. Control Plane๊ณผ ํต์ ํ๋ฉด์ ํด๋น ๋
ธ๋์์ Pod๋ฅผ ์คํํ๊ณ ๊ด๋ฆฌํ๋ ์ญํ ์ ํด. ๋
ธ๋์ "ํ์ฅ ๊ด๋ฆฌ์"๋ผ๊ณ ์๊ฐํ๋ฉด ๋ผ! ๐ท
์ฃผ์ ๊ธฐ๋ฅ:
โข API ์๋ฒ๋ก๋ถํฐ PodSpec์ ๋ฐ์์ Pod ์คํ
โข ์ปจํ
์ด๋๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๊ณ ์๋์ง ๋ชจ๋ํฐ๋ง
โข ์ปจํ
์ด๋ ๋ฐํ์๊ณผ ํต์ ํ์ฌ ์ปจํ
์ด๋ ์์ฑ/์ญ์
โข ๋
ธ๋์ Pod์ ์ํ๋ฅผ API ์๋ฒ์ ๋ณด๊ณ
โข ๋ณผ๋ฅจ ๋ง์ดํธ ๊ด๋ฆฌ
โข ๋ฆฌ์์ค ์ฌ์ฉ๋ ๋ชจ๋ํฐ๋ง
kubelet์ ์ฌ๋ฌ ์์ค๋ก๋ถํฐ PodSpec์ ๋ฐ์ ์ ์์ด:
โข API ์๋ฒ (๊ฐ์ฅ ์ผ๋ฐ์ )
โข ๋ก์ปฌ ํ์ผ ์์คํ
โข HTTP ์๋ํฌ์ธํธ
kubelet์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ปจํ
์ด๋์ ํฌ์ค ์ฒดํฌ๋ฅผ ์ํํด. Liveness Probe์ Readiness Probe๋ฅผ ํตํด ์ปจํ
์ด๋๊ฐ ์ด์์๋์ง, ํธ๋ํฝ์ ๋ฐ์ ์ค๋น๊ฐ ๋์๋์ง ํ์ธํ์ง! ๐ฅ
2๏ธโฃ kube-proxy (ํ๋ธ ํ๋ก์)
์ญํ : ๊ฐ ๋
ธ๋์์ ๋คํธ์ํฌ ๊ท์น์ ๊ด๋ฆฌํ๋ ๋คํธ์ํฌ ํ๋ก์
kube-proxy๋ ์ฟ ๋ฒ๋คํฐ์ค Service์ ๋คํธ์ํฌ ๊ท์น์ ๊ตฌํํ๋ ์ปดํฌ๋ํธ์ผ. Service๋ก ๋ค์ด์ค๋ ํธ๋ํฝ์ ์ ์ ํ Pod๋ก ์ ๋ฌํ๋ ์ญํ ์ ํ์ง. ๋คํธ์ํฌ ํธ๋ํฝ์ "๊ตํต ๊ฒฝ์ฐฐ"์ด๋ผ๊ณ ํ ์ ์์ด! ๐ฆ
์ฃผ์ ๊ธฐ๋ฅ:
โข Service์ ๊ฐ์ IP๋ฅผ ์ค์ Pod IP๋ก ๋งคํ
โข ๋ก๋ ๋ฐธ๋ฐ์ฑ ๊ตฌํ
โข ๋คํธ์ํฌ ๊ท์น ์ ์ง ๊ด๋ฆฌ
kube-proxy๋ ์ฌ๋ฌ ๋ชจ๋๋ก ๋์ํ ์ ์์ด:
โข userspace ๋ชจ๋: ์ด๊ธฐ ๋ฒ์ ์์ ์ฌ์ฉ, ์ฑ๋ฅ์ด ๋ฎ์
โข iptables ๋ชจ๋: ๊ฐ์ฅ ์ผ๋ฐ์ , Linux iptables ๊ท์น ์ฌ์ฉ
โข IPVS ๋ชจ๋: ๋๊ท๋ชจ ํด๋ฌ์คํฐ์ ์ ํฉ, ๋ ๋์ ์ฑ๋ฅ๊ณผ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์๊ณ ๋ฆฌ์ฆ
์ต์ ์ฟ ๋ฒ๋คํฐ์ค์์๋ iptables ๋๋ IPVS ๋ชจ๋๋ฅผ ์ฃผ๋ก ์ฌ์ฉํด. IPVS๋ ํนํ ๋ง์ ์์ Service๊ฐ ์์ ๋ ์ฑ๋ฅ์ด ํจ์ฌ ์ข์! โก
3๏ธโฃ Container Runtime (์ปจํ ์ด๋ ๋ฐํ์)
์ญํ : ์ค์ ๋ก ์ปจํ
์ด๋๋ฅผ ์คํํ๋ ์ํํธ์จ์ด
์ปจํ
์ด๋ ๋ฐํ์์ ์ปจํ
์ด๋๋ฅผ ์คํํ๋ ์ ์์ค ์ํํธ์จ์ด์ผ. kubelet์ด ์ปจํ
์ด๋๋ฅผ ์คํํ๋ผ๊ณ ๋ช
๋ นํ๋ฉด, ์ค์ ๋ก ๊ทธ ์์
์ ์ํํ๋ ๊ฒ ์ปจํ
์ด๋ ๋ฐํ์์ด์ง! ๐ณ
์ง์๋๋ ์ปจํ
์ด๋ ๋ฐํ์:
โข containerd: ํ์ฌ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐํ์, Docker์์ ๋ถ๋ฆฌ๋จ
โข CRI-O: ์ฟ ๋ฒ๋คํฐ์ค ์ ์ฉ์ผ๋ก ์ค๊ณ๋ ๊ฒฝ๋ ๋ฐํ์
โข Docker Engine: ๊ณผ๊ฑฐ์ ๋ง์ด ์ฌ์ฉํ์ง๋ง, 1.24 ๋ฒ์ ๋ถํฐ ๊ณต์ ์ง์ ์ค๋จ
์ฟ ๋ฒ๋คํฐ์ค๋ CRI(Container Runtime Interface)๋ผ๋ ํ์ค ์ธํฐํ์ด์ค๋ฅผ ์ ์ํด์, ๋ค์ํ ์ปจํ
์ด๋ ๋ฐํ์์ ํ๋ฌ๊ทธ์ธ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์์ด. ๋๋ถ์ ํน์ ๋ฐํ์์ ์ข
์๋์ง ์๊ณ ์ ์ฐํ๊ฒ ์ ํํ ์ ์์ง! ๐
์ฐธ๊ณ : Docker๊ฐ ์ฟ ๋ฒ๋คํฐ์ค์์ ๊ณต์ ์ง์์ด ์ค๋จ๋๋ค๊ณ ํด์ Docker ์ด๋ฏธ์ง๋ฅผ ๋ชป ์ฐ๋ ๊ฑด ์๋์ผ! Docker ์ด๋ฏธ์ง๋ OCI(Open Container Initiative) ํ์ค์ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ containerd๋ CRI-O์์๋ ๋ฌธ์ ์์ด ์คํ๋ผ. ๐
๐ Kubernetes์ ๋์ ์๋ฆฌ
์ด์ ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ์์์ผ๋, ์ค์ ๋ก ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ์ ์ฒด ํ๋ฆ์ ์ดํด๋ณด์! ์๋ฅผ ๋ค์ด, ์๋ก์ด Deployment๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ๋ฐ๋ผ๊ฐ ๋ณด๋ฉด ์ดํด๊ฐ ์ฌ์ธ ๊ฑฐ์ผ. ๐ฌ
๐ ์๋๋ฆฌ์ค: Deployment ์์ฑ ๊ณผ์
1๋จ๊ณ: ์ฌ์ฉ์๊ฐ ๋ช
๋ น ์คํ ๐
์ฌ์ฉ์๊ฐ kubectl create deployment nginx --image=nginx ๋ช
๋ น์ ์คํํด.
2๋จ๊ณ: API ์๋ฒ๊ฐ ์์ฒญ ์์ ๐จ
kubectl์ด API ์๋ฒ์ HTTP ์์ฒญ์ ๋ณด๋ด. API ์๋ฒ๋ ์์ฒญ์ ์ธ์ฆํ๊ณ , ๊ถํ์ ํ์ธํ๊ณ , ์์ฒญ์ ๊ฒ์ฆํด.
3๋จ๊ณ: etcd์ ์ ์ฅ ๐พ
API ์๋ฒ๊ฐ Deployment ๊ฐ์ฒด๋ฅผ etcd์ ์ ์ฅํด. ์ด ์์ ์์ Deployment๋ ์์ฑ๋์ง๋ง, ์์ง Pod๋ ์คํ๋์ง ์์์ด.
4๋จ๊ณ: Deployment Controller๊ฐ ๊ฐ์ง ๐
Deployment Controller๊ฐ ์๋ก์ด Deployment๋ฅผ ๊ฐ์งํ๊ณ , ReplicaSet์ ์์ฑํด. ReplicaSet ์ ๋ณด๋ etcd์ ์ ์ฅ๋ผ.
5๋จ๊ณ: ReplicaSet Controller๊ฐ ๊ฐ์ง ๐
ReplicaSet Controller๊ฐ ์๋ก์ด ReplicaSet์ ๊ฐ์งํ๊ณ , ์ง์ ๋ ์๋งํผ Pod๋ฅผ ์์ฑํด. Pod ์ ๋ณด๊ฐ etcd์ ์ ์ฅ๋์ง๋ง, ์์ง ์ด๋ ๋
ธ๋์ ๋ฐฐ์นํ ์ง๋ ๊ฒฐ์ ๋์ง ์์์ด.
6๋จ๊ณ: Scheduler๊ฐ ๋
ธ๋ ์ ํ ๐ฏ
Scheduler๊ฐ ์์ง ๋
ธ๋์ ํ ๋น๋์ง ์์ Pod๋ฅผ ๊ฐ์งํ๊ณ , ์ต์ ์ ๋
ธ๋๋ฅผ ์ ํํด์ Pod์ ๋
ธ๋ ์ ๋ณด๋ฅผ ํ ๋นํด. ์ด ์ ๋ณด๊ฐ etcd์ ์
๋ฐ์ดํธ๋ผ.
7๋จ๊ณ: kubelet์ด Pod ์คํ ๐
ํด๋น ๋
ธ๋์ kubelet์ด ์์ ์ ๋
ธ๋์ ํ ๋น๋ ์ Pod๋ฅผ ๊ฐ์งํ๊ณ , ์ปจํ
์ด๋ ๋ฐํ์์๊ฒ ์ปจํ
์ด๋ ์คํ์ ์์ฒญํด.
8๋จ๊ณ: ์ปจํ
์ด๋ ์คํ ๐ณ
์ปจํ
์ด๋ ๋ฐํ์์ด ์ด๋ฏธ์ง๋ฅผ pullํ๊ณ ์ปจํ
์ด๋๋ฅผ ์คํํด. kubelet์ ์ปจํ
์ด๋ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ API ์๋ฒ์ ๋ณด๊ณ ํด.
9๋จ๊ณ: kube-proxy๊ฐ ๋คํธ์ํฌ ๊ท์น ์
๋ฐ์ดํธ ๐
Service๊ฐ ์๋ค๋ฉด, kube-proxy๊ฐ ๋คํธ์ํฌ ๊ท์น์ ์
๋ฐ์ดํธํด์ ํธ๋ํฝ์ด ์ Pod๋ก ๋ผ์ฐํ
๋๋๋ก ํด.
์ด ๋ชจ๋ ๊ณผ์ ์ด ๋ช ์ด ์์ ์๋์ผ๋ก ์ผ์ด๋! ์ ๋ง ๋๋์ง? ๐ฎ
๐จ Kubernetes์ ํต์ฌ ๊ฐ๋ ๋ค
์ํคํ ์ฒ๋ฅผ ์ดํดํ์ผ๋, ์ฟ ๋ฒ๋คํฐ์ค์์ ์์ฃผ ์ฌ์ฉ๋๋ ํต์ฌ ๊ฐ๋ ๋ค๋ ์ง๊ณ ๋์ด๊ฐ์! ์ด ๊ฐ๋ ๋ค์ ์์์ผ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ ๋๋ก ํ์ฉํ ์ ์์ด. ๐
๐ Pod (ํ๋)
Pod๋ ์ฟ ๋ฒ๋คํฐ์ค์์ ๋ฐฐํฌ ๊ฐ๋ฅํ ๊ฐ์ฅ ์์ ๋จ์์ผ. ํ๋ ์ด์์ ์ปจํ
์ด๋๋ฅผ ํฌํจํ ์ ์๊ณ , ๊ฐ์ Pod ์์ ์ปจํ
์ด๋๋ค์ ๋คํธ์ํฌ์ ์คํ ๋ฆฌ์ง๋ฅผ ๊ณต์ ํด.
Pod์ ํน์ง:
โข ๊ณ ์ ํ IP ์ฃผ์๋ฅผ ๊ฐ์ง
โข ๊ฐ์ Pod ๋ด ์ปจํ
์ด๋๋ค์ localhost๋ก ํต์ ๊ฐ๋ฅ
โข ์ผ์์ (ephemeral)์ด๋ฉฐ, ์ธ์ ๋ ์ฌ์์ฑ๋ ์ ์์
โข ๋ณดํต ํ๋์ ์ปจํ
์ด๋๋ง ํฌํจํ์ง๋ง, ๋ฐ์ ํ๊ฒ ๊ฒฐํฉ๋ ์ฌ๋ฌ ์ปจํ
์ด๋๋ฅผ ํฌํจํ ์๋ ์์
Multi-container Pod ํจํด:
โข Sidecar: ๋ฉ์ธ ์ปจํ
์ด๋๋ฅผ ๋ณด์กฐํ๋ ์ปจํ
์ด๋ (๋ก๊ทธ ์์ง, ํ๋ก์ ๋ฑ)
โข Ambassador: ์ธ๋ถ ์๋น์ค์์ ํต์ ์ ๋ํ
โข Adapter: ๋ฉ์ธ ์ปจํ
์ด๋์ ์ถ๋ ฅ์ ํ์คํ
๐ฏ ReplicaSet (๋ ํ๋ฆฌ์นด์ )
ReplicaSet์ ์ง์ ๋ ์์ Pod ๋ณต์ ๋ณธ์ด ํญ์ ์คํ๋๋๋ก ๋ณด์ฅํ๋ ์ปจํธ๋กค๋ฌ์ผ. Pod๊ฐ ์ฃฝ์ผ๋ฉด ์๋์ผ๋ก ์๋ก์ด Pod๋ฅผ ์์ฑํด์ ์ํ๋ ๊ฐ์๋ฅผ ์ ์งํ์ง.
ํ์ง๋ง ์ค์ ๋ก๋ ReplicaSet์ ์ง์ ์ฌ์ฉํ๊ธฐ๋ณด๋ค๋, Deployment๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ ์ผ๋ฐ์ ์ด์ผ. Deployment๊ฐ ReplicaSet์ ๊ด๋ฆฌํด์ฃผ๊ฑฐ๋ ! ๐ญ
๐ Deployment (๋ํ๋ก์ด๋จผํธ)
Deployment๋ ์ ์ธ์ ์
๋ฐ์ดํธ๋ฅผ ์ ๊ณตํ๋ ๊ณ ์์ค ๋ฆฌ์์ค์ผ. ReplicaSet์ ๊ด๋ฆฌํ๋ฉด์ ๋กค๋ง ์
๋ฐ์ดํธ, ๋กค๋ฐฑ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํด.
Deployment์ ์ฅ์ :
โข ์ ์ธ์ ์
๋ฐ์ดํธ: ์ํ๋ ์ํ๋ง ์ ์ธํ๋ฉด ์๋์ผ๋ก ๋ฌ์ฑ
โข ๋กค๋ง ์
๋ฐ์ดํธ: ๋ฌด์ค๋จ ๋ฐฐํฌ ๊ฐ๋ฅ
โข ๋กค๋ฐฑ: ์ด์ ๋ฒ์ ์ผ๋ก ์ฝ๊ฒ ๋๋๋ฆฌ๊ธฐ
โข ์ค์ผ์ผ๋ง: replica ์๋ฅผ ์ฝ๊ฒ ์กฐ์
โข ๋ฐฐํฌ ํ์คํ ๋ฆฌ ๊ด๋ฆฌ
๋๋ถ๋ถ์ stateless ์ ํ๋ฆฌ์ผ์ด์
์ Deployment๋ก ๋ฐฐํฌํด! ๐ฏ
๐ Service (์๋น์ค)
Service๋ Pod ์งํฉ์ ๋ํ ์์ ์ ์ธ ๋คํธ์ํฌ ์๋ํฌ์ธํธ๋ฅผ ์ ๊ณตํด. Pod๋ ์ธ์ ๋ ์ฌ์์ฑ๋ ์ ์๊ณ IP๊ฐ ๋ฐ๋ ์ ์๋๋ฐ, Service๋ ๋ณํ์ง ์๋ IP์ DNS ์ด๋ฆ์ ์ ๊ณตํ์ง.
Service ํ์
:
โข ClusterIP (๊ธฐ๋ณธ๊ฐ): ํด๋ฌ์คํฐ ๋ด๋ถ์์๋ง ์ ๊ทผ ๊ฐ๋ฅํ IP
โข NodePort: ๊ฐ ๋
ธ๋์ ํน์ ํฌํธ๋ก ์ธ๋ถ ์ ๊ทผ ํ์ฉ
โข LoadBalancer: ํด๋ผ์ฐ๋ ์ ๊ณต์์ ๋ก๋ ๋ฐธ๋ฐ์ ์์ฑ
โข ExternalName: ์ธ๋ถ DNS ์ด๋ฆ์ผ๋ก ๋งคํ
Service๋ Label Selector๋ฅผ ์ฌ์ฉํด์ ์ด๋ค Pod๋ค์ ๋์์ผ๋ก ํ ์ง ๊ฒฐ์ ํด. ๋ผ๋ฒจ์ด ์ผ์นํ๋ ๋ชจ๋ Pod๋ก ํธ๋ํฝ์ ๋ถ์ฐ์ํค์ง! ๐ช
๐ฆ Namespace (๋ค์์คํ์ด์ค)
Namespace๋ ๊ฐ์ ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค์ด์ ๋ฆฌ์์ค๋ฅผ ๋
ผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด์ผ. ํ๋์ ๋ฌผ๋ฆฌ์ ํด๋ฌ์คํฐ๋ฅผ ์ฌ๋ฌ ํ์ด๋ ํ๋ก์ ํธ๊ฐ ๊ณต์ ํ ๋ ์ ์ฉํด.
๊ธฐ๋ณธ Namespace:
โข default: ๋ณ๋ ์ง์ ์์ ๋ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ๋ค์์คํ์ด์ค
โข kube-system: ์ฟ ๋ฒ๋คํฐ์ค ์์คํ
์ปดํฌ๋ํธ์ฉ
โข kube-public: ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ฝ์ ์ ์๋ ๊ณต๊ฐ ๋ค์์คํ์ด์ค
โข kube-node-lease: ๋
ธ๋ ํํธ๋นํธ ์ ๋ณด ์ ์ฅ
ํ๋ก๋์
ํ๊ฒฝ์์๋ dev, staging, production ๊ฐ์ ๋ค์์คํ์ด์ค๋ฅผ ๋ง๋ค์ด์ ํ๊ฒฝ์ ๋ถ๋ฆฌํ๋ ๊ฒ ์ผ๋ฐ์ ์ด์ผ! ๐ข
๐พ Volume (๋ณผ๋ฅจ)
Volume์ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ์ด์ผ. ์ปจํ
์ด๋๋ ์ผ์์ ์ด๋ผ์ ์ฌ์์ํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋๋ฐ, Volume์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ณด์กดํ ์ ์์ด.
์ฃผ์ Volume ํ์
:
โข emptyDir: Pod์ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ฐ์ดํ๋ ์์ ๋๋ ํ ๋ฆฌ
โข hostPath: ํธ์คํธ ๋
ธ๋์ ํ์ผ์์คํ
๋ง์ดํธ
โข persistentVolumeClaim: ์๊ตฌ ์คํ ๋ฆฌ์ง ์์ฒญ
โข configMap / secret: ์ค์ ๋ฐ์ดํฐ ๋ง์ดํธ
โข nfs, cephfs, glusterfs: ๋คํธ์ํฌ ํ์ผ์์คํ
โข awsElasticBlockStore, gcePersistentDisk, azureDisk: ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง
ํ๋ก๋์
์์๋ ์ฃผ๋ก PersistentVolume๊ณผ PersistentVolumeClaim์ ์ฌ์ฉํด์ ์คํ ๋ฆฌ์ง๋ฅผ ๊ด๋ฆฌํด! ๐ฟ
๐ ConfigMap & Secret
ConfigMap: ์ค์ ๋ฐ์ดํฐ๋ฅผ ํค-๊ฐ ์์ผ๋ก ์ ์ฅ
Secret: ๋น๋ฐ๋ฒํธ, ํ ํฐ ๊ฐ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ base64 ์ธ์ฝ๋ฉํด์ ์ ์ฅ
์ด ๋์ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ฝ๋์ ์ค์ ์ ๋ถ๋ฆฌํ ์ ์์ด. ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๋ค๋ฅธ ํ๊ฒฝ์์ ๋ค๋ฅธ ์ค์ ์ผ๋ก ์คํํ ์ ์์ง! ๐
์ฃผ์: Secret์ base64๋ก ์ธ์ฝ๋ฉ๋ง ๋์ด ์์ ๋ฟ ์ํธํ๋ ๋์ง ์์. ํ๋ก๋์
์์๋ etcd ์ํธํ๋ฅผ ํ์ฑํํ๊ฑฐ๋, ์ธ๋ถ ์ํฌ๋ฆฟ ๊ด๋ฆฌ ๋๊ตฌ(Vault, Sealed Secrets ๋ฑ)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์ข์!
๐ ๊ณ ๊ธ ๊ฐ๋ ๋ค
๊ธฐ๋ณธ ๊ฐ๋ ์ ๋์ด์, ์ข ๋ ๊ณ ๊ธ ๊ธฐ๋ฅ๋ค๋ ์์๋ณด์! ์ด๋ฐ ๊ธฐ๋ฅ๋ค์ ํ์ฉํ๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ํจ์ฌ ๋ ๊ฐ๋ ฅํ๊ฒ ์ฌ์ฉํ ์ ์์ด. ๐ช
๐ญ StatefulSet (์คํ ์ดํธํ์ )
StatefulSet์ ์ํ๋ฅผ ๊ฐ์ง ์ ํ๋ฆฌ์ผ์ด์
์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ปจํธ๋กค๋ฌ์ผ. Deployment์ ๋น์ทํ์ง๋ง, ๊ฐ Pod์ ๊ณ ์ ํ ์๋ณ์์ ์์ ์ ์ธ ๋คํธ์ํฌ ID๋ฅผ ์ ๊ณตํด.
StatefulSet์ ํน์ง:
โข ์์๊ฐ ๋ณด์ฅ๋ ๋ฐฐํฌ์ ์ค์ผ์ผ๋ง
โข ์์ ์ ์ด๊ณ ๊ณ ์ ํ ๋คํธ์ํฌ ์๋ณ์
โข ์์ ์ ์ด๊ณ ์๊ตฌ์ ์ธ ์คํ ๋ฆฌ์ง
โข ์์๊ฐ ๋ณด์ฅ๋ ๋กค๋ง ์
๋ฐ์ดํธ
๋ฐ์ดํฐ๋ฒ ์ด์ค(MySQL, PostgreSQL, MongoDB), ๋ฉ์์ง ํ(Kafka, RabbitMQ) ๊ฐ์ stateful ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉํด! ๐๏ธ
โก DaemonSet (๋ฐ๋ชฌ์ )
DaemonSet์ ๋ชจ๋ ๋
ธ๋(๋๋ ํน์ ๋
ธ๋)์ Pod๋ฅผ ํ๋์ฉ ์คํํ๋ ์ปจํธ๋กค๋ฌ์ผ. ๋
ธ๋๊ฐ ์ถ๊ฐ๋๋ฉด ์๋์ผ๋ก ๊ทธ ๋
ธ๋์๋ Pod๊ฐ ์์ฑ๋๊ณ , ๋
ธ๋๊ฐ ์ ๊ฑฐ๋๋ฉด Pod๋ ์ญ์ ๋ผ.
์ฌ์ฉ ์ฌ๋ก:
โข ๋ก๊ทธ ์์ง ์์ด์ ํธ (Fluentd, Logstash)
โข ๋ชจ๋ํฐ๋ง ์์ด์ ํธ (Prometheus Node Exporter, Datadog Agent)
โข ๋คํธ์ํฌ ํ๋ฌ๊ทธ์ธ
โข ์คํ ๋ฆฌ์ง ๋ฐ๋ชฌ
ํด๋ฌ์คํฐ์ ๋ชจ๋ ๋
ธ๋์์ ์คํ๋์ด์ผ ํ๋ ์ธํ๋ผ ๊ด๋ จ ์์
์ ์๋ฒฝํด! ๐ง
โฐ Job & CronJob
Job: ์ผํ์ฑ ์์
์ ์คํํ๊ณ ์๋ฃ๋๋ฉด ์ข
๋ฃ
CronJob: ์ฃผ๊ธฐ์ ์ผ๋ก ์คํ๋๋ ์์
(Linux cron๊ณผ ์ ์ฌ)
์ฌ์ฉ ์ฌ๋ก:
โข ๋ฐฐ์น ์ฒ๋ฆฌ
โข ๋ฐ์ดํฐ ๋ฐฑ์
โข ์ ๊ธฐ์ ์ธ ๋ฐ์ดํฐ ์ ๋ฆฌ
โข ๋ฆฌํฌํธ ์์ฑ
โข ETL ์์
์๋ฅผ ๋ค์ด, ๋งค์ผ ๋ฐค 12์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์
์ ์คํํ๋ CronJob์ ๋ง๋ค ์ ์์ด! โฐ
๐ Ingress (์ธ๊ทธ๋ ์ค)
Ingress๋ HTTP/HTTPS ๋ผ์ฐํ
์ ๊ด๋ฆฌํ๋ API ๊ฐ์ฒด์ผ. ํด๋ฌ์คํฐ ์ธ๋ถ์์ ๋ด๋ถ Service๋ก์ ์ ๊ทผ์ ์ ์ดํ๊ณ , ๋ก๋ ๋ฐธ๋ฐ์ฑ, SSL ์ข
๋ฃ, ์ด๋ฆ ๊ธฐ๋ฐ ๊ฐ์ ํธ์คํ
๋ฑ์ ์ ๊ณตํด.
Ingress์ ๊ธฐ๋ฅ:
โข URL ๊ฒฝ๋ก ๊ธฐ๋ฐ ๋ผ์ฐํ
โข ํธ์คํธ ๊ธฐ๋ฐ ๋ผ์ฐํ
โข SSL/TLS ์ข
๋ฃ
โข ๋ฆฌ๋ค์ด๋ ์
โข ๋ก๋ ๋ฐธ๋ฐ์ฑ
Ingress๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Ingress Controller๊ฐ ํ์ํด. NGINX Ingress Controller, Traefik, HAProxy ๋ฑ ๋ค์ํ ๊ตฌํ์ฒด๊ฐ ์์ด! ๐ช
์๋ฅผ ๋ค์ด, example.com/api๋ API ์๋น์ค๋ก, example.com/web์ ์น ์๋น์ค๋ก ๋ผ์ฐํ
ํ๋ ์์ผ๋ก ์ฌ์ฉํ ์ ์์ง!
๐ HorizontalPodAutoscaler (HPA)
HPA๋ ์๋์ผ๋ก Pod ์๋ฅผ ์กฐ์ ํ๋ ๊ธฐ๋ฅ์ด์ผ. CPU ์ฌ์ฉ๋ฅ , ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ฅ , ๋๋ ์ปค์คํ
๋ฉํธ๋ฆญ์ ๊ธฐ๋ฐ์ผ๋ก Pod๋ฅผ ์๋์ผ๋ก ๋๋ฆฌ๊ฑฐ๋ ์ค์ฌ.
๋์ ๋ฐฉ์:
โข ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฉํธ๋ฆญ ์์ง (๊ธฐ๋ณธ 15์ด)
โข ํ์ฌ ๋ฉํธ๋ฆญ๊ณผ ๋ชฉํ ๋ฉํธ๋ฆญ ๋น๊ต
โข ํ์ํ replica ์ ๊ณ์ฐ
โข Deployment/ReplicaSet์ replica ์ ์กฐ์
์๋ฅผ ๋ค์ด, CPU ์ฌ์ฉ๋ฅ ์ด 70%๋ฅผ ๋์ผ๋ฉด Pod๋ฅผ ์ถ๊ฐํ๊ณ , 30% ์ดํ๋ก ๋จ์ด์ง๋ฉด Pod๋ฅผ ์ค์ด๋ ์์ผ๋ก ์ค์ ํ ์ ์์ด. ํธ๋ํฝ ๋ณํ์ ์๋์ผ๋ก ๋์ํ๋๊น ์ ๋ง ํธ๋ฆฌํด! ๐
๐ท๏ธ Labels & Selectors
Labels๋ ๋ฆฌ์์ค์ ๋ถ์ด๋ ํค-๊ฐ ์์ ๋ฉํ๋ฐ์ดํฐ์ผ. Selectors๋ ์ด Label์ ์ฌ์ฉํด์ ๋ฆฌ์์ค๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ์ด๊ณ .
Label ์์:
โข environment: production
โข tier: frontend
โข app: nginx
โข version: v1.2.3
Service, Deployment, NetworkPolicy ๋ฑ ๋ง์ ์ฟ ๋ฒ๋คํฐ์ค ๋ฆฌ์์ค๊ฐ Label Selector๋ฅผ ์ฌ์ฉํด์ ๋์์ ์ง์ ํด. Label์ ์ ์ค๊ณํ๋ฉด ๋ฆฌ์์ค ๊ด๋ฆฌ๊ฐ ํจ์ฌ ์ฌ์์ ธ! ๐ท๏ธ
๐ RBAC (Role-Based Access Control)
RBAC๋ ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด ์์คํ
์ด์ผ. ๋๊ฐ ์ด๋ค ๋ฆฌ์์ค์ ์ด๋ค ์์
์ ํ ์ ์๋์ง ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ด.
์ฃผ์ ๊ฐ๋
:
โข Role / ClusterRole: ๊ถํ์ ์งํฉ ์ ์
โข RoleBinding / ClusterRoleBinding: ์ฌ์ฉ์/๊ทธ๋ฃน์ Role ํ ๋น
โข ServiceAccount: Pod๊ฐ ์ฌ์ฉํ๋ ๊ณ์
ํ๋ก๋์
ํ๊ฒฝ์์๋ ๋ฐ๋์ RBAC๋ฅผ ์ค์ ํด์ ์ต์ ๊ถํ ์์น์ ์ ์ฉํด์ผ ํด. ๋ณด์์ ์๋ฌด๋ฆฌ ๊ฐ์กฐํด๋ ์ง๋์น์ง ์์! ๐
๐ ๏ธ ์ค์ ์ํคํ ์ฒ ํจํด
์ด๋ก ์ ์ถฉ๋ถํ ๋ฐฐ์ ์ผ๋, ์ค์ ๋ก ์ด๋ป๊ฒ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๊ตฌ์ฑํ๋์ง ์ค์ ํจํด์ ์ดํด๋ณด์! ๐ฏ
๐ข ํ๋ก๋์ ํด๋ฌ์คํฐ ๊ตฌ์ฑ
๊ณ ๊ฐ์ฉ์ฑ(HA) Control Plane:
โข ์ต์ 3๊ฐ์ Control Plane ๋
ธ๋ (ํ์ ๊ฐ ๊ถ์ฅ)
โข etcd ํด๋ฌ์คํฐ ๊ตฌ์ฑ (3๊ฐ ๋๋ 5๊ฐ)
โข ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ํตํ API ์๋ฒ ๋ถ์ฐ
Worker Node ๊ตฌ์ฑ:
โข ์ํฌ๋ก๋ ํ์
๋ณ๋ก ๋
ธ๋ ๊ทธ๋ฃน ๋ถ๋ฆฌ
โข Node Taints์ Tolerations ํ์ฉ
โข ๋ฆฌ์์ค ์ฟผํฐ์ ๋ฆฌ๋ฐ ์ค์
๋คํธ์ํฌ:
โข CNI ํ๋ฌ๊ทธ์ธ ์ ํ (Calico, Flannel, Cilium ๋ฑ)
โข NetworkPolicy๋ก ํธ๋ํฝ ์ ์ด
โข Ingress Controller ๊ตฌ์ฑ
์คํ ๋ฆฌ์ง:
โข StorageClass ์ ์
โข ๋์ ํ๋ก๋น์ ๋ ์ค์
โข ๋ฐฑ์
์ ๋ต ์๋ฆฝ
๋ชจ๋ํฐ๋ง & ๋ก๊น
:
โข Prometheus + Grafana๋ก ๋ฉํธ๋ฆญ ์์ง
โข EFK/ELK ์คํ์ผ๋ก ๋ก๊ทธ ์์ง
โข Alerting ์ค์
์ด๋ฐ ๊ตฌ์ฑ์ ์ฒ์๋ถํฐ ์ง์ ํ๊ธฐ๋ ์ด๋ ค์ธ ์ ์์ด. ๊ทธ๋ด ๋๋ ์ฌ๋ฅ๋ท ๊ฐ์ ํ๋ซํผ์์ ์ฟ ๋ฒ๋คํฐ์ค ์ ๋ฌธ๊ฐ์ ๋์์ ๋ฐ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ! ์ ๋ฌธ๊ฐ์ ์ปจ์คํ
์ ๋ฐ์ผ๋ฉด ์ํ์ฐฉ์ค๋ฅผ ์ค์ด๊ณ ์์ ์ ์ธ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํ ์ ์๊ฑฐ๋ . ๐
๐จ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ
์ฟ ๋ฒ๋คํฐ์ค๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ์ ์๋ฒฝํ๊ฒ ์ด์ธ๋ ค! ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋
๋ฆฝ์ ์ธ Deployment๋ก ๋ฐฐํฌํ๊ณ , Service๋ก ์ฐ๊ฒฐํ๋ฉด ๋ผ.
ํจํด:
โข ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ ๋ณ๋์ Deployment
โข Service Mesh (Istio, Linkerd) ๋์
๊ณ ๋ ค
โข API Gateway ํจํด ์ ์ฉ
โข ์๋น์ค ๊ฐ ํต์ ์ Service DNS ์ฌ์ฉ
โข ConfigMap/Secret์ผ๋ก ์ค์ ๊ด๋ฆฌ
โข Namespace๋ก ํ๊ฒฝ ๋ถ๋ฆฌ
์์ ๊ตฌ์กฐ:
โข Frontend Service (React/Vue)
โข API Gateway (Kong/Ambassador)
โข Auth Service
โข User Service
โข Order Service
โข Payment Service
โข Notification Service
โข Database (StatefulSet ๋๋ ์ธ๋ถ ๊ด๋ฆฌํ DB)
๊ฐ ์๋น์ค๋ ๋
๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ, ์ค์ผ์ผ๋ง, ์
๋ฐ์ดํธํ ์ ์์ด! ๐
๐ CI/CD ํ์ดํ๋ผ์ธ
์ฟ ๋ฒ๋คํฐ์ค์ CI/CD๋ฅผ ๊ฒฐํฉํ๋ฉด ์ง์ ํ DevOps๋ฅผ ์คํํ ์ ์์ด!
์ผ๋ฐ์ ์ธ ํ์ดํ๋ผ์ธ:
1. ์ฝ๋ ์ปค๋ฐ (Git)
2. CI ์๋ฒ๊ฐ ๊ฐ์ง (Jenkins, GitLab CI, GitHub Actions)
3. ํ
์คํธ ์คํ
4. Docker ์ด๋ฏธ์ง ๋น๋
5. ์ด๋ฏธ์ง ๋ ์ง์คํธ๋ฆฌ์ ํธ์
6. Kubernetes manifest ์
๋ฐ์ดํธ
7. kubectl apply ๋๋ Helm upgrade
8. ๋กค๋ง ์
๋ฐ์ดํธ ์งํ
9. ํฌ์ค ์ฒดํฌ ํ์ธ
10. ๋ฌธ์ ๋ฐ์ ์ ์๋ ๋กค๋ฐฑ
GitOps ํจํด:
โข ArgoCD, Flux ๊ฐ์ ๋๊ตฌ ์ฌ์ฉ
โข Git์ ๋จ์ผ ์ง์ค ๊ณต๊ธ์(Single Source of Truth)์ผ๋ก
โข ์ ์ธ์ ๋ฐฐํฌ
โข ์๋ ๋๊ธฐํ
GitOps๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐํฌ๊ฐ Git ์ปค๋ฐ๋งํผ ์ฌ์์ ธ! ๐
โ ๏ธ ์ฃผ์์ฌํญ๊ณผ ๋ฒ ์คํธ ํ๋ํฐ์ค
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ ๋ ๊ผญ ์์์ผ ํ ์ฃผ์์ฌํญ๊ณผ ๋ฒ ์คํธ ํ๋ํฐ์ค๋ฅผ ์ ๋ฆฌํด๋ดค์ด! ์ด๊ฑธ ๋ฐ๋ฅด๋ฉด ๋ง์ ๋ฌธ์ ๋ฅผ ์๋ฐฉํ ์ ์์ด. ๐ก๏ธ
๐จ ๋ฆฌ์์ค ๊ด๋ฆฌ
๋ฐ๋์ ๋ฆฌ์์ค ์์ฒญ(requests)๊ณผ ์ ํ(limits)์ ์ค์ ํ์!
โข requests: ์ปจํ
์ด๋๊ฐ ํ์๋ก ํ๋ ์ต์ ๋ฆฌ์์ค
โข limits: ์ปจํ
์ด๋๊ฐ ์ฌ์ฉํ ์ ์๋ ์ต๋ ๋ฆฌ์์ค
์ค์ ํ์ง ์์ผ๋ฉด ํ Pod๊ฐ ๋
ธ๋์ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ๋
์ ํ ์ ์์ด. ํนํ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ์ค์ ํ์ง ์์ผ๋ฉด OOM(Out of Memory)์ผ๋ก ๋
ธ๋ ์ ์ฒด๊ฐ ๋ค์ด๋ ์ ์์ด! ๐ฑ
โ ํฌ์ค ์ฒดํฌ ์ค์
Liveness Probe์ Readiness Probe๋ฅผ ๊ผญ ์ค์ ํ์!
โข Liveness Probe: ์ปจํ
์ด๋๊ฐ ์ด์์๋์ง ํ์ธ, ์คํจํ๋ฉด ์ฌ์์
โข Readiness Probe: ์ปจํ
์ด๋๊ฐ ํธ๋ํฝ์ ๋ฐ์ ์ค๋น๊ฐ ๋์๋์ง ํ์ธ
โข Startup Probe: ๋๋ฆฌ๊ฒ ์์ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ์ด๊ธฐ ์ฒดํฌ
์ด๊ฑธ ์ค์ ํ์ง ์์ผ๋ฉด ๋ฌธ์ ๊ฐ ์๋ Pod์๋ ํธ๋ํฝ์ด ์ ๋ฌ๋ ์ ์์ด!
๐ฏ ๋ฒ ์คํธ ํ๋ํฐ์ค ์ฒดํฌ๋ฆฌ์คํธ
๋ณด์:
โ ์ต์ ๊ถํ ์์น ์ ์ฉ (RBAC)
โ Pod Security Policy/Standards ์ฌ์ฉ
โ ์ปจํ
์ด๋๋ฅผ root๋ก ์คํํ์ง ์๊ธฐ
โ ์ด๋ฏธ์ง ์ค์บ (Trivy, Clair)
โ Secret ์ํธํ
โ NetworkPolicy๋ก ํธ๋ํฝ ์ ํ
์์ ์ฑ:
โ ์ฌ๋ฌ replica ์คํ (์ต์ 2๊ฐ ์ด์)
โ PodDisruptionBudget ์ค์
โ Anti-affinity ๊ท์น์ผ๋ก Pod ๋ถ์ฐ
โ ๋ฆฌ์์ค ์ฟผํฐ ์ค์
โ ์ ๊ธฐ์ ์ธ ๋ฐฑ์
์ฑ๋ฅ:
โ HPA๋ก ์๋ ์ค์ผ์ผ๋ง
โ ์ ์ ํ ๋ฆฌ์์ค ํ ๋น
โ ์ด๋ฏธ์ง ํฌ๊ธฐ ์ต์ ํ
โ ๋ฉํฐ ์คํ
์ด์ง ๋น๋ ์ฌ์ฉ
โ ์บ์ฑ ์ ๋ต ํ์ฉ
์ด์:
โ ์๋ฏธ ์๋ Label ์ฌ์ฉ
โ Annotation์ผ๋ก ๋ฉํ๋ฐ์ดํฐ ์ถ๊ฐ
โ ๋ช
ํํ ๋ค์ด๋ฐ ์ปจ๋ฒค์
โ ๋ฒ์ ๊ด๋ฆฌ (Git)
โ ๋ฌธ์ํ
โ ๋ชจ๋ํฐ๋ง๊ณผ ์๋ฆผ ์ค์
๐ Kubernetes ์ํ๊ณ
์ฟ ๋ฒ๋คํฐ์ค ์์ฒด๋ ๊ฐ๋ ฅํ์ง๋ง, ์ฃผ๋ณ ์ํ๊ณ๊ฐ ๋์ฑ ํ๋ถํด! ์ฟ ๋ฒ๋คํฐ์ค์ ํจ๊ป ์ฌ์ฉ๋๋ ์ธ๊ธฐ ์๋ ๋๊ตฌ๋ค์ ์๊ฐํ ๊ฒ. ๐ ๏ธ
๐ฆ ํจํค์ง ๊ด๋ฆฌ
Helm: ์ฟ ๋ฒ๋คํฐ์ค์ ํจํค์ง ๋งค๋์ . ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฐจํธ(Chart)๋ก ํจํค์งํด์ ์ฝ๊ฒ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ ์ ์์ด. apt๋ yum ๊ฐ์ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ฉด ๋ผ!
Kustomize: YAML ํ์ผ์ ํ
ํ๋ฆฟ ์์ด ์ปค์คํฐ๋ง์ด์งํ๋ ๋๊ตฌ. ์ฟ ๋ฒ๋คํฐ์ค์ ๋ด์ฅ๋์ด ์์ด์ kubectl๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ด.
๐ ๋ชจ๋ํฐ๋ง & ๋ก๊น
Prometheus: ๋ฉํธ๋ฆญ ์์ง๊ณผ ์๋ฆผ์ ์ํ ์คํ์์ค ๋ชจ๋ํฐ๋ง ์์คํ
Grafana: ๋ฉํธ๋ฆญ ์๊ฐํ ๋์๋ณด๋
ELK/EFK Stack: ๋ก๊ทธ ์์ง, ์ ์ฅ, ๋ถ์ (Elasticsearch, Logstash/Fluentd, Kibana)
Jaeger/Zipkin: ๋ถ์ฐ ์ถ์ (Distributed Tracing)
๐ Service Mesh
Istio: ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์๋น์ค ๋ฉ์. ํธ๋ํฝ ๊ด๋ฆฌ, ๋ณด์, ๊ด์ฐฐ์ฑ ์ ๊ณต
Linkerd: ๊ฒฝ๋ ์๋น์ค ๋ฉ์. Istio๋ณด๋ค ๊ฐ๋จํ๊ณ ๋น ๋ฆ
Consul: HashiCorp์ ์๋น์ค ๋ฉ์ ์๋ฃจ์
์๋น์ค ๋ฉ์๋ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ ํต์ ์ ๊ด๋ฆฌํ๊ณ , ํธ๋ํฝ ์ ์ด, ๋ณด์, ๋ชจ๋ํฐ๋ง์ ์ ๊ณตํด!
๐ ๋ณด์
Falco: ๋ฐํ์ ๋ณด์ ๋ชจ๋ํฐ๋ง
OPA (Open Policy Agent): ์ ์ฑ
๊ธฐ๋ฐ ์ ์ด
Vault: ์ํฌ๋ฆฟ ๊ด๋ฆฌ
Cert-Manager: TLS ์ธ์ฆ์ ์๋ ๊ด๋ฆฌ
Trivy: ์ปจํ
์ด๋ ์ด๋ฏธ์ง ์ทจ์ฝ์ ์ค์บ
๐ CI/CD
ArgoCD: GitOps ๊ธฐ๋ฐ ์ง์์ ๋ฐฐํฌ
Flux: GitOps ๋๊ตฌ
Tekton: ์ฟ ๋ฒ๋คํฐ์ค ๋ค์ดํฐ๋ธ CI/CD
Jenkins X: ์ฟ ๋ฒ๋คํฐ์ค์ฉ Jenkins
Spinnaker: ๋ฉํฐ ํด๋ผ์ฐ๋ ๋ฐฐํฌ ํ๋ซํผ
๐๏ธ ๊ด๋ฆฌ ๋๊ตฌ
Lens: ์ฟ ๋ฒ๋คํฐ์ค IDE. ํด๋ฌ์คํฐ ๊ด๋ฆฌ๊ฐ ์ ๋ง ํธํด์ ธ!
K9s: ํฐ๋ฏธ๋ ๊ธฐ๋ฐ ์ฟ ๋ฒ๋คํฐ์ค UI
Octant: VMware์ ์น ๊ธฐ๋ฐ ์ฟ ๋ฒ๋คํฐ์ค ๋์๋ณด๋
Rancher: ๋ฉํฐ ํด๋ฌ์คํฐ ๊ด๋ฆฌ ํ๋ซํผ
Kubeapps: ์น ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
๋ฐฐํฌ ๋๊ตฌ
๐ ํ์ต ๋ก๋๋งต
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฒ์ ๋ฐฐ์ฐ๋ ์ฌ๋๋ค์ ์ํ ํ์ต ๋ก๋๋งต์ ๋ง๋ค์ด๋ดค์ด! ๋จ๊ณ๋ณ๋ก ๋ฐ๋ผ๊ฐ๋ฉด ์ฒด๊ณ์ ์ผ๋ก ๋ฐฐ์ธ ์ ์์ ๊ฑฐ์ผ. ๐
๐ฑ ์ด๊ธ ๋จ๊ณ (1-2๊ฐ์)
1. ์ปจํ
์ด๋ ๊ธฐ์ด
โข Docker ๊ธฐ๋ณธ ๊ฐ๋
๊ณผ ๋ช
๋ น์ด
โข ์ด๋ฏธ์ง ๋น๋์ Dockerfile
โข ์ปจํ
์ด๋ ๋คํธ์ํน๊ณผ ๋ณผ๋ฅจ
2. ์ฟ ๋ฒ๋คํฐ์ค ๊ธฐ์ด
โข ์ฟ ๋ฒ๋คํฐ์ค ์ํคํ
์ฒ ์ดํด
โข Minikube๋ Kind๋ก ๋ก์ปฌ ํด๋ฌ์คํฐ ๊ตฌ์ฑ
โข kubectl ๊ธฐ๋ณธ ๋ช
๋ น์ด
โข Pod, Deployment, Service ์์ฑ
3. ์ค์ต
โข ๊ฐ๋จํ ์น ์ ํ๋ฆฌ์ผ์ด์
๋ฐฐํฌ
โข ์ค์ผ์ผ๋ง ์ค์ต
โข ๋กค๋ง ์
๋ฐ์ดํธ์ ๋กค๋ฐฑ
๐ฟ ์ค๊ธ ๋จ๊ณ (2-3๊ฐ์)
1. ๊ณ ๊ธ ๋ฆฌ์์ค
โข StatefulSet, DaemonSet, Job
โข ConfigMap๊ณผ Secret
โข PersistentVolume๊ณผ PersistentVolumeClaim
โข Ingress์ Ingress Controller
2. ๋คํธ์ํน
โข Service ํ์
๋ณ ํน์ง
โข NetworkPolicy
โข DNS์ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ
3. ์คํ ๋ฆฌ์ง
โข StorageClass
โข ๋์ ํ๋ก๋น์ ๋
โข ๋ค์ํ ๋ณผ๋ฅจ ํ์
4. ๋ณด์
โข RBAC
โข Pod Security
โข ๋คํธ์ํฌ ์ ์ฑ
5. ์ค์ต
โข ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์
๋ฐฐํฌ
โข ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฐํฌ (StatefulSet)
โข Ingress๋ก ๋ผ์ฐํ
์ค์
๐ณ ๊ณ ๊ธ ๋จ๊ณ (3-6๊ฐ์)
1. ํด๋ฌ์คํฐ ๊ด๋ฆฌ
โข ๊ณ ๊ฐ์ฉ์ฑ ํด๋ฌ์คํฐ ๊ตฌ์ฑ
โข ์
๊ทธ๋ ์ด๋ ์ ๋ต
โข ๋ฐฑ์
๊ณผ ๋ณต๊ตฌ
โข ๋ฆฌ์์ค ๊ด๋ฆฌ์ ์ต์ ํ
2. ๊ณ ๊ธ ๊ธฐ๋ฅ
โข Custom Resource Definition (CRD)
โข Operator ํจํด
โข Admission Controllers
โข HPA์ VPA
3. ์ํ๊ณ ๋๊ตฌ
โข Helm
โข Service Mesh (Istio/Linkerd)
โข GitOps (ArgoCD/Flux)
โข ๋ชจ๋ํฐ๋ง ์คํ ๊ตฌ์ถ
4. ํ๋ก๋์
์ด์
โข ๋ก๊น
๊ณผ ๋ชจ๋ํฐ๋ง
โข ํธ๋ฌ๋ธ์ํ
โข ์ฑ๋ฅ ํ๋
โข ์ฌํด ๋ณต๊ตฌ ๊ณํ
5. ์ค์ต
โข ํ๋ก๋์
๊ธ ํด๋ฌ์คํฐ ๊ตฌ์ถ
โข CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ
โข ๋ฉํฐ ํด๋ฌ์คํฐ ๊ด๋ฆฌ
โข ์ค์ ํ๋ก์ ํธ ๋ฐฐํฌ
๐ก ํ์ต ํ:
โข ์ด๋ก ๋ง ๊ณต๋ถํ์ง ๋ง๊ณ ๋ฐ๋์ ์ง์ ์ค์ตํ์!
โข ๊ณต์ ๋ฌธ์๋ฅผ ์์ฃผ ์ฐธ๊ณ ํ์ (kubernetes.io)
โข ์ปค๋ฎค๋ํฐ์ ์ฐธ์ฌํ์ (Slack, Reddit, Stack Overflow)
โข CKA(Certified Kubernetes Administrator) ์๊ฒฉ์ฆ ์ค๋น๋ ์ข์ ํ์ต ๋ฐฉ๋ฒ!
โข ์คํ์์ค ํ๋ก์ ํธ์ ๊ธฐ์ฌํด๋ณด์
ํผ์ ๊ณต๋ถํ๊ธฐ ์ด๋ ต๋ค๋ฉด ์ฌ๋ฅ๋ท์์ ์ฟ ๋ฒ๋คํฐ์ค ์ ๋ฌธ๊ฐ์๊ฒ ๋ฉํ ๋ง์ ๋ฐ๋ ๊ฒ๋ ์ถ์ฒํด! ์ค๋ฌด ๊ฒฝํ์ด ํ๋ถํ ์ ๋ฌธ๊ฐ์ ๊ฐ์ด๋๋ฅผ ๋ฐ์ผ๋ฉด ํ์ต ์๋๊ฐ ํจ์ฌ ๋นจ๋ผ์ง ๊ฑฐ์ผ. ๐
๐ฎ Kubernetes์ ๋ฏธ๋
์ฟ ๋ฒ๋คํฐ์ค๋ ๊ณ์ ์งํํ๊ณ ์์ด! ์์ผ๋ก ์ด๋ค ๋ฐฉํฅ์ผ๋ก ๋ฐ์ ํ ์ง ์ดํด๋ณด์. ๐
๐ฏ ์ฃผ์ ํธ๋ ๋
1. Edge Computing ์ง์ ๊ฐํ
K3s, MicroK8s ๊ฐ์ ๊ฒฝ๋ ์ฟ ๋ฒ๋คํฐ์ค ๋ฐฐํฌํ์ด ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์์ด. IoT ๋๋ฐ์ด์ค๋ ์ฃ์ง ํ๊ฒฝ์์๋ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ง!
2. Serverless์์ ํตํฉ
Knative ๊ฐ์ ํ๋ก์ ํธ๋ฅผ ํตํด ์ฟ ๋ฒ๋คํฐ์ค ์์์ ์๋ฒ๋ฆฌ์ค ์ํฌ๋ก๋๋ฅผ ์คํํ ์ ์์ด. FaaS(Function as a Service)์ ์ปจํ
์ด๋์ ์ฅ์ ์ ๋ชจ๋ ํ์ฉํ ์ ์์ง!
3. ๋ฉํฐ ํด๋ฌ์คํฐ ๊ด๋ฆฌ
์ฌ๋ฌ ํด๋ฌ์คํฐ๋ฅผ ํ๋์ฒ๋ผ ๊ด๋ฆฌํ๋ ๊ธฐ์ ์ด ๋ฐ์ ํ๊ณ ์์ด. Cluster API, KubeFed ๊ฐ์ ํ๋ก์ ํธ๊ฐ ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด.
4. AI/ML ์ํฌ๋ก๋ ์ง์
Kubeflow ๊ฐ์ ํ๋ก์ ํธ๋ฅผ ํตํด ๋จธ์ ๋ฌ๋ ํ์ดํ๋ผ์ธ์ ์ฟ ๋ฒ๋คํฐ์ค์์ ์คํํ ์ ์์ด. GPU ์ค์ผ์ค๋ง๋ ์ ์ ๋ ์ ๊ตํด์ง๊ณ ์์ง!
5. ๋ณด์ ๊ฐํ
Zero Trust ๋คํธ์ํน, ๋ฐํ์ ๋ณด์, ์ ์ฑ
๊ธฐ๋ฐ ์ ์ด ๋ฑ ๋ณด์ ๊ธฐ๋ฅ์ด ๊ณ์ ๊ฐํ๋๊ณ ์์ด.
6. ์ฌ์ฉ์ฑ ๊ฐ์
๋ณต์กํ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋ค์ํ ๋๊ตฌ์ ์ถ์ํ ๋ ์ด์ด๊ฐ ๊ฐ๋ฐ๋๊ณ ์์ด. ๊ฐ๋ฐ์ ๊ฒฝํ(DX)์ด ์ ์ ์ข์์ง๊ณ ์์ง!
๐ฌ ๋ง๋ฌด๋ฆฌํ๋ฉฐ
์! ์ฌ๊ธฐ๊น์ง ์ฝ์๋ค๋ฉด ์ ๋ง ๋๋จํด! ๐ ์ฟ ๋ฒ๋คํฐ์ค์ ์ํคํ
์ฒ๋ถํฐ ๊ณ ๊ธ ๊ฐ๋
, ์ค์ ํจํด๊น์ง ์ ๋ง ๋ง์ ๋ด์ฉ์ ๋ค๋ค์ด.
์ฟ ๋ฒ๋คํฐ์ค๋ ์ฒ์์๋ ๋ณต์กํด ๋ณด์ด์ง๋ง, ๊ฐ ์ปดํฌ๋ํธ์ ์ญํ ๊ณผ ๋์ ์๋ฆฌ๋ฅผ ์ดํดํ๋ฉด ์ ๋ง ๋
ผ๋ฆฌ์ ์ด๊ณ ๋ฉ์ง ์์คํ
์ด๋ผ๋ ๊ฑธ ์ ์ ์์ด. Control Plane์ด ๋๋ ์ญํ ์ ํ๊ณ , Worker Node๋ค์ด ์ค์ ์์
์ ์ํํ๋ ๊ตฌ์กฐ๋ ์ ๋ง ํจ์จ์ ์ด์ง! ๐ง ๐ช
ํต์ฌ ํฌ์ธํธ๋ฅผ ๋ค์ ํ๋ฒ ์ ๋ฆฌํ๋ฉด:
1. Control Plane: API Server, etcd, Scheduler, Controller Manager๋ก ๊ตฌ์ฑ๋์ด ํด๋ฌ์คํฐ๋ฅผ ๊ด๋ฆฌ
2. Worker Nodes: kubelet, kube-proxy, Container Runtime์ผ๋ก ๊ตฌ์ฑ๋์ด ์ค์ ์ํฌ๋ก๋ ์คํ
3. ํต์ฌ ๋ฆฌ์์ค: Pod, Deployment, Service, ConfigMap, Secret ๋ฑ์ ์ดํดํ๊ณ ํ์ฉ
4. ๊ณ ๊ธ ๊ธฐ๋ฅ: StatefulSet, Ingress, HPA ๋ฑ์ผ๋ก ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ๊ตฌํ
5. ๋ฒ ์คํธ ํ๋ํฐ์ค: ๋ฆฌ์์ค ๊ด๋ฆฌ, ํฌ์ค ์ฒดํฌ, ๋ณด์ ์ค์ ์ ํ์!
์ฟ ๋ฒ๋คํฐ์ค๋ ๊ณ์ ์งํํ๊ณ ์๊ณ , ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ํ๊ณ์ ์ค์ฌ์ด ๋์์ด. ์ด์ ์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ด์
์ ์ฌ์ค์ ํ์ค(de facto standard)์ด๋ผ๊ณ ํ ์ ์์ง. ๐
์ฒ์์๋ ์ด๋ ต๊ฒ ๋๊ปด์ง ์ ์์ง๋ง, ํ๋์ฉ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฐฐ์๋๊ฐ๋ฉด ๋ถ๋ช
ํ ๋ง์คํฐํ ์ ์์ด! ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ๊ณ , ์ง์ ์ค์ตํ๊ณ , ์ปค๋ฎค๋ํฐ์ ์ฐธ์ฌํ๋ฉด์ ์ค๋ ฅ์ ํค์๋๊ฐ์. ๐ช
๊ทธ๋ฆฌ๊ณ ํผ์ ๊ณต๋ถํ๊ธฐ ๋ง๋งํ๊ฑฐ๋, ์ค๋ฌด์ ๋ฐ๋ก ์ ์ฉํด์ผ ํ๋ ์ํฉ์ด๋ผ๋ฉด ์ ๋ฌธ๊ฐ์ ๋์์ ๋ฐ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ. ์ํ์ฐฉ์ค๋ฅผ ์ค์ด๊ณ ํจ์จ์ ์ผ๋ก ๋ฐฐ์ธ ์ ์๊ฑฐ๋ !
์ฟ ๋ฒ๋คํฐ์ค์ ํจ๊ป ๋ฉ์ง ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ฌ์ ์ ์์ํด๋ณด์! ํ์ดํ
! ๐โจ
๐ฏ ๋ค์ ๋จ๊ณ๋?
์ด์ ์ง์ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํ๊ณ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐฐํฌํด๋ณด์!
Minikube๋ Kind๋ก ๋ก์ปฌ ํ๊ฒฝ์์ ์์ํ๊ฑฐ๋,
ํด๋ผ์ฐ๋ ์ ๊ณต์์ ๊ด๋ฆฌํ ์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค๋ฅผ ์ฌ์ฉํด๋ณด๋ ๊ฒ๋ ์ข์!
Happy Kubernetes Journey! ๐
๊ด๋ จ ํค์๋
๋๊ธ ์์ฑ
์ด ๊ธ์ ๋ํ ์ฌ๋ฌ๋ถ์ ์๊ฐ์ ๋ค๋ ค์ฃผ์ธ์
๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค
๋๊ธ์ ์์ฑํ๋ ค๋ฉด ๋จผ์ ๋ก๊ทธ์ธํด์ฃผ์ธ์.
๋๊ธ 0
์ง์์ธ์ ์ฒ - ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
- ์ ์๊ถ ๋ฐ ์์ ๊ถ: ๋ณธ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ๋ ์ AI ๊ธฐ์ ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ํ๋ฏผ๊ตญ ์ ์๊ถ๋ฒ ๋ฐ ๊ตญ์ ์ ์๊ถ ํ์ฝ์ ์ํด ๋ณดํธ๋ฉ๋๋ค.
- AI ์์ฑ ์ปจํ ์ธ ์ ๋ฒ์ ์ง์: ๋ณธ AI ์์ฑ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ์ง์ ์ฐฝ์๋ฌผ๋ก ์ธ์ ๋๋ฉฐ, ๊ด๋ จ ๋ฒ๊ท์ ๋ฐ๋ผ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ ์ ํ: ์ฌ๋ฅ๋ท์ ๋ช ์์ ์๋ฉด ๋์ ์์ด ๋ณธ ์ปจํ ์ธ ๋ฅผ ๋ณต์ , ์์ , ๋ฐฐํฌ, ๋๋ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ํ์๋ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ง ๊ธ์ง: ๋ณธ ์ปจํ ์ธ ์ ๋ํ ๋ฌด๋จ ์คํฌ๋ํ, ํฌ๋กค๋ง, ๋ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ง์ ๋ฒ์ ์ ์ฌ์ ๋์์ด ๋ฉ๋๋ค.
- AI ํ์ต ์ ํ: ์ฌ๋ฅ๋ท์ AI ์์ฑ ์ปจํ ์ธ ๋ฅผ ํ AI ๋ชจ๋ธ ํ์ต์ ๋ฌด๋จ ์ฌ์ฉํ๋ ํ์๋ ๊ธ์ง๋๋ฉฐ, ์ด๋ ์ง์ ์ฌ์ฐ๊ถ ์นจํด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์์ง ๋๊ธ์ด ์์ต๋๋ค.