Kubernetes ์ ๋ฌธ — Pod·Deployment·Service ํ ๋ฒ์ ์ ๋ฆฌ. ์ปจํ ์ด๋ ํ๋๋ Docker๋ก ๋์ ๋ค. ๊ทธ๋ฐ๋ฐ ์์ญ ๊ฐ๋ฅผ, ์ฌ๋ฌ ์๋ฒ์์, ์ฃฝ์ผ๋ฉด ์ด๋ฆฌ๊ณ ํธ๋ํฝ์ ๋ง์ถฐ ๋๋ฆฌ๋ ค๋ฉด? ๊ทธ๊ฒ ์ฟ ๋ฒ๋คํฐ์ค๋ค. ์ค์ผ์คํธ๋ ์ด์ ์ด ํ์ํ ์ด์ ๋ถํฐ ํต์ฌ ์ค๋ธ์ ํธ์ kubectl๊น์ง, ์ค์ ๋งค๋ํ์คํธ์ ์ถ๋ ฅ์ผ๋ก ์ ๋ฆฌํ๋ค.

๋ค์ด๊ฐ๋ฉฐ
์์ Spark๋ฅผ Kubernetes ์์ ์ฌ๋ฆฌ๋ฉด ๋ฌด์์ด ๋ฌ๋ผ์ง๋๊ฐ ๊ธ์์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ "์ปจํ ์ด๋ ์ํฌ๋ก๋๋ฅผ ์ด์ํ๋ ํ์ค ์ด์ ์ฒด๊ณ"๋ผ๊ณ ํ ๋ฌธ๋จ์ผ๋ก๋ง ์งง๊ฒ ์ง๊ณ ๋์ด๊ฐ๋ค. ์ด๋ฒ ๊ธ์ ๊ทธ ํ ๋ฌธ๋จ์ ์ ๋๋ก ํผ์น๋, ์ฟ ๋ฒ๋คํฐ์ค ์ ๋ฌธ ์์ธํ์ด๋ค.
ํ๋ฆ์ ์ด๋ ๊ฒ ์ด์ด์ง๋ค. Docker ์ ๋ฌธ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฏธ์ง๋ก ๋ง๋ค๊ณ ์ปจํ ์ด๋๋ก ๋์ ๊ณ , GitHub Actions๋ก CI/CD์์ ๊ทธ ์ด๋ฏธ์ง๋ฅผ ์๋์ผ๋ก ๋น๋·๋ฐฐํฌํ๋ค. ๊ทธ๋ผ ๋ค์ ์ง๋ฌธ์ ์์ฐ์ค๋ฝ๋ค. "์ปจํ ์ด๋ ํ๋๊ฐ ์๋๋ผ ์์ญ ๊ฐ๋ฅผ, ์ฌ๋ฌ ์๋ฒ์ ๊ฑธ์ณ, ์ฃฝ์ผ๋ฉด ๋์ด๋ฆฌ๊ณ , ํธ๋ํฝ์ด ๋๋ฉด ๋๋ฆฌ๋ฉด์ ์ด์ํ๋ ค๋ฉด?" ์ด ์ง๋ฌธ์ ๋ต์ด ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ , ์ฆ ์ฟ ๋ฒ๋คํฐ์ค(Kubernetes, ์ค์ฌ์ K8s)๋ค.
์ฟ ๋ฒ๋คํฐ์ค์ ํต์ฌ ํ ์ค: "์ํ๋ ์ํ(desired state)๋ฅผ ์ ์ธํ๋ฉด, ํด๋ฌ์คํฐ๊ฐ ์์์ ๊ทธ ์ํ๋ฅผ ์ ์งํ๋ค." ์ฌ๋์ด ์ปจํ ์ด๋๋ฅผ ์ผ์ผ์ด ๋์ฐ๊ณ ๊ฐ์ํ๋ ๊ฒ ์๋๋ผ, "๋๋ ์ด๊ฒ 3๊ฐ ๋ ์๊ธธ ์ํด"๋ผ๊ณ ์ ์ธํ๋ฉด ์์คํ ์ด ๊ทธ๊ฑธ ์ฑ ์์ง๋ค.
์ด ๊ธ์์๋ ์ Docker๋ง์ผ๋ก๋ ๋ถ์กฑํ์ง๋ถํฐ ์์ํด, ํด๋ฌ์คํฐ์ ๊ตฌ์กฐ, ๊ฐ์ฅ ์์ ๋จ์์ธ Pod, ์ ์ธ์ ๊ด๋ฆฌ์ ์๊ฐ๋ณต๊ตฌ๋ฅผ ๋ด๋นํ๋ Deployment, ์์ ์ ์ธ ์ง์
์ ์ธ Service, ๊ทธ๋ฆฌ๊ณ ์ด ๋ชจ๋ ๊ฑธ ์กฐ์ํ๋ kubectl๊น์ง ์ค์ ๋งค๋ํ์คํธ์ ํจ๊ป ์ ๋ฆฌํ๋ค.
1. ์ Kubernetes์ธ๊ฐ — Docker๋ง์ผ๋ก ๋ถ์กฑํ ์ง์
Docker๋ก ์ปจํ ์ด๋ ํ๋๋ฅผ ๋์ฐ๋ ๊ฑด ์ฝ๋ค. ๋ฌธ์ ๋ ์ค์๋น์ค ๊ท๋ชจ๊ฐ ๋๋ ์๊ฐ์ด๋ค. ์ปจํ ์ด๋๊ฐ ์์ญ ๊ฐ๋ก ๋๊ณ , ์๋ฒ๋ ์ฌ๋ฌ ๋๊ฐ ๋๋ฉด ์ด๋ฐ ์ผ๋ค์ ๋๊ตฐ๊ฐ ํด์ผ ํ๋ค.
- ์ด๋ ์ปจํ ์ด๋๋ฅผ ์ด๋ ์๋ฒ์ ๋ฐฐ์นํ ์ง (๋ฆฌ์์ค ์ฌ์ ๋ฅผ ๋ณด๊ณ )
- ์ปจํ ์ด๋๊ฐ ์ฃฝ์ผ๋ฉด ์๋์ผ๋ก ๋์ด๋ฆฌ๊ธฐ
- ํธ๋ํฝ์ด ๋๋ฉด ๊ฐ์๋ฅผ ๋๋ฆฌ๊ณ , ์ค๋ฉด ์ค์ด๊ธฐ (์ค์ผ์ผ๋ง)
- ์ ๋ฒ์ ์ ๋ฌด์ค๋จ์ ๊ฐ๊น๊ฒ ๊ต์ฒดํ๊ณ , ๋ฌธ์ ์๊ธฐ๋ฉด ๋๋๋ฆฌ๊ธฐ (๋กค๋ง ์ ๋ฐ์ดํธ·๋กค๋ฐฑ)
- ์ฃฝ๊ณ ์ด์๋๋ฉฐ IP๊ฐ ๊ณ์ ๋ฐ๋๋ ์ปจํ ์ด๋๋ค์๊ฒ ์์ ์ ์ธ ์ฃผ์๋ก ํธ๋ํฝ ๋ณด๋ด๊ธฐ
์ด๊ฑธ docker run๊ณผ ์
ธ ์คํฌ๋ฆฝํธ๋ก ์ฌ๋์ด ์ง์ ํ๋ฉด, ์๋ฒ ๋ช ๋๋ง ๋์ด๊ฐ๋ ๊ณง ํ๊ณ์ ๋ถ๋ชํ๋ค. ์ด ์ด์ ์์
์ ์ฒด๋ฅผ ์๋ํํ๋ ์์คํ
์ด ์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ดํฐ์ด๊ณ , ๊ทธ ์ฌ์ค์์ ํ์ค์ด ์ฟ ๋ฒ๋คํฐ์ค๋ค. ๊ตฌ๊ธ์ด ๋ด๋ถ์์ ์ฐ๋ Borg์์ ์ถ๋ฐํด ์คํ์์ค๋ก ๊ณต๊ฐ๋๊ณ , ์ง๊ธ์ CNCF๊ฐ ๊ด๋ฆฌํ๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ด์์ ๊ธฐ๋ฐ์ด ๋๋ค.
ํต์ฌ ์ฒ ํ์ ์ ์ธ์ (declarative)์ด๋ผ๋ ์ ์ด๋ค. "์ด ๋ช ๋ น์ ์คํํด๋ผ"(๋ช ๋ นํ)๊ฐ ์๋๋ผ "์ต์ข ์ํ๊ฐ ์ด๋์ผ ํ๋ค"(์ ์ธํ)๋ฅผ ์ ์ด๋๋ฉด, ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ํ์ฌ ์ํ์ ๋น๊ตํด ๊ทธ ์ฐจ์ด๋ฅผ ๋์์์ด ๋ฉ์ด๋ค.
2. ํด๋ฌ์คํฐ์ ๊ตฌ์กฐ — ์ปจํธ๋กค ํ๋ ์ธ๊ณผ ์์ปค ๋ ธ๋
์ฟ ๋ฒ๋คํฐ์ค๋ ์ฌ๋ฌ ์๋ฒ๋ฅผ ๋ฌถ์ด ํ๋์ ํด๋ฌ์คํฐ(cluster)๋ก ๋ค๋ฃฌ๋ค. ํด๋ฌ์คํฐ๋ ๋ ์ข ๋ฅ์ ๊ตฌ์ฑ์์ผ๋ก ๋๋๋ค.
- ์ปจํธ๋กค ํ๋ ์ธ(Control Plane) — ํด๋ฌ์คํฐ์ ๋๋. ๋ฌด์์ ์ด๋์ ๋ฐฐ์นํ ์ง ๊ฒฐ์ ํ๊ณ ์ ์ฒด ์ํ๋ฅผ ๊ด๋ฆฌํ๋ค.
- ์์ปค ๋ ธ๋(Worker Node) — ์ค์ ๋ก ์ปจํ ์ด๋(Pod)๋ฅผ ์คํํ๋ ์ผ๊พผ ์๋ฒ๋ค.

