ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿค– AI Assisted Content
์ด ๊ธ€์€ AI(Claude, Anthropic)์˜ ๋„์›€์„ ๋ฐ›์•„ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ž‘์„ฑ์ž๊ฐ€ ๋‚ด์šฉ์„ ๊ฒ€ํ† ํ•˜๊ณ  ํŽธ์ง‘ํ–ˆ์œผ๋‚˜, AI๊ฐ€ ์ดˆ์•ˆ ์ž‘์„ฑ ๋ฐ ๊ตฌ์„ฑ์— ์ฐธ์—ฌํ–ˆ์Œ์„ ๋ฐํž™๋‹ˆ๋‹ค.

๋“ค์–ด๊ฐ€๋ฉฐ

Kubernetes๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋ฉด "Pod๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ๊ด€๋ฆฌํ•˜๊ณ , ์ปจํ…Œ์ด๋„ˆ๋Š” ์™ธ๋ถ€์—์„œ ๊ด€๋ฆฌ๋œ๋‹ค"๋ผ๋Š” ์„ค๋ช…์„ ๋งŒ๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Pod ์•ˆ์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ปจํ…Œ์ด๋„ˆ๋Š” ์™ธ๋ถ€์—์„œ ๊ด€๋ฆฌ๋œ๋‹ค๋‹ˆ — ์ฒ˜์Œ ๋ณด๋ฉด ๊ฝค ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” ์ด ๋ง์ด ๋ฌด์Šจ ๋œป์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ผ๋Š” ๊ธฐ์ˆ ์ด ์–ด๋–ค ์›๋ฆฌ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ namespace, cgroup, CRI, kubelet ๋„ค ๊ฐ€์ง€ ํ‚ค์›Œ๋“œ๋กœ ํ’€์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. VM๊ณผ์˜ ์ฐจ์ด์ ๊นŒ์ง€ ๋น„์œ ์™€ ํ•จ๊ป˜ ์ •๋ฆฌํ–ˆ์œผ๋‹ˆ, ์ปจํ…Œ์ด๋„ˆ์˜ ํ•ต์‹ฌ ์›๋ฆฌ๋ฅผ ํ•œ๋ฒˆ์— ์žก์•„๊ฐˆ ์ˆ˜ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.


1. Pod์™€ ์ปจํ…Œ์ด๋„ˆ — ๋ˆ„๊ฐ€ ๋ญ˜ ๊ด€๋ฆฌํ•˜๋Š”๊ฐ€

Kubernetes์˜ ๊ฐ€์žฅ ์ž‘์€ ๋ฐฐํฌ ๋‹จ์œ„๋Š” Pod์ž…๋‹ˆ๋‹ค. Pod ์•ˆ์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋“ค์–ด ์žˆ์ฃ . ๊ทธ๋Ÿฐ๋ฐ Kubernetes๊ฐ€ ์ง์ ‘ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹ค์ œ๋กœ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๊ฑด ํ•ด๋‹น ๋…ธ๋“œ์— ์„ค์น˜๋œ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„(containerd, CRI-O ๋“ฑ)์˜ ๋ชซ์ž…๋‹ˆ๋‹ค.

๋น„์œ ํ•˜๋ฉด, Kubernetes๋Š” ํƒ๋ฐฐ ํšŒ์‚ฌ ๋ณธ์‚ฌ์ด๊ณ  ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์€ ํ˜„์žฅ ๋ฐฐ์†ก ๊ธฐ์‚ฌ์ž…๋‹ˆ๋‹ค. ๋ณธ์‚ฌ๋Š” "์ด ๋ฌผ๊ฑด์„ ์ด ์ฃผ์†Œ๋กœ ๋ณด๋‚ด๋ผ"๋Š” ์ฃผ๋ฌธ์„œ(Pod ์ŠคํŽ™)๋ฅผ ๋งŒ๋“ค๊ณ  ์ถ”์ ํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ ๋ฌผ๊ฑด์„ ๋“ค๊ณ  ๋›ฐ๋Š” ๊ฑด ๋ฐฐ์†ก ๊ธฐ์‚ฌ์ž…๋‹ˆ๋‹ค.

