pod

๋ช…๋ น์–ด

1. Create

# ํŒŒ์ผ์ด ์žˆ์„ ๊ฒฝ์šฐ
kubectl create -f ./pod.yaml

# ๋‚ด์šฉ๊ณผ ํ•จ๊ป˜ ๋ฐ”๋กœ ์ž‘์„ฑ
kubectl create -f - <<END
apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
  - name: container
    image: kubetm/init
END

๊ธฐ์กด์— ๊ฐ™์€ ์ด๋ฆ„์˜ Pod๊ฐ€ ์กด์žฌํ•˜๋ฉด ์ƒ์„ฑ์ด ์•ˆ๋œ๋‹ค.

2. Apply

๊ธฐ์กด์— ๊ฐ™์€ ์ด๋ฆ„์˜ Pod๊ฐ€ ์กด์žฌํ•˜๋ฉด ๋‚ด์šฉ์ด override๋œ๋‹ค.

3. Get

4. Describe

5. Delete

6. Exec

๋‚ด๋ถ€ ์„ค์ •

pod

1. ์ปจํ…Œ์ด๋„ˆ

ํŒŒ๋“œ ๋‚ด์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•œ ํŒŒ๋“œ๋Š” ๋กœ์ปฌ๊ณผ ๊ฐ™์€ ๊ฐœ๋…์œผ๋กœ ์„œ๋กœ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฆฌ ํฌํŠธ๊ฐ€ ์ค‘๋ณต๋  ์ˆ˜ ์—†์œผ๋ฉฐ ํŒŒ๋“œ๊ฐ€ ์ƒ์„ฑ๋ ๋•Œ ๊ณ ์œ ์˜ ip์ฃผ์†Œ๊ฐ€ ํ• ๋‹น๋œ๋‹ค. ํ•ด๋‹น ip์ฃผ์†Œ๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋‚ด์—์„œ๋งŒ ์ด์šฉํ•˜์—ฌ ํŒŒ๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์™ธ๋ถ€์—์„œ๋Š” ์ ‘๊ทผ ํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒŒ๋“œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค๋ฉด ์‹œ์Šคํ…œ์ด ํŒŒ๋“œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์žฌ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด ip๋Š” ์žฌํ• ๋‹น๋˜๋ฏ€๋กœ ํœ˜๋ฐœ์„ฑ์˜ ์ฃผ์†Œ์ด๋‹ค.

2. ๋ผ๋ฒจ

๊ฐ๊ฐ์˜ ํŒŒ๋“œ๋ณ„๋กœ ๋ผ๋ฒจ์„ ์—ฌ๋Ÿฌ๊ฐœ ๋‹ฌ ์ˆ˜ ์žˆ์–ด ์‚ฌ์šฉ๋ชฉ์ ์— ๋”ฐ๋ผ ํŒŒ๋“œ๋ฅผ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์–ด ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•ด์„œ ์›ํ•˜๋Š” ํŒŒ๋“œ๋ฅผ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

3. ๋…ธ๋“œ ์Šค์ผ€์ค„

ํŒŒ๋“œ๋Š” ์—ฌ๋Ÿฌ๋…ธ๋“œ๋“ค ์ค‘์— ํ•œ ๋…ธ๋“œ์— ์˜ฌ๋ผ๊ฐ€์•ผ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์Šค์ผ€์ค„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‘๊ฐ€์ง€ ์กด์žฌํ•œ๋‹ค.

์ง์ ‘ ์„ ํƒ

ํŒŒ๋“œ์— ๋ผ๋ฒจ์„ ๋‹จ ๊ฒƒ์ฒ˜๋Ÿผ ๋…ธ๋“œ์— ๋ผ๋ฒจ์„ ๋งŒ๋“ค์–ด ์ง์ ‘ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ํŒ๋‹จํ•˜์—ฌ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์„ ํƒ