์ปจํธ๋กค ํ๋ ์ธ์ ์ฃผ์ ๊ตฌ์ฑ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
- API Server — ํด๋ฌ์คํฐ์ ์ ๋ฌธ.
kubectl์ ๋น๋กฏํ ๋ชจ๋ ์์ฒญ์ด ์ฌ๊ธฐ๋ฅผ ๊ฑฐ์น๋ค. - Scheduler — ์ Pod๋ฅผ ์ด๋ ๋ ธ๋์ ์ฌ๋ฆด์ง ๊ฒฐ์ ํ๋ค.
- Controller Manager — "์ํ๋ ์ํ"์ "ํ์ฌ ์ํ"๋ฅผ ๋น๊ตํด ๋์์์ด ๋ง์ถ๋ค. ์๊ฐ๋ณต๊ตฌ์ ์ฃผ์ญ์ด๋ค.
- etcd — ํด๋ฌ์คํฐ์ ๋ชจ๋ ์ํ๋ฅผ ์ ์ฅํ๋ ํค-๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค.
์์ปค ๋
ธ๋์๋ kubelet(๋
ธ๋์์ Pod๋ฅผ ์ค์ ๋ก ๋์ฐ๊ณ ์ํ๋ฅผ ๋ณด๊ณ ), kube-proxy(๋คํธ์ํฌ ๋ผ์ฐํ
), ๊ทธ๋ฆฌ๊ณ ์ปจํ
์ด๋ ๋ฐํ์(containerd ๋ฑ, ์ค์ ์ปจํ
์ด๋ ์คํ)์ด ๋๋ค. ๊ฐ๋ฐ์๋ ๋ณดํต ์ด ๋ด๋ถ๋ฅผ ์ง์ ๋ง์ง ์ผ์ด ์๋ค. kubectl๋ก API Server์ "์ํ๋ ์ํ"๋ฅผ ๋์ง๋ฉด, ๋๋จธ์ง๋ ํด๋ฌ์คํฐ๊ฐ ์์์ ์ฒ๋ฆฌํ๋ค.
3. ๊ฐ์ฅ ์์ ๋ฐฐํฌ ๋จ์ — Pod
์ฟ ๋ฒ๋คํฐ์ค์์ ์ปจํ ์ด๋๋ฅผ ์ง์ ๋ค๋ฃจ์ง๋ ์๋๋ค. ์ต์ ๋จ์๋ Pod๋ค. Pod๋ ์ปจํ ์ด๋ ํ๋(๋๋ ๊ธด๋ฐํ ๋ฌถ์ธ ๋ช ๊ฐ)๋ฅผ ๊ฐ์ผ ๊ป๋ฐ๊ธฐ๋ก, ๊ฐ์ Pod ์์ ์ปจํ ์ด๋๋ค์ ๋คํธ์ํฌ(๊ฐ์ IP)์ ์คํ ๋ฆฌ์ง๋ฅผ ๊ณต์ ํ๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ "Pod ํ๋ = ์ปจํ ์ด๋ ํ๋"๋ก ์๊ฐํ๋ฉด ๋๋ค.
์ค์ํ ์ฑ์ง์ด ํ๋ ์๋ค. Pod๋ ์ผํ์ฉ(ephemeral)์ด๋ผ๋ ์ ์ด๋ค. ์ฃฝ์ผ๋ฉด ๊ณ ์ณ ์ฐ๋ ๊ฒ ์๋๋ผ ๋ฒ๋ฆฌ๊ณ ์๋ก ๋ง๋ ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ก ๋ฌ Pod๋ IP๊ฐ ๋ฐ๋๋ค. ์ด "Pod๋ ์ธ์ ๋ ์ฌ๋ผ์ง๊ณ ์๋ก ์๊ธด๋ค"๋ ์ ์ ๊ฐ ๋ค์ ๋์ฌ Deployment(์๊ฐ๋ณต๊ตฌ)์ Service(์์ ์ ์ฃผ์)๊ฐ ์กด์ฌํ๋ ์ด์ ๋ค.
๊ทธ๋์ ์ค๋ฌด์์ Pod๋ฅผ ์ง์ ๋ง๋๋ ์ผ์ ๋๋ฌผ๋ค. Pod๋ฅผ ์ง์ ๋ง๋ค๋ฉด ๊ทธ Pod๊ฐ ์ฃฝ์์ ๋ ์๋ฌด๋ ๋์ด๋ฆฌ์ง ์๋๋ค. ๋์ Pod๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ์์ ์ค๋ธ์ ํธ — Deployment๋ฅผ ์ด๋ค.
4. ์ ์ธ์ ๊ด๋ฆฌ์ ์๊ฐ๋ณต๊ตฌ — Deployment
Deployment๋ "์ด Pod๋ฅผ ๋ช ๊ฐ๋ก, ์ด๋ค ์ด๋ฏธ์ง๋ก ์ ์งํด๋ผ"๋ฅผ ์ ์ธํ๋ ์ค๋ธ์ ํธ๋ค. ๊ทธ๋ฌ๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ๊ทธ ๊ฐ์๋ฅผ ํญ์ ๋ง์ถ๋ค. Pod๊ฐ ์ฃฝ์ผ๋ฉด ์๋ก ๋์ฐ๊ณ , ๊ฐ์๋ฅผ ๋ฐ๊พธ๋ฉด ๊ฑฐ๊ธฐ์ ๋ง์ถ๋ค. ์ด ์ผ์ ๋ด๋ถ์ ์ผ๋ก ReplicaSet์ด ๋ด๋นํ๋ค.