Kubernetes ์„ธ๊ณ„ (์ถ”์ƒํ™”)        |  ์‹ค์ œ ์‹คํ–‰ ์„ธ๊ณ„
                               |
  Pod Spec (desired state)     |
       ↓                       |
  kubelet (๋…ธ๋“œ ์—์ด์ „ํŠธ)       |
       ↓ CRI API ํ˜ธ์ถœ          |
  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€|โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
                               |  containerd / CRI-O
                               |       ↓
                               |  ์‹ค์ œ ์ปจํ…Œ์ด๋„ˆ ํ”„๋กœ์„ธ์Šค
                               |  (namespace + cgroup ์ ์šฉ)

Kubernetes๊ฐ€ ์ง์ ‘ ์•„๋Š” ๊ฑด Pod๋ผ๋Š” ์ถ”์ƒํ™” ๋‹จ์œ„๊นŒ์ง€์ž…๋‹ˆ๋‹ค. "์ปจํ…Œ์ด๋„ˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ฒฉ๋ฆฌํ•˜๋Š”" ์‹ค์ œ ์ €์ˆ˜์ค€ ์ž‘์—…์€ ๋Ÿฐํƒ€์ž„์ด ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Pod๊ฐ€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ถ”์ƒํ™”ํ•œ ์ด์œ ๊ฐ€ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. Pod๋Š” Kubernetes๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฆฌ์†Œ์Šค์ด๊ณ , ์ปจํ…Œ์ด๋„ˆ๋Š” Kubernetes ์™ธ๋ถ€(๋Ÿฐํƒ€์ž„)์—์„œ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.


2. kubelet — ๋ชจ๋“  ๋…ธ๋“œ์— ์ƒ์ฃผํ•˜๋Š” ํ˜„์žฅ ๋งค๋‹ˆ์ €

kubelet์€ ๋ชจ๋“  ์›Œ์ปค ๋…ธ๋“œ์— ํ•˜๋‚˜์”ฉ ์„ค์น˜๋˜๋Š” ์—์ด์ „ํŠธ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ํšŒ์‚ฌ๋ผ๋ฉด, kubelet์€ ๊ฐ ์ง€์ ์— ์ƒ์ฃผํ•˜๋Š” ํ˜„์žฅ ๋งค๋‹ˆ์ €์ž…๋‹ˆ๋‹ค. ๋ณธ์‚ฌ(Control Plane)์—์„œ "์ด ๋…ธ๋“œ์—์„œ Pod๋ฅผ ์‹คํ–‰ํ•ด"๋ผ๋Š” ์ง€์‹œ๊ฐ€ ๋‚ด๋ ค์˜ค๋ฉด, kubelet์ด ๋ฐ›์•„์„œ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์—๊ฒŒ ์‹ค์ œ ์ž‘์—…์„ ์‹œํ‚ต๋‹ˆ๋‹ค.

kubelet์ด ํ•˜๋Š” ์ผ์„ ์ •๋ฆฌํ•˜๋ฉด ์ด๋ ‡์Šต๋‹ˆ๋‹ค:

  • API Server๋กœ๋ถ€ํ„ฐ Pod ์ŠคํŽ™์„ ์ˆ˜์‹ 
  • ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์—๊ฒŒ CRI API๋กœ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ์š”์ฒญ
  • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž˜ ๋Œ๊ณ  ์žˆ๋Š”์ง€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ƒํƒœ ์ฒดํฌ (liveness/readiness probe)
  • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ฃฝ์œผ๋ฉด restartPolicy์— ๋”ฐ๋ผ ์žฌ์‹œ์ž‘ ์š”์ฒญ
  • ๋…ธ๋“œ์˜ CPU/๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ๋ฅผ API Server์— ๋ณด๊ณ 
API Server: "๋…ธ๋“œ A์— nginx Pod ๋„์›Œ"
     ↓
kubelet (๋…ธ๋“œ A์— ์ƒ์ฃผ): "์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค"
     ↓ CRI ํ˜ธ์ถœ
containerd: ์‹ค์ œ๋กœ nginx ์ปจํ…Œ์ด๋„ˆ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ

kubelet์€ Pod์˜ ์ƒ๋ช…์ฃผ๊ธฐ ์ „์ฒด๋ฅผ ์ฑ…์ž„์ง€๋Š” ๋…ธ๋“œ ์ธก ๊ด€๋ฆฌ์ž์ด๊ณ , ์‹ค์ œ ์ปจํ…Œ์ด๋„ˆ ์กฐ์ž‘์€ ํ•ญ์ƒ ๋Ÿฐํƒ€์ž„์—๊ฒŒ ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค.