ํŒŒ๋“œ์˜ ์‚ฌ์šฉ๋ฉ”๋ชจ๋ฆฌ๋Ÿ‰์„ ๋ช…์‹œํ•ด์ฃผ๊ฒŒ ๋˜๋Š”๋ฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ํŒ๋‹จํ•˜์—ฌ ์ ์ ˆํ•œ ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•œ๋‹ค.

request๋Š” ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์š”๊ตฌํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ  limits๋Š” ์ตœ๋Œ€ ์‚ฌ์šฉ๋Ÿ‰์ด๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ์˜ limit์„ ์ดˆ๊ณผ์‹œ์—๋Š” ํŒŒ๋“œ๋ฅผ ๋ฐ”๋กœ ์ข…๋ฃŒ์‹œํ‚ค๊ฒŒ ๋˜๊ณ  cpu์˜ limit์„ ์ดˆ๊ณผํ•˜๊ฒŒ ๋˜๋ฉด request๋กœ ๋‚ฎ์ถ”๊ณ  ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š”๋‹ค.

๋ฉ”๋ชจ๋ฆฌ๋Š” ์ œํ•œ๋Ÿ‰์„ ์ดˆ๊ณผํ•˜๊ฒŒ ๋˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์นจ๋ฒ”ํ•˜๊ฒŒ ๋˜์–ด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์—๋„ ์•…์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข…๋ฃŒ์‹œํ‚ค๊ฒŒ ๋œ๋‹ค.

Node Schedule ๋ฐฉ๋ฒ•

nodeSchedule

1. ๋…ธ๋“œ ์„ ํƒ

NodeName

๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ  ์‹ถ์„๋•Œ ์Šค์ผ€์ค„๋Ÿฌ์— ์ƒ๊ด€์—†์ด ๋ช…์‹œ์ ์œผ๋กœ ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์ง€๋งŒ ์‹ค์ œ ์ƒ์šฉํ™˜๊ฒฝ์—์„œ๋Š” ๋…ธ๋“œ์˜ ์ถ”๊ฐ€/์‚ญ์ œ ๊ณผ์ •์ค‘์—์„œ ๋…ธ๋“œ์˜ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์–ด ์ž˜ ์‚ฌ์šฉ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค.

NodeSelector

ํŒŒ๋“œ์— key/value๋กœ ๋ผ๋ฒจ์„ ๋‹ฌ๋ฉด ํ•ด๋‹น ๋ผ๋ฒจ๊ณผ ๋งค์นญ๋˜๋Š” ๋…ธ๋“œ์ค‘์—์„œ ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์ž์›์ด ๋งŽ์€ ๋…ธ๋“œ๋กœ ํŒŒ๋“œ๊ฐ€ ํ• ๋‹น๋œ๋‹ค. ๋ผ๋ฒจ์ด ๋”ฑ ๋งค์นญ๋˜๋Š” ๋…ธ๋“œ์—๋งŒ ํ• ๋‹น์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์นญ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†๋‹ค๋ฉด ํ• ๋‹น์ด ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.

NodeAffinity

nodeAffinity

ํŒŒ๋“œ์— key๋งŒ์„ ๊ฐ€์ง€๊ณ ๋„ ๋งค์นญ๋˜๋Š” ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ์ด ๋˜๋ฉฐ ๋งค์นญ๋˜๋Š” ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋”๋ผ๋„ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ํŒ๋‹จํ•ด์„œ ์ž์›์ด ๋งŽ์€ ๋…ธ๋“œ์— ํ• ๋‹น์ด๋˜๋„๋ก ์˜ต์…˜์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

