[์ฟ ๋ฒ๋คํฐ์ค ์์] ์ฟ ๋ฒ๋คํฐ์ค ์ธ์ฌ์ด๋
1. ์ฟ ๋ฒ๋คํฐ์ค ๊ตฌ์ฑ ์์

์ ๊ทธ๋ฆผ์ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ํต์ฌ ๊ตฌ์ฑ์์ ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ค์ด์ด๊ทธ๋จ์ด๋ค. ํฌ๊ฒ ๋ณด๋ฉด ๋ค์ 3๊ฐ์ ์์ญ์ผ๋ก ๋๋ ์ ์๋ค.
1. Control Plane = ํด๋ฌ์คํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋๋
2. Cluster Addons = ๊ธฐ๋ณธ ๋คํธ์ํฌ / DNS ๊ธฐ๋ฅ
3. Node Components = ๊ฐ ๋ ธ๋์์ ์คํ๋๋ ๊ตฌ์ฑ์์
1) Control Plane ๊ตฌ์ฑ์์
ํด๋ฌ์คํฐ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ ์ค์ผ์ค๋งํ๋ ํต์ฌ ์ปดํฌ๋ํธ์ด๋ค.
- API Server (api)
- ์ฟ ๋ฒ๋คํฐ์ค์ ๋ชจ๋ ์์ฒญ์ด ๋ค์ด์ค๋ ๊ด๋ฌธ
- ์ญํ
- kubectl ๋ช ๋ น ์ฒ๋ฆฌ
- ํด๋ฌ์คํฐ ์ํ ๊ด๋ฆฌ
- ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค์ด API๋ก ํต์
- etcd
- ์ฟ ๋ฒ๋คํฐ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์ญํ
- ํด๋ฌ์คํฐ ์ํ ์ ์ฅ
- ๋ชจ๋ ๋ฆฌ์์ค ์ ๋ณด ์ ์ฅ
- Controller Manager (c-m)
- ํด๋ฌ์คํฐ ์ํ๋ฅผ ์ํ๋ ์ํ๋ก ์ ์งํ๋ ์ปจํธ๋กค๋ฌ ๋ชจ์
- ์์
- deployment๋ก pod 3๊ฐ ์ ์ง์ธ๋ฐ ํ์ฌ 2๊ฐ์ด๋ฉด Controller Manager๊ฐ pod 1๊ฐ ์ถ๊ฐ ์์ฑ
- Scheduler (sched)
- Pod๋ฅผ ์ด๋ ๋ ธ๋์ ๋ฐฐ์นํ ์ง ๊ฒฐ์
- Scheduler์ ํ๋จ
- CPU, Memory, Node ์ํ, Affinity, Taint/Toleration
2) Cluster Addons
- CoreDNS
- ์ฟ ๋ฒ๋คํฐ์ค ๋ด๋ถ DNS ์๋ฒ๋ก Pod๊ฐ ํต์ ํ ๋ ์ฌ์ฉ
- kube-proxy (k-proxy)
- Service ๋คํธ์ํฌ ๊ตฌํ
- CNI (Calico)
- Container Network Interface
- Pod ๋คํธ์ํฌ ์ ๊ณต
- Pod IP ํ ๋น ๋ฑ์ ํตํด Pod๊ฐ ํต์ ๊ฐ๋ฅํ๊ฒ ๋ง๋ฆ
3) Node Components
๊ฐ Worker Node์์ ์คํ๋๋ค.
- kubelet
- ๋ ธ๋์์ Pod๋ฅผ ์ค์ ์คํํ๋ ์์ด์ ํธ
- container runtime
- ์ : containerd, CRI-0, Docker(๊ตฌ๋ฒ์ )
- systemd
- ๋ฆฌ๋ ์ค ์๋น์ค ๊ด๋ฆฌ์
- kubelet ์คํ ๋ฐฉ์
4) Kubernetes Workload ๋ฆฌ์์ค
- Pod
- ์ฟ ๋ฒ๋คํฐ์ค์ ์ต์ ์คํ ๋จ์
- ์ปจํ ์ด๋ ๋ฌถ์, IP๊ณต์ , ์คํ ๋ฆฌ์ง ๊ณต์
- Deployment (deploy)
- Pod ๊ด๋ฆฌ ๋ฆฌ์์ค
- ๊ธฐ๋ฅ
- ๋กค๋ง ์ ๋ฐ์ดํธ
- Replica ๊ด๋ฆฌ
- ์๋ ๋ณต๊ตฌ
- DaemonSet (ds)
- ๋ชจ๋ ๋ ธ๋์ Pod ํ๋์ฉ ์คํ
2. ๊ตฌ์ญ์ ๋๋๋ ๋ค์์คํ์ด์ค(Namespace)