3. CRI — kubelet๊ณผ ๋Ÿฐํƒ€์ž„ ์‚ฌ์ด์˜ ํ‘œ์ค€ ๊ณ„์•ฝ์„œ

๊ทธ๋Ÿฌ๋ฉด kubelet์€ ์–ด๋–ป๊ฒŒ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„๊ณผ ์†Œํ†ตํ• ๊นŒ์š”? ์—ฌ๊ธฐ์„œ ๋“ฑ์žฅํ•˜๋Š” ๊ฒŒ CRI(Container Runtime Interface)์ž…๋‹ˆ๋‹ค.

CRI๋Š” kubelet๊ณผ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์‚ฌ์ด์˜ ํ‘œ์ค€ API ๊ทœ๊ฒฉ์ž…๋‹ˆ๋‹ค. USB ํฌํŠธ ๊ทœ๊ฒฉ์ฒ˜๋Ÿผ, ๊ทœ๊ฒฉ๋งŒ ๋งž์œผ๋ฉด ์–ด๋–ค ์žฅ์น˜๋“  ๊ฝ‚์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

kubelet โ”€โ”€โ”€โ”€ CRI (gRPC API) โ”€โ”€โ”€โ”€→ containerd
kubelet โ”€โ”€โ”€โ”€ CRI (gRPC API) โ”€โ”€โ”€โ”€→ CRI-O
kubelet โ”€โ”€โ”€โ”€ CRI (gRPC API) โ”€โ”€โ”€โ”€→ ์–ด๋–ค ๋Ÿฐํƒ€์ž„์ด๋“ 

CRI๊ฐ€ ์ •์˜ํ•˜๋Š” ํ•ต์‹ฌ ์„œ๋น„์Šค๋Š” ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค:

์„œ๋น„์Šค ์—ญํ•  ์ฃผ์š” ๋ฉ”์„œ๋“œ
RuntimeService ์ปจํ…Œ์ด๋„ˆ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ CreateContainer, StartContainer, StopContainer, RemoveContainer, ContainerStatus
ImageService ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ PullImage, ListImages, RemoveImage

kubelet์€ ์ด ํ‘œ์ค€ API๋งŒ ํ˜ธ์ถœํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ, ๋’ค์— containerd๊ฐ€ ์žˆ๋“  CRI-O๊ฐ€ ์žˆ๋“  ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก ํฌ์ธํŠธ: "ํŒŒ๋“œ ์‹คํ–‰ ์ค‘์—๋Š” ๋…ธ๋“œ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„๊ณผ ์—ฐ๋™ํ•˜๋ฉฐ, ํŒŒ๋“œ์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ–์ถ”์–ด์ ธ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค"๋Š” ๋ง์€, kubelet์ด ์ฃผ๊ธฐ์ ์œผ๋กœ CRI๋ฅผ ํ†ตํ•ด ๋Ÿฐํƒ€์ž„์—๊ฒŒ "์ด Pod์˜ ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ๊ฐ€ ์–ด๋•Œ?"๋ผ๊ณ  ๋ฌผ์–ด๋ณด๊ณ , ์ฃฝ์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์œผ๋ฉด "๋‹ค์‹œ ๋งŒ๋“ค์–ด์ค˜"๋ผ๊ณ  ์š”์ฒญํ•˜๋Š” reconciliation loop๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค.


4. namespace — "๋ญ˜ ๋ณผ ์ˆ˜ ์žˆ๋Š”๊ฐ€"๋ฅผ ๊ฒฉ๋ฆฌ

์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์˜ ์ง„์งœ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ์‚ฌ์‹ค ํŠน๋ณ„ํ•œ ๋งˆ๋ฒ•์ด ์•„๋‹ˆ๋ผ, Linux ์ปค๋„์ด ์ œ๊ณตํ•˜๋Š” namespace์™€ cgroup ๋‘ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์กฐํ•ฉํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

namespace๊ฐ€ ์—†๋Š” ์„ธ์ƒ

Linux ์„œ๋ฒ„ ํ•œ ๋Œ€์— ํ”„๋กœ์„ธ์Šค 3๊ฐœ๊ฐ€ ๋Œ๊ณ  ์žˆ๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค.

Linux ์„œ๋ฒ„ (์ปค๋„ 1๊ฐœ)
โ”œโ”€โ”€ nginx    (PID 100)
โ”œโ”€โ”€ mysql    (PID 200)
โ””โ”€โ”€ redis    (PID 300)