matchExpressions๋ฅผ ์ด์šฉํ•˜์—ฌ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๋…ธ๋“œ์™€ ํŒŒ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๊ฒŒ ๋œ๋‹ค. operator๋กœ Gt์™€ Lt๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ  required/preferred์˜ต์…˜์„ ํ†ตํ•ด์„œ ๋…ธ๋“œ์— ์—†๋Š” ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด๋„ ํ• ๋‹น๋˜๋‹๋ก ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

  • required : key๊ฐ€ ๋งค์นญ๋˜์–ด์•ผ๋งŒ ํ•จ

  • preferred : key๊ฐ€ ๋งค์นญ๋˜์ง€ ์•Š์•„๋„ ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ํ• ๋‹น์ด ๊ฐ€๋Šฅ

    • weight : ํŠน์ • ๋ผ๋ฒจ์— ๋Œ€ํ•œ ๊ฐ€์ค‘์น˜๋ฅผ ์คŒ์œผ๋กœ์จ ๋‹จ์ˆœํžˆ ์ž์›์„ ๋ณด๊ณ ๋งŒ ํ• ๋‹น๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ฐ€์ค‘์น˜๋ฅผ ํ•ฉ์‚ฐํ•ด์„œ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•œ ์†์„ฑ๊ฐ’

2. Pod๊ฐ„ ์ง‘์ค‘ / ๋ถ„์‚ฐ

Pod Affinity

podAffinity

์—ฌ๋Ÿฌ ํŒŒ๋“œ๋“ค์„ ํ•œ ๋…ธ๋“œ์— ์ง‘์ค‘ํ•˜์—ฌ ํ• ๋‹น

WebํŒŒ๋“œ์™€ ServerํŒŒ๋“œ๋ฅผ ๊ฐ™์€ PV(HostPath)๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ๊ฐ™์€ ๋…ธ๋“œ์— ํ• ๋‹น๋˜๋„๋ก ํ•˜๋ ค๊ณ  ํ• ๋•Œ ํŒŒ๋“œ์˜ ํƒ€์ž…์„ ๋™์ผํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ๊ฐ™์€ ๋…ธ๋“œ์— ํ• ๋‹นํ•ด์ฃผ๋„๋ก ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ

pod Affinity๋ผ๋Š” ์˜ต์…˜์˜ matchExpressions๋กœ ๋…ธ๋“œ๋‚ด์˜ ํŒŒ๋“œ๋ผ๋ฒจ์„ ํ™•์ธํ•˜๊ณ  topologyKey ์˜ต์…˜์„ ํ†ตํ•ด์„œ ๋…ธ๋“œ์˜ ๋ผ๋ฒจ์˜ ์กฐ๊ฑด์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, Node Affinity์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ required/preferred์˜ต์…˜์„ ์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.

Anti-Affinity

podAntiAffinity

์—ฌ๋Ÿฌ ํŒŒ๋“œ๋“ค์„ ์ง‘์ค‘๋˜๋Š” ์ผ ์—†์ด ๋ถ„์‚ฐ๋˜์–ด ํ• ๋‹น

๋งˆ์Šคํ„ฐํŒŒ๋“œ์™€ ์Šฌ๋ ˆ์ด๋ธŒ ํŒŒ๋“œ๋ฅผ ๋งŒ๋“ค๋•Œ ๋ถ„์‚ฐ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ ํŒŒ๋“œ์˜ Type์„ ๊ฐ™์€ ํŒŒ๋“œ๋กœ ์„ค์ •ํ•ด๋†“์œผ๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ๋…ธ๋“œ์— ํ• ๋‹นํ•ด์ฃผ๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ

podAntiAffinity๋ผ๋Š” ์˜ต์…˜์˜ matchExpressions๋กœ ๋…ธ๋“œ๋‚ด์˜ ํŒŒ๋“œ๋ผ๋ฒจ์„ ํ™•์ธํ•˜๊ณ  topologyKey ์˜ต์…˜์„ ํ†ตํ•ด์„œ ๋…ธ๋“œ์˜ ๋ผ๋ฒจ์˜ ์กฐ๊ฑด์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, Node Affinity์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ required/preferred์˜ต์…˜์„ ์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.

3. Node์— ํ• ๋‹น ์ œํ•œ

Toleration / Taint

taint

ํŠน์ • ๋…ธ๋“œ์— ์•„๋ฌด ํŒŒ๋“œ๋‚˜ ํ• ๋‹น๋˜์ง€ ์•Š๋„๋ก ์ œํ•œ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