์ฟ ๋ฒ๋คํฐ์ค์์์ ๋ค์์คํ์ด์ค๋ ํด๋ฌ์คํฐ ์์ ๋ฆฌ์์ค๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋๋๋ ๊ฐ์ ๊ณต๊ฐ์ด๋ค.
1. deafult namespace = ์ฌ์ฉ์๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ๊ณต๊ฐ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ , ์น์๋ฒ ๋ฑ์ด ๋ค์ด๊ฐ๋ค.
2. kube-system = ์ฟ ๋ฒ๋คํฐ์ค ์์คํ ๊ตฌ์ฑ์์๋ค์ด ๋ค์ด๊ฐ๋ ๊ณต์ผ๋ก scheduler, calico, kube-proxy ๋ฑ๋ฑ
3. metallb-system namespace = MetalLB ๊ฐ์ ๋คํธ์ํฌ ์ปดํฌ๋ํธ๋ฅผ ์ํ namespace
kube-system ๊ตฌ์ฑ์์ ๋ณด๊ธฐ

kubectl get pods -n kube-system ์ ํตํด ์จ๊ฒจ์ ธ ์๋ pod๋ค์ ํ์ธํ ์ ์๋ค.
AWS์ EKS, Azure์ AKS, GCP์ GKE ์ ๋ถ kube-system์ด ์๋ค.
3. ์ฟ ๋ฒ๋คํฐ์ค ๊ตฌ์ฑ ์์๋ค์ด ํ๋ ์ผ
1) ์ฟ ๋ฒ๋คํฐ์ค์ ๊ธฐ๋ณธ ์ฒ ํ

์ฟ ๋ฒ๋คํธ์ค๋ ๊ฐ์์ ์ผ์ ์ด์ฌํ ํ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ณ์ด๋ค.
2) ํ๋๊ฐ ๋ฐฐํฌ ๋๋ค๋ฉด

1. ํ๋ ์์ฑ์์ฒญ
์์ฑ ์์ฒญ์ด API ์๋ฒ๋ก ๋์ด๊ฐ
2. ์ปจํธ๋กค ๋งค๋์ ์ ํ๋ ์์ฑ์ด ๋์๋์ง ๊ฐ์ํ๊ณ ์ปจํธ๋กค ๋งค๋์ ๊ฐ API ์๋ฒ์ ๋ด์ฉ์ ๋ณด๊ณ ๊ฐ์ ์ ์ธํ ๊ฐ์ API ์๋ฒ๋ก ๊ฒฐ๊ณผ ์ํ ์ ๋ฐ์ดํธ
3. API์๋ฒ๋ ๋๋ค์ ์ค์ผ์ค๋ฌ์ ์๋ก์ด ํ๋๊ฐ ์์ปค ๋ ธ๋์ ๋ค์ด๊ฐ๋์ง ๊ฐ์๋ง ํ๊ณ ์ค์ผ์ค๋ฌ๋ ์ค์ผ์ค๋ง ํ๊ณ API ์๋ฒ๋ก ๊ฒฐ๊ณผ ์ํ ์ ๋ฐ์ดํธ
4. API์๋ฒ๋ kubelet์ ์๋ก์ด ํ๋๊ฐ ๋ ธ๋์ ์ ์์๋์ด ์๋์ง ๊ฐ์
5. kubelet์ด ์ปจํ ์ด๋ ๋ฐํ์์ผ๋ก ์ปจํ ์ด๋ ์์ฑ
6. ํ๋ ์ํ ์ ๋ณด๋ฅผ API ์๋ฒ๋ก ๊ฒฐ๊ณผ ์ํ ์ ๋ฐ์ดํธ
4. ์ฟ ๋ฒ๋คํฐ์ค๋ ์ ์ธ์ ์์คํ