์ด ์ƒํƒœ์—์„œ nginx ์•ˆ์—์„œ ps aux๋ฅผ ์น˜๋ฉด mysql, redis ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค ๋ณด์ž…๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ๋„ ํŒŒ์ผ์‹œ์Šคํ…œ๋„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. nginx๊ฐ€ ํ•ดํ‚น๋‹นํ•˜๋ฉด mysql ๋ฐ์ดํ„ฐ๊นŒ์ง€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์ฃ .

namespace๋ฅผ ์ ์šฉํ•˜๋ฉด

๊ฐ™์€ ์„œ๋ฒ„์ธ๋ฐ, ๊ฐ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ˆˆ๊ฐ€๋ฆฌ๊ฐœ๋ฅผ ์”Œ์›๋‹ˆ๋‹ค.

Linux ์„œ๋ฒ„ (์ปค๋„ 1๊ฐœ, ์‹ค์ œ ํ˜„์‹ค)
โ”œโ”€โ”€ nginx    (์‹ค์ œ PID 100)
โ”œโ”€โ”€ mysql    (์‹ค์ œ PID 200)
โ””โ”€โ”€ redis    (์‹ค์ œ PID 300)

nginx๊ฐ€ ๋ณด๋Š” ์„ธ์ƒ (PID namespace ์ ์šฉ):
  โ””โ”€โ”€ nginx (PID 1) ← ์ž๊ธฐ๊ฐ€ ์œ ์ผํ•œ ํ”„๋กœ์„ธ์Šค์ธ ์ค„ ์•Ž. mysql? redis? ๋ชจ๋ฆ„.

mysql์ด ๋ณด๋Š” ์„ธ์ƒ (PID namespace ์ ์šฉ):
  โ””โ”€โ”€ mysql (PID 1) ← ์ž๊ธฐ๊ฐ€ ์œ ์ผํ•œ ํ”„๋กœ์„ธ์Šค์ธ ์ค„ ์•Ž. nginx? redis? ๋ชจ๋ฆ„.

์‹ค์ œ๋กœ๋Š” ๊ฐ™์€ ์ปค๋„ ์œ„์— ์žˆ๋Š”๋ฐ, ๊ฐ์ž ์ž๊ธฐ๋งŒ์˜ PID 1๋ฒˆ์„ ๊ฐ–๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์กด์žฌ ์ž์ฒด๋ฅผ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

Network namespace๋„ ๊ฐ™์€ ์›๋ฆฌ

namespace ์—†์ด๋Š” ์„œ๋ฒ„์— IP๊ฐ€ ํ•˜๋‚˜(192.168.1.10)์ด๊ณ  ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. nginx๊ฐ€ 80๋ฒˆ ํฌํŠธ๋ฅผ ์“ฐ๋ฉด mysql์€ 80๋ฒˆ์„ ๋ชป ์”๋‹ˆ๋‹ค.

Network namespace๋ฅผ ์ ์šฉํ•˜๋ฉด ๊ฐ์ž ๋ณ„๋„์˜ ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ ์นด๋“œ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค:

nginx์˜ ๋„คํŠธ์›Œํฌ ์„ธ์ƒ:  IP 172.17.0.2, ํฌํŠธ 80 ์‚ฌ์šฉ ์ค‘
mysql์˜ ๋„คํŠธ์›Œํฌ ์„ธ์ƒ:  IP 172.17.0.3, ํฌํŠธ 80 ์‚ฌ์šฉ ๊ฐ€๋Šฅ ← ์ถฉ๋Œ ์—†์Œ

์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค ๊ณ ์œ ํ•œ IP๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ด์œ ๊ฐ€ ๋ฐ”๋กœ ์ด๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฃผ์š” namespace ์ข…๋ฅ˜