CI/CD์์ ghcr.io์ ์ฌ๋ฆฐ ์ด๋ฏธ์ง๋ฅผ 3๊ฐ๋ก ๋์ฐ๋ Deployment ๋งค๋ํ์คํธ๋ ์ด๋ ๊ฒ ์๊ฒผ๋ค.
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3 # Pod๋ฅผ ํญ์ 3๊ฐ ์ ์ง (desired state)
selector:
matchLabels:
app: myapp
template: # ์ด ํ๋ก Pod๋ฅผ ์ฐ์ด๋ธ๋ค
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: ghcr.io/jinoism/myapp:main # CI/CD์์ ๋น๋·ํธ์ํ ์ด๋ฏธ์ง
ports:
- containerPort: 3000
์ด ํ์ผ์ kubectl apply๋ก ํด๋ฌ์คํฐ์ ๋์ง๋ฉด, Pod 3๊ฐ๊ฐ ๋ฌ๋ค.
kubectl apply -f deployment.yaml
# deployment.apps/myapp created
kubectl get pods
NAME READY STATUS RESTARTS AGE
myapp-7d9f8c6b4c-2xk9p 1/1 Running 0 12s
myapp-7d9f8c6b4c-8fmlq 1/1 Running 0 12s
myapp-7d9f8c6b4c-q7r2t 1/1 Running 0 12s
์ด์ ์๊ฐ๋ณต๊ตฌ๋ฅผ ๋์ผ๋ก ํ์ธํด๋ณด์. Pod ํ๋๋ฅผ ๊ฐ์ ๋ก ์ง์ด๋ค.
kubectl delete pod myapp-7d9f8c6b4c-2xk9p
kubectl get pods
NAME READY STATUS RESTARTS AGE
myapp-7d9f8c6b4c-8fmlq 1/1 Running 0 40s
myapp-7d9f8c6b4c-q7r2t 1/1 Running 0 40s
myapp-7d9f8c6b4c-vv5n8 1/1 Running 0 3s ← ์๋ก ์์ฑ๋จ
์ง์ด Pod ์๋ฆฌ์ ์ Pod๊ฐ ์๋์ผ๋ก ์๊ฒผ๋ค. "๋๋ 3๊ฐ๋ฅผ ์ํด"๋ผ๋ ์ ์ธ์ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ๊ณ์ ์งํค๋ ๊ฒ์ด๋ค. ๊ฐ์๋ฅผ ๋ฐ๊พธ๋ ๊ฒ๋ ํ ์ค์ด๋ค.
kubectl scale deployment myapp --replicas=5 # 5๊ฐ๋ก ํ์ฅ
์ ๋ฒ์ ๋ฐฐํฌ๋ ์ด๋ฏธ์ง ํ๊ทธ๋ง ๋ฐ๊ฟ applyํ๋ฉด, ์ฟ ๋ฒ๋คํฐ์ค๊ฐ Pod๋ฅผ ํ๋์ฉ ๊ต์ฒด(๋กค๋ง ์
๋ฐ์ดํธ)ํ๋ฉฐ ๋ฌด์ค๋จ์ ๊ฐ๊น๊ฒ ๊ฐฑ์ ํ๋ค. ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด kubectl rollout undo๋ก ๋๋๋ฆฐ๋ค.
5. ์์ ์ ์ธ ์ง์ ์ — Service
3๋ฒ์์ ๋ดค๋ฏ Pod๋ ์ฃฝ๊ณ ์ด์๋๋ฉฐ IP๊ฐ ๋ฐ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ค๋ฅธ ์๋น์ค๋ ์ฌ์ฉ์๋ ์ด๋ค ์ฃผ์๋ก ์ ์ํด์ผ ํ ๊น? ๋ฐ๋๋ Pod IP๋ฅผ ์ง์ ๋ถ๋ฅผ ์๋ ์๋ค. ์ด ๋ฌธ์ ๋ฅผ ํธ๋ ๊ฒ Service๋ค.
Service๋ ๋ณํ์ง ์๋ ๊ฐ์ IP(์ ์ด๋ฆ)๋ฅผ ์ ๊ณตํ๊ณ , ๊ทธ ๋ค์ ์ฌ๋ฌ Pod๋ค๋ก ํธ๋ํฝ์ ๋ก๋๋ฐธ๋ฐ์ฑํ๋ค. Pod๊ฐ ๊ต์ฒด๋ผ๋ Service ์ฃผ์๋ ๊ทธ๋๋ก๋ค. ๋ผ๋ฒจ ์
๋ ํฐ(app: myapp)๋ก "์ด๋ค Pod๋ค์๊ฒ ๋ณด๋ผ์ง"๋ฅผ ๊ณ ๋ฅธ๋ค.

