• ABOUT
  • POSTS
  • GUESTBOOK

ยฉ 2025 BlueCool12 All rights reserved.

2026.03.22Kubernetes

๐ŸงŠ Kubernetes Pod ๋™์ž‘ ์›๋ฆฌ ์ •๋ฆฌ

1. Pod์˜ ๋„คํŠธ์›Œํฌ ๋ฐ ์ž์› ๊ณต์œ  ์›๋ฆฌ

Pod๋Š” ๋‹จ์ˆœํžˆ ์ปจํ…Œ์ด๋„ˆ ๋ฌถ์Œ์ด ์•„๋‹Œ ๊ณต์œ ๋œ Linux Namespace + Volume ์œ„์—์„œ ์‹คํ–‰๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์ง‘ํ•ฉ์ด๋‹ค.


- Pause Container (Infra Container)

Pod ์ƒ์„ฑ ์‹œ ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋กœ Pod์˜ Network Namespace๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์œ ์ง€ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์ƒ์„ฑ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. Container Runtime์ด Network Namespace ์ƒ์„ฑ
  2. Pause ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•ด๋‹น Namespace์— attach (anchor ์—ญํ• )
  3. ์ดํ›„ ๋ชจ๋“  ์•ฑ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•ด๋‹น Namespace์— join

๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋™์ผํ•œ Network Namespace๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ IP๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ localhost๋กœ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด๋Š” ์•ฑ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žฌ์‹œ์ž‘ ๋˜๋Š” ๊ฒฝ์šฐ์—๋„ Pause ์ปจํ…Œ์ด๋„ˆ๊ฐ€ Network Namespace๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Pod IP๋Š” ์œ ์ง€๋œ๋‹ค.


- Pod ๋‚ด๋ถ€ Namespace ๊ณต์œ 

k8s๋Š” Linux Namespace๋ฅผ ํ™œ์šฉํ•ด Pod ๋‚ด๋ถ€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฒฉ๋ฆฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋™์ผ Pod ๋‚ด๋ถ€์—์„œ๋Š” ์ผ๋ถ€ namespace๋ฅผ ๊ณต์œ ํ•œ๋‹ค.

  • Network (๊ณต์œ )
    ๋™์ผ IP
  • UTS (๊ณต์œ )
    hostname ๊ณต์œ 
  • IPC (๊ณต์œ )
    ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ 
  • PID (๊ธฐ๋ณธ ๋น„๊ณต์œ )
    ์˜ต์…˜์œผ๋กœ ๊ณต์œ  ๊ฐ€๋Šฅ
  • Mount (๋น„๊ณต์œ )
    ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ถ„๋ฆฌ

PID namespace๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ณต์œ ๋˜์ง€ ์•Š์ง€๋งŒ ๋‹ค์Œ ์„ค์ •์„ ํ†ตํ•ด ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

shareProcessNamespace: true

์ด ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฒฉ๋ฆฌ๋˜๋ฉฐ ๋ฐ์ดํ„ฐ ๊ณต์œ ๋Š” ๋ฐ˜๋“œ์‹œ Volume์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.


2. Init Container ์‹คํ–‰๊ทœ์น™

Init Container๋Š” ์ฃผ ์•ฑ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „, ํ•„์š”ํ•œ ํ™˜๊ฒฝ์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค. ์ฃผ์š” ์šฉ๋„๋Š” ๋ฐ์ดํ„ฐ ๋‹ค์šด๋กœ๋“œ, DB ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜, ์„ค์ • ํŒŒ์ผ ์ƒ์„ฑ, ์™ธ๋ถ€ ์„œ๋น„์Šค์˜ ๊ฐ€์šฉ์„ฑ ํ™•์ธ ๋“ฑ์ด ์žˆ๋‹ค.

Init Container๋Š” ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. ์ค‘๊ฐ„์— ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ•˜๋ฉด Pod๋Š” ์‹œ์ž‘๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ชจ๋“  Init Container๊ฐ€ ์„ฑ๊ณตํ•ด์•ผ ์•ฑ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