๋…ธ๋“œ์— Taint๋ฅผ ์ง€์ •ํ•ด๋†“์œผ๋ฉด ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ํ• ๋‹น๋˜์ง€๋„ ์•Š์œผ๋ฉฐ ์ˆ˜๋™์œผ๋กœ ์ง€์ •์„ ํ•˜๋ คํ•ด๋„ ํ• ๋‹น๋˜์ง€ ์•Š๋Š”๋‹ค. ํŒŒ๋“œ์— Toleration์„ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•ด๋‹น ๋…ธ๋“œ์— ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Taint

๋…ธ๋“œ์— Taint์—์„œ labels์™€ effect์˜ต์…˜์„ ์ด์šฉํ•˜์—ฌ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

Taint์†์„ฑ์€ ์ƒˆ๋กœ์šด ํŒŒ๋“œ๊ฐ€ ํ• ๋‹น๋ ๋•Œ ํ™•์ธํ•˜๋Š” ์กฐ๊ฑด์œผ๋กœ์จ ์ด๋ฏธ ๋…ธ๋“œ์— ํŒŒ๋“œ๊ฐ€ ๋Œ์•„๊ฐ€๊ณ  ์žˆ๋Š” ์ƒํƒœ๋กœ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ด์ฃผ๊ฒŒ ๋˜๋ฉด ๊ธฐ์กด์˜ ๋…ธ๋“œ๋Š” ๊ณ„์†ํ•ด์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

effect

  • NoSchedule : ํƒ€ ํŒŒ๋“œ๋“ค์ด ์ด ๋…ธ๋“œ์— ํ• ๋‹น ๋˜์ง€ ์•Š๋Š”๋‹ค.

  • PreferNoSchedule : ๊ฐ€๊ธ‰์  ์Šค์ผ€์ค„๋ง์ด ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ์˜ต์…˜์œผ๋กœ ํŠน์ • ์ƒํ™ฉ์—๋Š” ํ• ๋‹น์ด ๋  ์ˆ˜๋„ ์žˆ๋‹ค.

  • NoExecute : ๊ธฐ์กด์˜ ์ž‘๋™ํ•˜๊ณ ์žˆ๋Š” ํŒŒ๋“œ๋Š” ์‚ญ์ œ๋˜๋Š” ์˜ต์…˜

Toleration

ํŒŒ๋“œ์— ํ•ด๋‹น ๋…ธ๋“œ๋กœ ์Šค์ผ€์ค„๋ง ๋˜๋„๋ก Toleration์„ ์„ค์ • ํ•ด์ฃผ์–ด์•ผ ํ•˜๋ฉฐ key/operator/value/effect ์†์„ฑ์œผ๋กœ ์„ค์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

operator

  • Euqal

  • Exists

์ด ์˜ต์…˜์„ ํŒŒ๋“œ์— ์ฃผ๋”๋ผ๊ณ  ํ•ด๋‹น ํŒŒ๋“œ๋Š” ๋‹ค๋ฅธ ๋งค์นญ๋˜๋Š” ๋…ธ๋“œ์— ๋Œ€ํ•ด ์Šค์ผ€์ค„๋ง์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— nodeSelector ์˜ต์…˜์„ ์ถ”๊ฐ€๋กœ ์ฃผ์–ด ํŠน์ • ๋…ธ๋“œ์— ํ• ๋‹น๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

NoExcute๋…ธ๋“œ์— NoExcute์˜ต์…˜์„ ๋‹จ ํŒŒ๋“œ๋ผ๋ฉด ์‚ญ์ œ๊ฐ€ ๋˜์ง€ ์•Š๊ฒ ์ง€๋งŒ tolerationSeconds์˜ต์…˜์„ ์ด์šฉํ•ด์„œ ์‹œ๊ฐ„์„ ์ •์˜ํ•ด์ฃผ๋ฉด ํ•ด๋‹น ์‹œ๊ฐ„ ํ›„์—๋Š” ์‚ญ์ œํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

+) ์ถ”๊ฐ€