# service.yaml
apiVersion: v1
kind: Service
metadata:
name: myapp
spec:
selector:
app: myapp # ์ด ๋ผ๋ฒจ์ ๊ฐ์ง Pod๋ค๋ก ํธ๋ํฝ ์ ๋ฌ
ports:
- port: 80 # Service๊ฐ ๋ฐ๋ ํฌํธ
targetPort: 3000 # ์ ๋ฌํ Pod(์ปจํ
์ด๋) ํฌํธ
type: ClusterIP # ๋
ธ์ถ ๋ฐฉ์ (๊ธฐ๋ณธ๊ฐ)
type์ด ๋
ธ์ถ ๋ฒ์๋ฅผ ์ ํ๋ค.
- ClusterIP (๊ธฐ๋ณธ) — ํด๋ฌ์คํฐ ๋ด๋ถ์์๋ง ์ ๊ทผ. ์๋น์ค ๊ฐ ๋ด๋ถ ํต์ ์ฉ.
- NodePort — ๊ฐ ๋ ธ๋์ ํน์ ํฌํธ๋ก ์ธ๋ถ์์ ์ ๊ทผ.
- LoadBalancer — ํด๋ผ์ฐ๋์ ๋ก๋๋ฐธ๋ฐ์๋ฅผ ๋ถ์ฌ ์ธ๋ถ์ ๋ ธ์ถ. EKS·GKE ๊ฐ์ ๋งค๋์ง๋ ํ๊ฒฝ์์ ํํ ์ด๋ค.
์ฌ๋ฌ Service๋ฅผ ํ๋์ ๋๋ฉ์ธ/๊ฒฝ๋ก ๊ท์น์ผ๋ก ๋ฌถ์ด ์ธ๋ถ์ ๋ ธ์ถํ๋ ค๋ฉด ๊ทธ ์์ Ingress(๋๋ Gateway API)๋ฅผ ๋๋ค. ์ ๋ฌธ ๋จ๊ณ์์ "Service = ๋ฐ๋๋ Pod๋ค ์์ ๊ณ ์ ์ฃผ์ + ๋ก๋๋ฐธ๋ฐ์"๋ก ์ดํดํ๋ฉด ์ถฉ๋ถํ๋ค.
6. kubectl — ์์ ์ตํ์ผ ํ ๊ธฐ๋ณธ ๋ช ๋ น
kubectl์ ํด๋ฌ์คํฐ์ ๋ํํ๋ CLI๋ค. ๊ฑฐ์ ๋ชจ๋ ์์
์ด ์ด ๋ช
๋ น์ผ๋ก ์ด๋ค์ง๋ค. ๋จผ์ ํด๋ฌ์คํฐ์ ๋
ธ๋ ์ํ๋ถํฐ ๋ณธ๋ค.
kubectl get nodes
NAME STATUS ROLES AGE VERSION
node-1 Ready control-plane 5d v1.36.2
node-2 Ready <none> 5d v1.36.2
node-3 Ready <none> 5d v1.36.2
์์ฃผ ์ฐ๋ ๋ช ๋ น์ ํ๋ก ์ ๋ฆฌํ๋ฉด ์ด๋ ๋ค.
| ๋ช ๋ น์ด | ํ๋ ์ผ |
kubectl apply -f ํ์ผ.yaml |
๋งค๋ํ์คํธ์ ์ํ๋ฅผ ํด๋ฌ์คํฐ์ ์ ์ฉ (์์ฑ·๊ฐฑ์ ) |
kubectl get pods / get deploy / get svc |
Pod·Deployment·Service ๋ชฉ๋ก ๋ณด๊ธฐ |
kubectl describe pod ์ด๋ฆ |
ํน์ ๋ฆฌ์์ค์ ์์ธ ์ ๋ณด·์ด๋ฒคํธ (์ฅ์ ์์ธ ์ถ์ ) |
kubectl logs ์ด๋ฆ |
Pod ๋ก๊ทธ ๋ณด๊ธฐ (-f๋ก ์ค์๊ฐ) |
kubectl exec -it ์ด๋ฆ -- sh |
์คํ ์ค์ธ Pod ์์ผ๋ก ์ ธ ์ง์ |
kubectl scale deploy ์ด๋ฆ --replicas=N |
๋ ํ๋ฆฌ์นด ๊ฐ์ ์กฐ์ |
kubectl rollout undo deploy ์ด๋ฆ |
์ง์ ๋ฐฐํฌ๋ก ๋กค๋ฐฑ |
kubectl delete -f ํ์ผ.yaml |
๋งค๋ํ์คํธ๊ฐ ๋ง๋ ๋ฆฌ์์ค ์ญ์ |
์ฅ์ ๊ฐ ๋ฌ์ ๋ ๊ฐ์ฅ ๋จผ์ ๋ณด๋ ๊ฑด ๋ณดํต describe์ logs๋ค. describe๋ "์ ์ด Pod๊ฐ ์ ๋จ๋๊ฐ"(์ด๋ฏธ์ง pull ์คํจ, ์ค์ผ์ค๋ง ์คํจ ๋ฑ)๋ฅผ ์ด๋ฒคํธ๋ก ๋ณด์ฌ์ฃผ๊ณ , logs๋ ์ปจํ
์ด๋ ๋ด๋ถ์์ ๋ฌด์จ ์ผ์ด ์์๋์ง ์๋ ค์ค๋ค. Spark on Kubernetes ๊ธ์์ "๋๋ฒ๊น
๊ด์ ์ด ์ ํ๋ฆฌ์ผ์ด์
์์ ํด๋ฌ์คํฐ๊น์ง ๋์ด์ง๋ค"๊ณ ํ๋ ๊ฒ ๋ฐ๋ก ์ด ์ง์ ์ด๋ค.
7. ์ธ์ Kubernetes๋ฅผ ์จ์ผ ํ๋ — ๊ทธ๋ฆฌ๊ณ ๋งค๋์ง๋
์ฟ ๋ฒ๋คํฐ์ค๋ ๊ฐ๋ ฅํ์ง๋ง ๊ณต์ง๊ฐ ์๋๋ค. ํด๋ฌ์คํฐ ์์ฒด๋ฅผ ์ด์ํ๋ ๋ถ๋ด, ๋คํธ์ํน·์คํ ๋ฆฌ์ง·๋ณด์(RBAC·Secret) ์ค๊ณ, ํ์ต ๊ณก์ ์ด ๋ชจ๋ ๋น์ฉ์ด๋ค. ๊ทธ๋์ ํ๋จ์ด ํ์ํ๋ค.
- ์ ๋ง๋ ๊ฒฝ์ฐ: ์๋น์ค๊ฐ ์ฌ๋ฌ ๊ฐ๋ก ์ชผ๊ฐ์ ธ ์๊ณ (๋ง์ดํฌ๋ก์๋น์ค), ํธ๋ํฝ ๋ณ๋์ด ํฌ๊ฑฐ๋, ๋ฌด์ค๋จ ๋ฐฐํฌ·์๋ ํ์ฅ·๋ณต์๋ ฅ์ด ์ค์ํ๊ณ , ์ด์์ ํ์คํํ๊ณ ์ถ์ ๋.
- ๊ณผํ ๊ฒฝ์ฐ: ์์ ๋จ์ผ ์๋น์ค, ํธ๋ํฝ์ด ์์ ์ ์ด๊ณ , ํ์ ์ธํ๋ผ ์ฌ๋ ฅ์ด ์์ ๋. ์ด๋ด ๋ Docker Compose๋ ๋งค๋์ง๋ PaaS(Vercel ๋ฑ)๊ฐ ๋ ํฉ๋ฆฌ์ ์ด๋ค.
์ง์ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถ·์ด์ํ๋ ๋ถ๋ด์ ์ค์ด๋ ค๋ฉด ๋งค๋์ง๋ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ด๋ค. AWS์ EKS, Google์ GKE, Azure์ AKS๊ฐ ๋ํ์ ์ด๋ค. ์ปจํธ๋กค ํ๋ ์ธ ์ด์์ ํด๋ผ์ฐ๋๊ฐ ๋์ ๋งก์์ฃผ๋ฏ๋ก, ํ์ ์ํฌ๋ก๋(๋งค๋ํ์คํธ)์ ์ง์คํ ์ ์๋ค. ์ ๋ฌธ·ํ์ต์ฉ์ผ๋ก ๋ก์ปฌ์์ ๊ฐ๋ณ๊ฒ ๋์ฐ๋ ค๋ฉด minikube๋ kind๊ฐ ์ข๋ค.
๊ธฐ์ ์ ์ผ๋ก ์ธ ์ ์๋ค๋ ๊ฒ๊ณผ ์กฐ์ง์ ์ด๋์ด๋ผ๋ ๊ฒ์ ๋ค๋ฅด๋ค. "๋จ๋ค์ด ์ฐ๋๊น"๊ฐ ์๋๋ผ, ์์ "์ ๋ง๋ ๊ฒฝ์ฐ"์ ํด๋นํ ๋ ๋์ ํ๋ ๊ฒ ๋ง๋ค.
๋ง์น๋ฉฐ
์ฟ ๋ฒ๋คํฐ์ค๋ "์ํ๋ ์ํ๋ฅผ ์ ์ธํ๋ฉด ํด๋ฌ์คํฐ๊ฐ ๊ทธ ์ํ๋ฅผ ์ ์งํ๋ค"๋ ์ ์ธ์ ์ด์ ๋ชจ๋ธ ์์ ์ ์๋ค. Pod(์ต์ ์คํ ๋จ์)๋ฅผ Deployment(๊ฐ์ ์ ์ง·์๊ฐ๋ณต๊ตฌ·๋กค๋ง ์
๋ฐ์ดํธ)๊ฐ ๊ด๋ฆฌํ๊ณ , Service(๊ณ ์ ์ฃผ์·๋ก๋๋ฐธ๋ฐ์ฑ)๊ฐ ๊ทธ ์์ ์งํค๋ฉฐ, ์ด ๋ชจ๋ ๊ฑธ kubectl๋ก ์กฐ์ํ๋ค. ์ด ๋ค ๊ฐ์ง๋ง ์์ ์ตํ๋ ์ฟ ๋ฒ๋คํฐ์ค์ 8ํ ์ ์ฝํ๋ค.
ํต์ฌ๋ง ๋ค์ ์ง์ผ๋ฉด, ์ปจํ ์ด๋๋ Pod๋ก ๊ฐ์ธ๊ณ , Pod๋ Deployment๋ก ์ ์งํ๋ฉฐ, ์ ๊ทผ์ Service๋ก ์์ ํํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ํ ๋์๋ "ํ์ฌ ์ํ๋ฅผ ์ํ๋ ์ํ๋ก ๋์์์ด ๋ง์ถ๋ค"๋ ์ปจํธ๋กค ํ๋ ์ธ์ ์ผ์ด ์๋ค.
์ด๋ก์จ Docker(์ปจํ ์ด๋) → CI/CD(์๋ ๋น๋·๋ฐฐํฌ) → ์ฟ ๋ฒ๋คํฐ์ค(์ฌ๋ฌ ์๋ฒ์์์ ์ด์)๋ก ์ด์ด์ง๋ ์ธํ๋ผ ์๋ฆฌ์ฆ๊ฐ ํ ๋ฐํด ๋์๋ค. ์ปจํ ์ด๋ ํ๋๋ฅผ ๋ง๋ค๋ ๋ฐ์ ์ถ๋ฐํด, ๊ทธ๊ฒ์ ์๋์ผ๋ก ๋ฐฐํฌํ๊ณ , ๊ท๋ชจ ์๊ฒ ์ด์ํ๋ ๊ทธ๋ฆผ๊น์ง ์จ ์ ์ด๋ค.
์ฐธ๊ณ ์ถ์ฒ
- Kubernetes Documentation — Overview — https://kubernetes.io/docs/concepts/overview/
- Kubernetes Documentation — Pods — https://kubernetes.io/docs/concepts/workloads/pods/
- Kubernetes Documentation — Deployments — https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
- Kubernetes Documentation — Service — https://kubernetes.io/docs/concepts/services-networking/service/
- Kubernetes Documentation — Command line tool (kubectl) — https://kubernetes.io/docs/reference/kubectl/
- CNCF Artwork — Kubernetes logos (SVG/PNG) — https://github.com/cncf/artwork/tree/main/projects/kubernetes
Kubernetes ๋ฐ Kubernetes ๋ก๊ณ ๋ The Linux Foundation์ ๋ฑ๋ก ์ํ์ด๋ฉฐ, ๋ณธ ๊ธ์์๋ ์๋ณ·์ค๋ช ๋ชฉ์ ์ผ๋ก๋ง ์ฌ์ฉํ์ต๋๋ค.
'๐ Tech Stack > Database & Infra' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| GitHub Actions๋ก CI/CD ํ์ดํ๋ผ์ธ ๋ง๋ค๊ธฐ (1) | 2026.06.29 |
|---|---|
| Docker ์ ๋ฌธ (1) | 2026.06.28 |
| ์คํ๊ณํ(EXPLAIN) ํ ๋ฒ์ ์ฝ๊ธฐ (1) | 2026.06.26 |
| ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํ๊ธฐ ์ ์ ๋ณด๋ ๊ฒ๋ค (0) | 2026.05.20 |