YAML์— ์ •์˜๋œ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ์‹คํ–‰๋˜๋ฉฐ ์ด์ „ Init ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„ฑ๊ณต(Exit Code 0)ํ•ด์•ผ๋งŒ ๋‹ค์Œ Init ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋œ๋‹ค. ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ•  ๊ฒฝ์šฐ Pod์˜ restartPolicy์— ๋”ฐ๋ผ ์ „์ฒด Pod๊ฐ€ ์žฌ์‹œ์ž‘๋˜๊ฑฐ๋‚˜ ์‹คํ–‰์ด ์ค‘๋‹จ๋œ๋‹ค. ์ฆ‰ ๋ชจ๋“  Init ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„ฑ๊ณตํ•ด์•ผ๋งŒ ์•ฑ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋œ๋‹ค.

์ผ๋ฐ˜์ ์ธ Init ์ปจํ…Œ์ด๋„ˆ๋Š” ์ข…๋ฃŒ๋ฅผ ์ „์ œ๋กœ ํ•˜๋ฏ€๋กœ Liveness, Readiness Probe๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์˜ค์ง ์ข…๋ฃŒ ์ฝ”๋“œ๋กœ๋งŒ ์„ฑ๊ณต ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•œ๋‹ค.

๋‹จ k8s 1.29 ์ดํ›„์—๋Š” restartPolicy: Always๊ฐ€ ์„ค์ •๋œ Init ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฒฝ์šฐ ์•ฑ ์ปจํ…Œ์ด๋„ˆ์™€ ํ•จ๊ป˜ ๊ณ„์† ์‹คํ–‰๋˜๋Š” ์‚ฌ์ด๋“œ์นด ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ์ด ๊ฒฝ์šฐ์— ํ•œํ•ด Readiness Probe๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•ด๋‹น ํ”„๋กœ๋ธŒ๊ฐ€ ์„ฑ๊ณตํ•ด์•ผ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰๋œ๋‹ค.

Pod ์Šค์ผ€์ค„๋ง ์‹œ ๋ฆฌ์†Œ์Šค ๊ณ„์‚ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹์„ ๋”ฐ๋ฅธ๋‹ค.

Effective Request = max(
max(init containers),
sum(app containers)
)


3. Pod Lifecycle & Probes

Pod์˜ ์ƒํƒœ๋Š” ๋‚ด๋ถ€ ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ์™€ Probe ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์ƒํƒœ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฐ€์ง„๋‹ค.

1. Wating
์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰ ์ค€๋น„ ์ค‘์ธ ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ, ์‹œํฌ๋ฆฟ ๋กœ๋”ฉ ๋“ฑ์ด ์žˆ๋‹ค.

2. Running
์ปจํ…Œ์ด๋„ˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

3. Terminated
ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋œ ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ •์ƒ ์ข…๋ฃŒ, ์‹คํŒจ ์ข…๋ฃŒ


- Probes (์ƒํƒœ ํ™•์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜)

k8s๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด Probe๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • Startup Probe
    ์ดˆ๊ธฐ ๊ธฐ๋™ ํ™•์ธ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋ฉฐ ์‹คํŒจ ์‹œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์žฌ์‹œ์ž‘ํ•œ๋‹ค. ์„ฑ๊ณต ์ „๊นŒ์ง€ Liveness/Readiness ๋น„ํ™œ์„ฑํ™”ํ•œ๋‹ค.
  • Liveness Probe
    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ ํ™•์ธ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋ฉฐ ์‹คํŒจ ์‹œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์žฌ์‹œ์ž‘ํ•œ๋‹ค.
  • Readiness Probe
    ํŠธ๋ž˜ํ”ฝ ์ˆ˜์‹  ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํ™•์ธ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋ฉฐ ์‹คํŒจ ์‹œ ์„œ๋น„์Šค ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ œ์™ธํ•œ๋‹ค.