terminationGracePeriodSeconds: 0 : ๊ธฐ๋ณธ pod์˜ ์‚ญ์ œ ์š”์ฒญํ›„ ์‚ญ์ œ๋˜๋Š” ์‹œ๊ฐ„์€ 30s์ธ๋ฐ 0s๋กœ ์…‹ํŒ…

ํŒŒ๋“œ ๊ตฌ์กฐ

pod-architechture
  • Phase : Pod์˜ ์ „์ฒด ์ƒํƒœ

    • Pending

    • Running

    • Succeeded

    • Failed

    • Unknown

  • Conditions : Pod๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„์™€ ์ƒํƒœ

    • Initialized

    • ContainerReady

    • PodScheduled

    • Ready

    • Reason : ์ปจ๋””์…˜์˜ ์ƒํƒœ๊ฐ€ False์ธ๊ฒฝ์šฐ ์ด์œ ๋ฅผ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•œ ์†์„ฑ

      • ContainersNotReady

      • PodCompleted

  • State : ๊ฐ๊ฐ์˜ ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ๋Œ€ํ‘œํ•˜๋Š” ์ƒํƒœ

    • Wating

    • Running

    • Terminated

    • Reason : ํ˜„์žฌ ์ƒํƒœ์˜ ์ด์œ 

      • ConainerCreating

      • CrashLoopBackOff

      • Error

      • Completed

์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ์ค‘ imageID๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์•„์ง image๊ฐ€ ๋‹ค์šด์ด ๋˜์ง€ ์•Š์€ ์ƒํƒœ์ด๋‹ค.

LifeCycle

pod-lifecycle
pod-lifecycle2

1. Pending

  1. Pod์˜ ์ตœ์ดˆ์ƒํƒœ๋กœ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ์ƒ์„ฑ๋˜๊ธฐ ์ „์— ์ดˆ๊ธฐํ™”์‹œ์ผœ์ค„ ๋‚ด์šฉ์ด ์žˆ์„ ๊ฒฝ์šฐ initContainer๋ฅผ ํ†ตํ•ด์„œ ๋ณธ ์ปจํ…Œ์ด๋„ˆ๋ณด๋‹ค ๋จผ์ € ์ƒ์„ฑ์ด ๋˜์–ด ๋ณผ๋ฅจ/๋ณด์•ˆ๊ณผ ๊ฐ™์€ ์…‹ํŒ…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ  ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ–ˆ๊ฑฐ๋‚˜ ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด Initialized์†์„ฑ์ด true, ์‹คํŒจํ–ˆ๋‹ค๋ฉด false๊ฐ€ ๋œ๋‹ค.

  2. Pod๊ฐ€ ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋  ๋…ธ๋“œ๋ฅผ ์„ค์ •ํ•˜๋Š”๋ฐ ์ง์ ‘ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ k8s๊ฐ€ ์ž๋™์œผ๋กœ ์žก์•„์ฃผ๊ฒŒ ๋˜๋Š”๋ฐ ์™„๋ฃŒ๊ฐ€ ๋œ๋‹ค๋ฉด PodScheduled ์†์„ฑ์ด True๊ฐ€ ๋œ๋‹ค.

  3. Container์— image๋ฅผ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์ง„ํ–‰๋˜๊ณ  ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋Š” waiting(reason : ContainerCreating)์ด ๋œ๋‹ค.

+) Pending ๋„์ค‘์— Failed๋กœ ๋น ์ง€๋Š” ๊ฒฝ์šฐ๋„ ์กด์žฌํ•˜๊ณ  ํ†ต์‹ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ Unknown์ƒํƒœ๋กœ ๋ฐ”๋€Œ๊ณ  Unknown์ƒํƒœ๊ฐ€ ์ง€์†๋˜๋ฉด Failed๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.