namespace ๊ฒฉ๋ฆฌ ๋Œ€์ƒ ํšจ๊ณผ
PID ํ”„๋กœ์„ธ์Šค ID ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ๋Š” ์ž๊ธฐ ํ”„๋กœ์„ธ์Šค๋งŒ ๋ณด์ž„
Network ๋„คํŠธ์›Œํฌ ์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค ๋ณ„๋„ IP, ํฌํŠธ ๊ณต๊ฐ„
Mount ํŒŒ์ผ์‹œ์Šคํ…œ ์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค ๋…๋ฆฝ๋œ ํŒŒ์ผ์‹œ์Šคํ…œ ๋ทฐ
UTS ํ˜ธ์ŠคํŠธ๋ช… ์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค ๋‹ค๋ฅธ hostname ๊ฐ€๋Šฅ
IPC ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ ๊ฒฉ๋ฆฌ
User ์‚ฌ์šฉ์ž ID ์ปจํ…Œ์ด๋„ˆ ์•ˆ์˜ root ≠ ํ˜ธ์ŠคํŠธ์˜ root

ํ•œ๋งˆ๋””๋กœ namespace๋Š”, ๊ฐ™์€ OS ์ปค๋„ ์œ„์˜ ํ”„๋กœ์„ธ์Šค์ธ๋ฐ ๊ฐ์ž ๋…๋ฆฝ๋œ ์ปดํ“จํ„ฐ์— ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ฐฉ๊ฐํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” Linux ์ปค๋„ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.


5. cgroup — "์–ผ๋งˆ๋‚˜ ์“ธ ์ˆ˜ ์žˆ๋Š”๊ฐ€"๋ฅผ ์ œํ•œ

namespace๊ฐ€ "๋ญ˜ ๋ณด๋Š”๊ฐ€"๋ฅผ ๊ฒฉ๋ฆฌํ•œ๋‹ค๋ฉด, cgroup(Control Group)์€ "์–ผ๋งˆ๋‚˜ ์“ฐ๋Š”๊ฐ€"๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

namespace๊ฐ€ ์‚ฌ๋ฌด์‹ค์˜ ์นธ๋ง‰์ด๋ผ๋ฉด, cgroup์€ ๊ฐ ์นธ๋ง‰์ด์— ์„ค์น˜๋œ ์ „๊ธฐ·์ˆ˜๋„ ์‚ฌ์šฉ๋Ÿ‰ ์ œํ•œ๊ธฐ์ž…๋‹ˆ๋‹ค.

์ œํ•œ ๋Œ€์ƒ ์˜ˆ์‹œ
CPU ์ด ์ปจํ…Œ์ด๋„ˆ๋Š” CPU ์ฝ”์–ด 0.5๊ฐœ๋ถ„๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
๋ฉ”๋ชจ๋ฆฌ ์ด ์ปจํ…Œ์ด๋„ˆ๋Š” ์ตœ๋Œ€ 512MB๊นŒ์ง€๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
๋””์Šคํฌ I/O ์ฝ๊ธฐ/์“ฐ๊ธฐ ์†๋„ ์ œํ•œ
๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ ์ „์†ก๋Ÿ‰ ์ œํ•œ

Kubernetes์—์„œ Pod ์ŠคํŽ™์— ์ž‘์„ฑํ•˜๋Š” resources.limits๊ฐ€ ๋ฐ”๋กœ ์ด cgroup ์„ค์ •์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค:

resources:
  requests:
    memory: "256Mi"    # ์Šค์ผ€์ค„๋ง ๊ธฐ์ค€ (์ด ๋งŒํผ์€ ๋ณด์žฅํ•ด์ค˜)
    cpu: "250m"
  limits:
    memory: "512Mi"    # cgroup์ด ์‹ค์ œ๋กœ ์ด ํ•œ๋„๋ฅผ ๊ฐ•์ œ
    cpu: "500m"

โš ๏ธ ์ฃผ์˜: ๋ฉ”๋ชจ๋ฆฌ limits๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด cgroup์ด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. Pod ์ƒํƒœ๊ฐ€ OOMKilled๋กœ ๋ฐ”๋€Œ๋Š” ์ด์œ ๊ฐ€ ๋ฐ”๋กœ ์ด๊ฒ๋‹ˆ๋‹ค.


6. VM๊ณผ ์ปจํ…Œ์ด๋„ˆ — ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด

์ด ๋ชจ๋“  ๋‚ด์šฉ์„ ์ข…ํ•ฉํ•˜๋ฉด, VM๊ณผ ์ปจํ…Œ์ด๋„ˆ์˜ ์ฐจ์ด๊ฐ€ ๋ช…ํ™•ํ•ด์ง‘๋‹ˆ๋‹ค.