ํ”ํžˆ ์˜คํ•ดํ•˜๊ธฐ๋กœ Pod Phase๊ฐ€ Running์ด๋ฉด ์„œ๋น„์Šค ๊ฐ€๋Šฅ ์ƒํƒœ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์‹ค์ œ ํŠธ๋ž˜ํ”ฝ ์œ ์ž… ์—ฌ๋ถ€๋Š” Readiness Probe ํ†ต๊ณผ ์—ฌ๋ถ€์— ๋‹ฌ๋ ค ์žˆ๋‹ค.

์ฆ‰, Readiness Probe๊ฐ€ ์‹คํŒจํ•˜๋ฉด Pod๋Š” ์‹คํ–‰ ์ค‘์ด์–ด๋„ Service Endpoint์—์„œ ์ œ์™ธ๋œ๋‹ค.


4. Pod Termination (์ข…๋ฃŒ ๊ณผ์ •)

Pod ์‚ญ์ œ ์‹œ k8s๋Š” ํŠธ๋ž˜ํ”ฝ ์ฐจ๋‹จ๊ณผ graceful shutdown์„ ๋™์‹œ์— ์ง„ํ–‰ํ•œ๋‹ค.


1) Terminating ์ƒํƒœ ๋ณ€๊ฒฝ ๋ฐ ์—”๋“œํฌ์ธํŠธ ์ œ๊ฑฐ

API Server๊ฐ€ Pod๋ฅผ Terminating์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. ์ด์™€ ๋™์‹œ์— ์—”๋“œํฌ์ธํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์„œ๋น„์Šค ๋ชฉ๋ก์—์„œ ํ•ด๋‹น Pod IP๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ์ƒˆ๋กœ์šด ํŠธ๋ž˜ํ”ฝ ์œ ์ž…์„ ์ฐจ๋‹จํ•œ๋‹ค. (์ด ๊ณผ์ •์€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ „ํŒŒ๋œ๋‹ค.)


2) preStop Hook ์‹คํ–‰

Kubelet์€ ์ปจํ…Œ์ด๋„ˆ์— ์ •์˜๋œ preStop ๋ช…๋ น์„ ๋‚ด๋ฆฐ๋‹ค. ์ฃผ๋กœ ์ง„ํ–‰ ์ค‘์ธ ์š”์ฒญ์˜ ์ฒ˜๋ฆฌ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•˜๊ฑฐ๋‚˜ DB ์—ฐ๊ฒฐ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ซ๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.


3) SIGTERM ์‹ ํ˜ธ ์ „์†ก

preStop ์ž‘์—…์ด ๋๋‚˜๋ฉด Kubelet์ด ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค(PID 1)์— SIGTERM์„ ๋ณด๋‚ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ •์ƒ ์ข…๋ฃŒ๋ฅผ ์œ ๋„ํ•œ๋‹ค.


4) Grace Period ๋Œ€๊ธฐ

์„ค์ •๋œ ์‹œ๊ฐ„(๊ธฐ๋ณธ 30์ดˆ) ๋™์•ˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.

terminationGracePeriodSeconds: 30


5) SIGKILL ๊ฐ•์ œ ์ข…๋ฃŒ

๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ด์•„์žˆ์œผ๋ฉด SIGKILL์„ ๋ณด๋‚ด ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•˜๊ณ , ์ตœ์ข…์ ์œผ๋กœ API Server๊ฐ€ Pod ์ •๋ณด๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

์ด์ „ ๊ธ€
โš“ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ•ต์‹ฌ ๊ตฌ์กฐ์™€ ๋™์ž‘ ์›๋ฆฌ ์ •๋ฆฌ
๋‹ค์Œ ๊ธ€
๋‹ค์Œ ๊ธ€์ด ์—†์Šต๋‹ˆ๋‹ค ( ฮ‡ . ฮ‡)
์žฅ์‹์šฉ ๋กœ๊ณ