2. running

  1. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ธฐ๋™์ด๋˜๋ฉด์„œ Pod์˜ ์ƒํƒœ๊ฐ€ Running์ด ๋œ๋‹ค.

  2. ๋งŒ์ผ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ธฐ๋™์ด ๋˜๋Š” ์ค‘ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋‚œ waiting(reason : CrashLoopBackOff)์ด ๋˜์–ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์žฌ๊ธฐ๋™ํ•œ๋‹ค. ์ด์ƒํ™ฉ์—๋„ Pod์˜ ์ƒํƒœ๋Š” Running์ƒํƒœ์ด๋ฉฐ ๋‚ด๋ถ€ ContainerReady / Ready ์†์„ฑ์ด false๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค.

  3. ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ running์ด ๋˜์—ˆ๋‹ค๋ฉด ContainerReady / Ready์ด true๊ฐ€ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ์ปจํ…Œ์ด๋„ˆ์— ๋ฌธ์ œ๊ฐ€๋ฐœ์ƒํ•ด๋„ Running์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— Pod์˜ ์ƒํƒœ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋„ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

+) ํ†ต์‹ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ Unknown์ƒํƒœ๋กœ ๋ฐ”๋€Œ๊ณ  Unknown์ƒํƒœ๊ฐ€ ์ง€์†๋˜๋ฉด Failed๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.

3. Failed / Succeeded

Job / CronJob์œผ๋กœ ์ƒ์„ฑ๋œ Pod์˜ ๊ฒฝ์šฐ ์ž‘์—…์ด ๋๋‚ฌ์„๋•Œ ์œ„ ์ƒํƒœ์ค‘ ํ•œ๊ฐœ๋กœ ๋ณ€๊ฒฝ๋˜๊ฒŒ ๋˜๋Š”๋ฐ ๋งŒ์•ฝ ์ž‘์—…์„ ํ•˜๊ณ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์ค‘ ํ•œ๊ฐœ๋ผ๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ Error๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด Failed, ๋ชจ๋‘ Completed๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด Succeeded์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

์ด ๋‘ ์ƒํƒœ ๋ชจ๋‘ ์ปจํ…Œ์ด๋„ˆ๋“ค์€ ์ข…๋ฃŒ๋œ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ContainerReady / Ready ๋Š” ๋ชจ๋‘ False๊ฐ€ ๋œ๋‹ค.

ReadinessProbe / LivenessProbe

์ปจํ…Œ์ด๋„ˆ์œ„์— ์˜ฌ๋ผ๊ฐ€๋Š” App์˜ ์ƒํƒœ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ •์œผ๋กœ ์„œ๋กœ ๊ธฐ๋Šฅ์˜ ๋ชฉ์ ๋งŒ ๋‹ค๋ฅผ๋ฟ ์„ค์ • ๋ฐฉ๋ฒ•์€ ๋™์ผํ•˜๋‹ค.

์†์„ฑ

  • httpGet : Port, Host, Path, HttpHeader, Scheme๋“ฑ์„ ์„ค์ •์œผ๋กœ ์ฒดํฌ

  • Exec : Command๋ฅผ ํ†ตํ•ด ๊ฒฐ๊ณผ๋ฅผ ์ฒดํฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  • tcpSocket : port, host๋ฅผ ์ด์šฉํ•ด์„œ ์„ฑ๊ณต ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜๋“œ์‹œ ์œ„ 3๊ฐœ์˜ ์˜ต์…˜์ค‘ 1๊ฐœ๋Š” ๊ผญ ์ •์˜ํ•ด์•ผํ•˜๋Š” ์†์„ฑ์ด๋‹ค.

์˜ต์…˜

  • initialDelaySeconds : ์ตœ์ดˆ Probe๋ฅผ ํ•˜๊ธฐ์ „์— ๋”œ๋ ˆ์ด ์‹œ๊ฐ„

  • periodSeconds : Probe๋ฅผ ์ฒดํฌํ•˜๋Š” ๊ฐ„๊ฒฉ

  • timeoutSeconds : timeout ์‹œ๊ฐ„

  • successThreshold : ๋ช‡๋ฒˆ ์„ฑ๊ณตํ•ด์•ผ ์„ฑ๊ณต์œผ๋กœ ์ธ์ •ํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ๊ฐ’

  • failureThreshold : ๋ช‡๋ฒˆ ์‹คํŒจํ•ด์•ผ ์‹คํŒจ๋กœ ์ธ์ •ํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ๊ฐ’

