Pod
Pod๋?
Pod๋ ์ฟ ๋ฒ๋คํฐ์ค์์ ์์ฑํ๊ณ ๊ด๋ฆฌํ ์ ์๋
๋ฐฐํฌ ๊ฐ๋ฅํ ๊ฐ์ฅ ์์ ์ปดํจํ ๋จ์
์ด๋ค
Pod๋ ํ๋ ์ด์์ ์ปจํ ์ด๋์ ๊ทธ๋ฃน์ด๋ค
์ฟ ๋ฒ๋คํฐ์ค๋ ๊ฐ๋ฐ ์ปจํ ์ด๋๋ค์ ์ง์ ๋ค๋ฃจ์ง ์๋๋ค
๋์ ํจ๊ป ๋ฐฐ์น๋ ๋ค์์ ์ปจํ ์ด๋๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํ๊ณ , ์ด ์ปจํ ์ด๋์ ๊ทธ๋ฃน์
Pod
๋ผ๊ณ ํ๋ค
Pod๋ ํ๋ ์ด์์
๋ฐ์ ํ๊ฒ ์ฐ๊ด๋ ์ปจํ ์ด๋์ ๊ทธ๋ฃน
์ผ๋ก, ๊ฐ์ ์์ปค ๋ ธ๋์์ ๊ฐ์ linux namespace๋ก ํจ๊ป ์คํ๋๋ค๊ฐ Pod๋ ์์ฒด IP, ํธ์คํธ ์ด๋ฆ, ํ๋ก์ธ์ค๋ฑ์ด ์๋
๋ ผ๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ๋จธ์
์ด๋ค์ ํ๋ฆฌ์ผ์ด์ ์ ๋จ์ผ ์ปจํ ์ด๋๋ก ์คํ๋๋ ๋จ์ผ ํ๋ก์ธ์ค์ผ ์ ์๊ณ , ๊ฐ๋ฐ ์ปจํ ์ด๋์์ ์คํ๋๋ ์ฃผ ์ดํ๋ฆฌ์ผ์ด์ ํ๋ก์ธ์ค์ ๋ถ๊ฐ์ ์ผ๋ก ๋์์ฃผ๋ ํ๋ก์ธ์ค๋ก ์ด๋ฃจ์ด์ง ์๋ ์๋ค
Pod๊ฐ ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ์, ๋ชจ๋ ์ปจํ ์ด๋๋ ํญ์ ํ๋์ ์์ปค ๋ ธ๋์์ ์คํ๋๋ฉฐ, ์ฌ๋ฌ ์์ปค ๋ ธ๋์ ๊ฑธ์ณ ์คํ๋์ง ์๋๋ค
Pod์์ ์ฌ๋ฌ ์ปจํ
์ด๋ ์ฌ์ฉ์ด ํ์ํ ๊ฒฝ์ฐ
์ปจํ ์ด๋๋ฅผ Pod๋ก ๋ฌถ์ด ๊ทธ๋ฃน์ผ๋ก ๋ง๋ค ๋ (๋ ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ๋จ์ผ ํ๋๋ก ๋ฃ์์ง or ๋ ๊ฐ์ ๋ณ๋ ํ๋์ ๋ฃ์์ง ๊ฒฐ์ ํ๊ธฐ ์ํด) ์๋์ ๊ฐ์ ์ง๋ฌธ์ ํด๋ณผ ์ ์๋ค
์ปจํ ์ด๋๋ฅผ ํจ๊ป ์คํํด์ผ ํ๋๊ฐ or ์๋ก ๋ค๋ฅธ ํธ์คํธ์์ ์คํํ ์ ์๋๊ฐ?
์ฌ๋ฌ ์ปจํ ์ด๋๊ฐ ๋ชจ์ฌ ํ๋์ ๊ตฌ์ฑ ์์๋ฅผ ๋ํ๋ด๋๊ฐ or ๊ฐ๋ณ์ ์ธ ๊ตฌ์ฑ์์์ธ๊ฐ?
์ปจํ ์ด๋๊ฐ ํจ๊ป or ๊ฐ๋ณ์ ์ผ๋ก ์ค์ผ์ผ๋ง๋์ด์ผ ํ๋๊ฐ?
๊ธฐ๋ณธ์ ์ผ๋ก ํน์ ์ด์ ๋๋ฌธ์ ์ปจํ ์ด๋๋ฅผ ๋จ์ผ Pod๋ก ๊ตฌ์ฑํด์ผํ์ง ์๋๋ค๋ฉด, ๋ถ๋ฆฌ๋ Pod์์ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ๊ฒ์ด ์ข๋ค
๐ก ์ปจํ ์ด๋๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ์คํํ์ง ๋ง์์ผํ๋ค Pod๋ฅผ `๋์ผํ machine`์์ ์คํํ ํ์๊ฐ ์๋ค๋ฉด, ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ํฌํจํ์ง ๋ง์์ผ ํ๋ค
Pod ์ ์ํ๊ธฐ
Pod๋ฅผ ์ ์ํ๋ ์ฃผ์ ๋ถ๋ถ
Metadata
์ด๋ฆ, namespace, label ๋ฐ Pod์ ๊ดํ ๊ธฐํ ์ ๋ณด๋ฅผ ํฌํจํ๋ค
Spec
Pod container, volume, ๊ธฐํ ๋ฐ์ดํฐ ๋ฑ Pod ์์ฒด์ ๊ดํ ์ค์ ๋ช ์ธ๋ฅผ ๊ฐ์ง๋ค
Status
Pod ์ํ, ๊ฐ container ์ค๋ช ๊ณผ ์์ธ, Pod ๋ด๋ถ IP, ๊ธฐํ ๊ธฐ๋ณธ ์ ๋ณด ๋ฑ Pod์ ๊ดํ ํ์ฌ ์ ๋ณด๋ฅผ ํฌํจํ๋ค
ex)
apiVersion: v1
kind: Pod
metadata:
name:kubia-mannual
spec:
containers:
- image: luksa/kubia
name: kubia
ports:
- containerPort: 8080
protocol: TCP
์ปจํ
์ด๋ ํฌํธ ์ง์
Pod ์ ์ ์์์ port๋ฅผ ์ง์ ํด๋ ๊ฒ์ ๋จ์ง ์ ๋ณด์ ๋ถ๊ณผํ๋ค
์๋ตํด๋ ๋ค๋ฅธ client์์ port๋ฅผ ํตํด ์ฐ๊ฒฐํ ์ ์๋์ง์ ์ฌ๋ถ์๋ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค
ํ์ง๋ง ํฌํธ๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ํ๋ค๋ฉด, Cluster๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์ฌ๋์ด ํด๋น pod์์ ๋ ธ์ถํ port๋ฅผ ๋น ๋ฅด๊ฒ ๋ณผ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค
๋ํ port๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ํ๋ฉด port์ ์ด๋ฆ์ ์ง์ ํด์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ค
Label์ ์ด์ฉํ Pod ๊ตฌ์ฑ
Label์ ํตํด Pod์ ๊ธฐํ ๋ค๋ฅธ Kubernetes object ๊ฐ์ ์กฐ์งํ๊ฐ ์ด๋ฃจ์ด์ง๋ค
Label์ Pod์ ๋ชจ๋ ๋ค๋ฅธ ์ฟ ๋ฒ๋คํฐ์ค ๋ฆฌ์์ค๋ฅผ
์กฐ์งํ
ํ ์ ์๋ ๊ธฐ๋ฅ์ด๋คLabel์ ๋ฆฌ์์ค์ ๋ฑ๋กํ๋
key-value
์์ผ๋ก, ์ด ์์ label selector๋ฅผ ์ฌ์ฉํด ๋ฆฌ์์ค๋ฅผ ์ ํํ ๋ ํ์ฉ๋๋ค๋ฆฌ์์ค๋ selector์ ์ง์ ๋ label์ ํฌํจํ๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ํํฐ๋ง ๋๋๋ค
Label์ key๊ฐ
unique
ํ๋ค๋ฉด, ํ๋ ์ด์์ ์ํ๋ ๋งํผ์ label์ ๊ฐ์ง ์ ์๋ค์ผ๋ฐ์ ์ผ๋ก ๋ฆฌ์์ค ์์ฑ ์ label์ ๋ถ์ด์ง๋ง, ๋์ค์ label์ ์ถ๊ฐํ๊ฑฐ๋ ๊ธฐ์กด ๊ฐ์ ์์ ํ ์๋ ์๋ค
Label๊ณผ Selector๋ฅผ ์ด์ฉํด Pod ์ค์ผ์ค๋ง ์ ํํ๊ธฐ
Kubernetes์ ์ ์ฒด์ ์ธ ์์ด๋์ด๋ ๊ทธ ์์ ์คํ๋๋ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก๋ถํฐ ์ค์ ์ธํ๋ผ์คํธ๋ญ์ฒ๋ฅผ ์จ๊ธฐ๋ ๊ฒ์ ์๊ธฐ์, Pod๊ฐ ์ด๋ค node์ ์ค์ผ์ค๋ง๋์ด์ผ ํ๋์ง ๊ตฌ์ฒด์ ์ผ๋ก ์ง์ ํ๊ณ ์ถ์ง ์์ ๊ฒ์ด๋ค
๊ทธ๋ก ์ธํด ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ธํ๋ผ์คํธ๋ญ์ฒ์ ๊ฒฐํฉ๋๊ธฐ ๋๋ฌธ์ด๋ค
๊ทธ๋์ Kubernetes๋ ์ ํํ node๋ฅผ ์ง์ ํ๋ ๋์ ํ์ํ node ์๊ตฌ ์ฌํญ์ ๊ธฐ์ ํ๊ณ , Kubernetes๊ฐ ์๊ตฌ ์ฌํญ์ ๋ง์กฑํ๋ node๋ฅผ ์ ํํ๊ฒ ํ๋ค
์ด๋
node label
๊ณผlabel selector
๋ฅผ ํตํด ๊ฐ๋ฅํ๋ค
1. ์์ปค ๋
ธ๋ ๋ถ๋ฅ์ Label ์ฌ์ฉ
Node๋ฅผ ํฌํจํ ๋ชจ๋ kubernetes object์
label
์ ๋ถ์ฐฉํ ์ ์์ผ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ์ node๋ฅผ cluster์ ์ถ๊ฐํ ๋ node๊ฐ ์ ๊ณตํ๋ ํ๋์จ์ด๋ pod ์ค์ผ์ค๋ง ์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ ์ฌํญ์ label๋ก ์ง์ ํด node๋ฅผ ๋ถ๋ฅํ๋ค
ex)
kubectl label node [node] gpu=true
2. ํน์ Node์ Pod ์ค์ผ์ค๋ง
GPU๋ฅผ ํ์๋ก ํ๋ ์๋ก์ด Pod๋ฅผ ๋ฐฐํฌํด์ผ ํ๋ค๊ณ ํ ๋, ์ค์ผ์ค๋ฌ๊ฐ GPU๋ฅผ ์ ๊ณตํ๋ node๋ฅผ ์ ํํ๋๋ก ์์ฒญํ๋ ค๋ฉด, ํด๋น Pod์ YAML ํ์ผ์
node selector
๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค
ex)
apiVersion: v1
kind: Pod
metadata:
name: kube-gpu
spec:
nodeSelector:
gpu: "true"
containers:
- image: luksa/kubia
name: kubia
ports:
- containerPort: 8080
protocol: TCP
์์ ๊ฐ์ด ์ค์ ํจ์ผ๋ก์จ ์ค์ผ์ค๋ฌ๋ gpu=true
label์ ๊ฐ์ง๊ณ ์๋ node ์ค์์ ์ ํํ๊ฒ ๋๋ค
Pod๋ฅผ ์์ ์ ์ผ๋ก ์ ์งํ๊ธฐ
Liveness Probe
Kubernetes๋
liveness probe
๋ฅผ ํตํด ์ปจํ ์ด๋๊ฐ ์ด์ ์๋์ง ํ์ธํ ์ ์๋คPod์ spec์ ๊ฐ ์ปจํ ์ด๋์ liveness probe๋ฅผ ์ง์ ํ ์ ์๋ค
Kubernetes๋ ์ฃผ๊ธฐ์ ์ผ๋ก probe๋ฅผ ์คํํ๊ณ , probe์ ์คํจํ ๊ฒฝ์ฐ
์ปจํ ์ด๋๋ฅผ ๋ค์ ์์
ํ๋ค
Probe ์คํ ๋งค์ปค๋์ฆ
Kubernetes๋ ์ธ ๊ฐ์ง ๋งค์ปค๋์ฆ ์ ์ฌ์ฉํด ์ปจํ ์ด๋์ Probe๋ฅผ ์คํํ๋ค
HTTP GET Probe
์ง์ ํ IP ์ฃผ์, port, ๊ฒฝ๋ก์ HTTP GET ์์ฒญ์ ์ํํ๋ค
Probe๊ฐ ์๋ต์ ์์ ํ๊ณ ์๋ต ์ฝ๋๊ฐ 2xx or 3xx์ธ ๊ฒฝ์ฐ, probe๊ฐ ์ฑ๊ณตํ๋ค๊ณ ๊ฐ์ฃผ๋๋ค
์ค๋ฅ ์ฝ๋๋ฅผ ๋ฐํํ๊ฑฐ๋ ์๋ต ์์ฒด๋ฅผ ํ์ง ์์ผ๋ฉด, probe๊ฐ ์คํจํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋์ด ์ปจํ ์ด๋๋ฅผ ๋ค์ ์คํํ๋ค
TCP Socket Probe
์ปจํ ์ด๋์ ์ง์ ๋ port์ TCP ์ฐ๊ฒฐ์ ์๋ํ๋ค
์ฐ๊ฒฐ์ ์ฑ๊ณตํ๋ฉด probe๊ฐ ์ฑ๊ณตํ ๊ฒ์ด๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์ปจํ ์ด๋๊ฐ ๋ค์ ์คํ๋๋ค
Exec Probe
์ปจํ ์ด๋ ๋ด์ ์์์ ๋ช ๋ น์ ์คํํ๊ณ , ๋ช ๋ น์ ์ข ๋ฃ ์ํ ์ฝ๋๋ฅผ ํ์ธํ๋ค
์ํ ์ฝ๋๊ฐ
0
์ด๋ฉด probe๊ฐ ์ฑ๊ณตํ ๊ฒ์ด๋ค0
์ด์ธ์ ๋ค๋ฅธ ๋ชจ๋ ์ฝ๋๋ ์คํจ๋ก ๊ฐ์ฃผ ๋๋ค
ex)
apiVersion: v1
kind: Pod
metadata:
name: kube-liveness
spec:
containers:
- image: luksa/kubia-unhealthy
name: kubia
livenessProbe:
httpGet:
path: /
port: 8080
์์ ์ค์ ์์ pod descriptor๋ kubernetes๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก "/"
๊ฒฝ๋ก์ 8080 port์ HTTP GET ์์ฒญ์ ๋ณด๋ด์ ์ปจํ
์ด๋๊ฐ ์ ์ ๋์ํ๋์ง ํ์ธํ๋๋ก httpGet
liveness probe๋ฅผ ์ ์ํ๋ค
Last updated
Was this helpful?