์ฟ ๋ฒ๋คํฐ์ค๋ ์ถ๊ตฌํ๋ ์ํ์ ํ์ฌ์ํ๋ฅผ ๋ง์ถ๋ ค๊ณ ํ๋ ์ ์ธ์ ์์คํ ์ด๋ค.
5. API์ ETCD

etcd๋ API๊ฐ ์ถ๊ตฌํ๋ ๊ฐ ์ ์ธํ ๊ฐ์ ํ๋ฐ๋์ง ์๊ฒ ์ ์ฅํด์ฃผ๋ ๊ณณ์ด๋ค. API ์๋ฒ๊ฐ etcd์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
6. ์ฟ ๋ฒ๋คํฐ์ค์ ํ๋ ๋ฐฐํฌ ์ ์ฒด ํ๋ฆ ๋ณด๊ธฐ

1. kubectl ๋ฅผ ํตํด API ์๋ฒ์ ์๊ตฌํ๋ ๋ช ๋ น์ ๋ณด๋
2. API๋ etcd์ ์ ์ธ๋ ์ ๋ณด๋ฅผ ๊ฐ์ฅ ๋จผ์ ๋ณด๋ (๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด etcd ์ ๋ณด๋ฅผ ๋ณต์)
3. API ์๋ฒ๋ฅผ ์ปจํธ๋กค ๋งค๋์ ๊ฐ ๋ณด๊ณ ๊ฐ์ ๋ฐ๊พผ๋ค API ์๋ฒ์ ๊ฒฐ๊ณผ ์ํ ์ ๋ฐ์ดํธ
4. API ์๋ฒ๋ฅผ ์ค์ผ์ค๋ฌ๊ฐ ๋ณด๊ณ ์ ๋ฐ์ดํธ ํ ๋ค, API ์๋ฒ์ ๊ฒฐ๊ณผ ์ํ ์ ๋ฐ์ดํธ
5-7. API ์๋ฒ๋ฅผ ๋ณด๊ณ kubelet์ด pod ์์ฑํ๊ธฐ ์ํด ์ปจํ ์ด๋ ๋ฐํ์์๊ฒ ์์ฒญํด์ pod ์์ฑ
8. ์ค์ ๋ก ์ฌ์ฉ์์ ํต์ ํ๊ธฐ ์ํด kube-proxy๋ฅผ ํ์ฉ
9. kubelet์ API ์๋ฒ์ ๊ฒฐ๊ณผ ์ํ ์ ๋ฐ์ดํธ
์ฌ๊ธฐ์ ๊ฐ์ฅ ์ค์ํ ์์๋ API ์๋ฒ๋ ๋ชจ๋ ๊ฒ์ ์ค์ฌ์ ์๋ค. API ์๋ฒ๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ด๋ฃจ๋ ๋ชจ๋ ๊ฒ์ ๊ฒ์ดํธ์จ์ด์ด๋ค.
์ถ๊ฐ ๊ฐ๋ :

์ฟ ๋ฒ๋คํฐ์ค์์ IP๋ฅผ ํ ๋นํ ๋, ์ฐ๋ฆฌ๊ฐ ์ง์ ์ง์ ํ ์ ์๊ณ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ง์ ์ง์ ํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ด๋ฆ์ผ๋ก ์ ๊ทผํ๊ฒ ๋ ํ๊ธฐ ์ํ ๊ฒ์ด CoreDNS ์ด๋ค.
๋๊ธ