์œ„ ์„ค์ •์„ ํ†ตํ•ด App์˜ ์„ฑ๊ณต์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ์„ฑ๊ณต์ด ๋˜๊ธฐ ์ „๊ฐ€์ง€๋Š” Pod์˜ ์ƒํƒœ๊ฐ€ Running์ด ๋˜์–ด๋„ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋Š” false๋กœ Service๋Š” NotReadyAddr ์ƒํƒœ๋กœ Pod์™€ ์—ฐ๊ฒฐ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.

1. ReadinessProbe

readinessProbe

ํ•œ ์„œ๋น„์Šค๊ฐ€ 2๊ฐœ์˜ Pod๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋…ธ๋“œ์œ„์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ์„๋•Œ ํ•œ๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ๋ฌธ์ œ๊ฐ€๋ฐœ์ƒํ•ด์„œ ํ•œ ํŒŒ๋“œ๊ฐ€ ์ฃฝ์—ˆ๋‹ค๋ฉด auto healing ๊ธฐ๋Šฅ์— ์˜ํ•ด ์ƒˆ๋กœ์šด ํŒŒ๋“œ๊ฐ€ ์ƒ์„ฑ์ด ๋˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋•Œ ํŒŒ๋“œ์™€ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๊ฐ€ running์ด ๋˜๋ฉด ํŠธ๋ž˜ํ”ฝ์„ ๋‚˜๋ˆ„์–ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ปจํ…Œ์ด๋„ˆ๋Š” Running์ด์ง€๋งŒ App์ด ์•„์ง ๋ถ€ํŒ…์ค‘์ด๋ผ๋ฉด 50%์˜ ์‚ฌ์šฉ์ž๋Š” ์—๋Ÿฌ๋ฅผ ์‘๋‹ต๋ฐ›๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฐ๊ฒฝ์šฐ์™€ ๊ฐ™์ด App ๊ตฌ๋™๊นŒ์ง€ ํŠธ๋ž˜ํ”ฝ์„ ๋‚˜๋ˆ„์ง€ ์•Š์•„ ํŠธ๋ž˜ํ”ฝ ์‹คํŒจ๋ฅผ ์—†์• ๋Š” ๊ธฐ๋Šฅ

์˜ˆ๋ฅผ๋“ค์–ด ํ†ฐ์บฃ๊ณผ ๊ฐ™์ด ์›น์„œ๋ฒ„๋Š” ๊ตฌ๋™์ด ๋˜์–ด Running์ƒํƒœ๊ฐ€ ๋˜์—ˆ๋Š”๋ฐ ๊ทธ ์œ„์— ์˜ฌ๋ผ๊ฐ€๋Š” App์ด ๊ตฌ๋™์ด ์•„์ง ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

2. LivenessProbe

livenessProbe

Pod์™€ Container๋Š” Running์ƒํƒœ์ธ๋ฐ Memory Overflow์™€ ๊ฐ™์€ ๋ฌธ์ œ๋กœ App๋งŒ ์ฃฝ์€ ๊ฒฝ์šฐ์—๋Š” Auto Healing๊ธฐ๋Šฅ์ด ์ˆ˜ํ–‰๋˜์ง€ ์•Š์•„ ์ง€์†์ ์ธ ์‹คํŒจ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ฒŒ ๋˜๋Š”๋ฐ App์žฅ์• ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  Pod๋ฅผ ์žฌ์‹คํ–‰์‹œ์ผœ ํŠธ๋ž˜ํ”ฝ์˜ ์ง€์†์ ์ธ ์‹คํŒจ๋ฅผ ์—†์• ๋Š” ๊ธฐ๋Šฅ

QoS classes

qos