VM ๋ฐฉ์‹:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Guest OS ์ „์ฒด    โ”‚  โ”‚  Guest OS ์ „์ฒด    โ”‚  ← OS๋ฅผ ํ†ต์งธ๋กœ ํ•˜๋‚˜ ๋” ๋„์›€
โ”‚  (์ปค๋„ ํฌํ•จ)      โ”‚  โ”‚  (์ปค๋„ ํฌํ•จ)      โ”‚
โ”‚  nginx            โ”‚  โ”‚  mysql            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       ํ•˜์ดํผ๋ฐ”์ด์ € (ESXi ๋“ฑ)
       ๋ฌผ๋ฆฌ ์„œ๋ฒ„

์ปจํ…Œ์ด๋„ˆ ๋ฐฉ์‹ (namespace + cgroup):
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  nginx        โ”‚  โ”‚  mysql        โ”‚  ← ํ”„๋กœ์„ธ์Šค๋งŒ ๊ฒฉ๋ฆฌ
โ”‚  (PID 1๋กœ ๋ด„) โ”‚  โ”‚  (PID 1๋กœ ๋ด„) โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       ๊ฐ™์€ ์ปค๋„ ๊ณต์œ                ← OS๋ฅผ ์ƒˆ๋กœ ์•ˆ ๋„์›€
       Linux ์„œ๋ฒ„

VM์€ ์ง„์งœ ๋ณ„๋„์˜ ์ปดํ“จํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๊ณ , ์ปจํ…Œ์ด๋„ˆ๋Š” ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ์—์„œ ์ฐฉ์‹œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ VM๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ€๋ณ๊ณ , ๋ช‡ ์ดˆ ๋งŒ์— ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.


์ •๋ฆฌ

๊ฐœ๋… ํ•œ ์ค„ ์š”์•ฝ
Pod Kubernetes๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์ตœ์†Œ ๋ฐฐํฌ ๋‹จ์œ„. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ถ”์ƒํ™”
kubelet ๋ชจ๋“  ๋…ธ๋“œ์— ์ƒ์ฃผํ•˜๋Š” ์—์ด์ „ํŠธ. Pod ์ŠคํŽ™์„ ๋ฐ›์•„ ๋Ÿฐํƒ€์ž„์—๊ฒŒ ์ž‘์—… ์œ„์ž„
CRI kubelet๊ณผ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์‚ฌ์ด์˜ ํ‘œ์ค€ API. ๋Ÿฐํƒ€์ž„ ์ข…๋ฅ˜์— ์ƒ๊ด€์—†์ด ๋™์ผํ•˜๊ฒŒ ๋™์ž‘
namespace ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ญ˜ ๋ณผ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒฉ๋ฆฌ. ๊ฐ์ž ๋…๋ฆฝ๋œ ํ™˜๊ฒฝ์— ์žˆ๋‹ค๊ณ  ์ฐฉ๊ฐํ•˜๊ฒŒ ๋งŒ๋“ฆ
cgroup ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ž์›์„ ์“ธ ์ˆ˜ ์žˆ๋Š”์ง€ ์ œํ•œ. OOMKilled์˜ ์›์ธ
์ปจํ…Œ์ด๋„ˆ VM์ด ์•„๋‹ˆ๋ผ namespace + cgroup + ํŒŒ์ผ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€์˜ ์กฐํ•ฉ

์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฒฐ๊ตญ "Linux ์ปค๋„์˜ ๊ฒฉ๋ฆฌ ๊ธฐ๋Šฅ์„ ์˜๋ฆฌํ•˜๊ฒŒ ์กฐํ•ฉํ•œ ๊ฒƒ"์ด๊ณ , Kubernetes๋Š” ์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ Pod๋ผ๋Š” ์ถ”์ƒํ™”๋กœ ๊ฐ์‹ธ์„œ ๋Œ€๊ทœ๋ชจ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. CRI๋ผ๋Š” ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค ๋•๋ถ„์— ๋Ÿฐํƒ€์ž„์ด ๋ญ๋“  ์ƒ๊ด€์—†์ด ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๊ณ , kubelet์ด ๊ฐ ๋…ธ๋“œ์—์„œ ์ด ๋ชจ๋“  ๊ฒƒ์„ ์ค‘์žฌํ•˜๋Š” ํ˜„์žฅ ๋งค๋‹ˆ์ € ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.


์ฐธ๊ณ  ๋ฌธ์„œ

๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2026/06   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
๊ธ€ ๋ณด๊ด€ํ•จ