Quality of Service์˜ ์•ฝ์ž๋กœ k8s์—์„œ๋Š” ์•ฑ์˜ ์ค‘์š”๋„์— ๋”ฐ๋ผ์„œ ์ž์›์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ํ•œ ํŒŒ๋“œ์—์„œ ์ถ”๊ฐ€ ์ž์›์ด ํ•„์š”ํ• ๊ฒฝ์šฐ ํ•ด๋‹น ํŒŒ๋“œ๊ฐ€ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ํŒŒ๋“œ์˜ ์ž์›์„ ๋‹ค์šด์‹œํ‚ค๊ณ  ํ•„์š”ํ•œ ํŒŒ๋“œ์—๊ฒŒ ์ž์›์„ ํ• ๋‹นํ•ด์คŒ์œผ๋กœ์จ ๊ด€๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

QoS classes๋Š” ๋ณ„๋„์˜ ์„ค์ •์œผ๋กœ ํ• ๋‹น์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ spec์˜ resources๋ฅผ ์ •์˜ํ•ด ์ค„๋•Œ requests, limits์˜ ์„ค์ • ๊ฐ’์œผ๋กœ ๋‹จ๊ณ„๊ฐ€ ์„ค์ •์ด ๋œ๋‹ค.

1. Guaranteed

๊ฐ€์žฅ ๋†’์€ ๋“ฑ๊ธ‰์˜ ๋‹จ๊ณ„๋กœ ํ•œ ํŒŒ๋“œ๋‚ด ๋ชจ๋“  request์™€ limit๊ฐ€ ์„ค์ • ๋˜์–ด ์žˆ๊ณ  reqeust์™€ limit์— memory์™€ cpu๊ฐ€ ๋ชจ๋‘ ์„ค์ •๋˜์–ด memory์™€ cpu์˜ request์™€ limit์˜ ๊ฐ’์ด ๋ชจ๋‘ ๊ฐ™์€ ๊ฒฝ์šฐ ํ•ด๋‹น ๋“ฑ๊ธ‰์ด ์„ค์ •๋œ๋‹ค.

2. Bustable

request๋‚ด์˜ mem/cpu ๊ฐ’์ด limit์˜ mem/cpu๊ฐ’๋ณด๋‹ค ๋‚ฎ์€ ๊ฒฝ์šฐ๋‚˜, request๋งŒ ์„ค์ •๋œ ๊ฒฝ์šฐ, ํŒŒ๋“œ๋‚ด ํ•œ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„ค์ •์ด ๋˜์—ˆ์–ด๋„ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„ค์ •์ด ์•ˆ๋œ ๊ฒฝ์šฐ๊ฐ€ ํ•ด๋‹น๋œ๋‹ค.

oom

๋“ฑ๊ธ‰์ด ๊ฐ™์„๊ฒฝ์šฐ OOM Score์— ๋”ฐ๋ผ์„œ ํ•ด๋‹น ์ ์ˆ˜๊ฐ€ ๋†’์€ ํŒŒ๋“œ๊ฐ€ ๋จผ์ € ๋‹ค์šด๋œ๋‹ค.

OOM Score

Out Of Memory์˜ ์•ฝ์ž๋กœ ํ•œ๋งˆ๋””๋กœ ์‚ฌ์šฉ๋Ÿ‰์„ ์˜๋ฏธํ•œ๋‹ค. Request์˜ ํ• ๋‹น๋Ÿ‰์— ๋น„๋ก€ํ•ด์„œ App์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋Ÿ‰.

3. BestEffort

๊ฐ€์žฅ ๋จผ์ € ๋‹ค์šด๋˜๋Š” ๋‹จ๊ณ„๋กœ ์–ด๋–ค container์—๋„ request์™€ limt๊ฐ€ ๋ฏธ์„ค์ •๋œ ํŒŒ๋“œ๊ฐ€ ํ•ด๋‹น๋œ๋‹ค.


Reference

์ธํ”„๋Ÿฐ-๊น€ํƒœ๋ฏผ๋‹˜ ๊ฐ•์˜

Last updated