(4์žฅ)์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋„คํŠธ์›Œํ‚น์˜ ๊ธฐ์ดˆ: Pod๋Š” ์–ด๋–ป๊ฒŒ ํ†ต์‹ ํ• ๊นŒ?

2 minute read

๐ŸŒ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋„คํŠธ์›Œํ‚น์˜ ๊ธฐ์ดˆ: Pod๋Š” ์–ด๋–ป๊ฒŒ ํ†ต์‹ ํ• ๊นŒ?

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์ฒ˜์Œ ์ ‘ํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฐ€์žฅ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฐ”๋กœ ๋„คํŠธ์›Œํ‚น์ž…๋‹ˆ๋‹ค.
Pod ๊ฐ„ ํ†ต์‹ ์€ ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€, ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š”์ง€,
ClusterIP, DNS, CNI ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋ž€ ๋‹จ์–ด๋“ค์€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€, ์ด ๊ธ€์—์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿงฉ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋„คํŠธ์›Œํ‚น์˜ ๊ธฐ๋ณธ ์ฒ ํ•™

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋„คํŠธ์›Œํ‚น ์ฒ ํ•™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:

  1. ๋ชจ๋“  Pod๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  Pod์™€ ์ง์ ‘ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  2. Pod๋Š” ๊ณ ์œ ํ•œ IP๋ฅผ ๊ฐ€์ง„๋‹ค.
  3. ํ†ต์‹  ์‹œ NAT(Network Address Translation)์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ฆ‰, ๋งˆ์น˜ ํ•˜๋‚˜์˜ ํ‰ํ‰ํ•œ ๋„คํŠธ์›Œํฌ์— ๋ชจ๋“  Pod๊ฐ€ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ์ด๋Š” ๊ธฐ์กด์˜ ๊ฐ€์ƒ๋จธ์‹  ๋„คํŠธ์›Œํ‚น ๋ฐฉ์‹๊ณผ ํฐ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“ฆ Pod ๊ฐ„ ํ†ต์‹ ์˜ ๊ตฌ์กฐ

๊ฐ Pod๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋‚ด๋ถ€์—์„œ ๊ณ ์œ ํ•œ IP ์ฃผ์†Œ๋ฅผ ๋ถ€์—ฌ๋ฐ›์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ด IP๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€ ์ „์šฉ์ด๋ฉฐ, ์™ธ๋ถ€์—์„œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

  • pod-a: 10.244.0.12
  • pod-b: 10.244.2.7

pod-a โ†’ pod-b ์ง์ ‘ ํ†ต์‹  ๊ฐ€๋Šฅ (๋‚ด๋ถ€ IP ๊ธฐ๋ฐ˜)


๐Ÿ”— Service์™€ ClusterIP๋ž€?

Pod๋Š” ์ž์ฃผ ์ƒ์„ฑยท์‚ญ์ œ๋˜๋ฏ€๋กœ, IP๊ฐ€ ๋ฐ”๋€Œ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Service๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“˜ Service๋ž€?

  • ์—ฌ๋Ÿฌ Pod์— ๊ณตํ†ต ์ฃผ์†Œ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ฐ์ฒด
  • Pod IP๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ Service๋ฅผ ํ†ตํ•ด ๊ณ„์† ์ ‘๊ทผ ๊ฐ€๋Šฅ

๐Ÿ“˜ ClusterIP๋ž€?

  • ๊ธฐ๋ณธ ์„œ๋น„์Šค ํƒ€์ž…
  • ๋‚ด๋ถ€ ํ†ต์‹  ์ „์šฉ ๊ฐ€์ƒ IP๋ฅผ ๋ถ€์—ฌ
kubectl expose deployment myapp --port=80 --target-port=8080 --name=myapp-svc
ํ•ญ๋ชฉ ์„ค๋ช…
๊ธฐ๋ณธ ํƒ€์ž… ClusterIP (๋‚ด๋ถ€ ์ „์šฉ)
์™ธ๋ถ€ ์ ‘๊ทผ โŒ ๋ถˆ๊ฐ€๋Šฅ
๋‚ด๋ถ€ ํ†ต์‹  โœ… ๊ฐ€๋Šฅ (DNS ์ด๋ฆ„์œผ๋กœ ์—ฐ๊ฒฐ)
์ž๋™ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ โœ… ์—ฌ๋Ÿฌ Pod์— ์ž๋™ ๋ถ„์‚ฐ

๐Ÿง  DNS๋กœ ์ด๋ฆ„ ๊ธฐ๋ฐ˜ ํ†ต์‹ ํ•˜๊ธฐ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” CoreDNS๋ฅผ ์ด์šฉํ•ด
์„œ๋น„์Šค๋ช….๋„ค์ž„์ŠคํŽ˜์ด์Šค.svc.cluster.local ํ˜•ํƒœ์˜ ์ฃผ์†Œ๋กœ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.

curl http://myapp-svc

DNS๋Š” ์„œ๋น„์Šค ์ด๋ฆ„๋งŒ์œผ๋กœ๋„ Pod ๊ฐ„ ์—ฐ๊ฒฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.


๐Ÿ›  ์‹ค์Šต ์˜ˆ์‹œ: ClusterIP ํ†ต์‹  ํ™•์ธ

kubectl create deployment web --image=nginx
kubectl expose deployment web --port=80 --target-port=80 --name=web-svc
kubectl run curl-pod --image=busybox --restart=Never -it -- sh
wget -qO- http://web-svc

๐ŸŒ‰ CNI ํ”Œ๋Ÿฌ๊ทธ์ธ: ๋„คํŠธ์›Œํฌ์˜ ํ•ต์‹ฌ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ž์ฒด๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์œผ๋ฉฐ,
CNI (Container Network Interface) ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•ด Pod ๊ฐ„ ํ†ต์‹ ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

CNI ์ข…๋ฅ˜ ํŠน์ง•
Flannel ๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ, ํ•™์Šต์šฉ์— ์ ํ•ฉ
Calico ๊ณ ์„ฑ๋Šฅ, ๋„คํŠธ์›Œํฌ ์ •์ฑ… ์ง€์›
Cilium BPF ๊ธฐ๋ฐ˜, ๋ณด์•ˆ/ํ™•์žฅ์„ฑ ์šฐ์ˆ˜
Weave ์„ค์น˜ ๊ฐ„ํŽธ, ์†Œ๊ทœ๋ชจ์— ์ ํ•ฉ

๊ธฐ๋ณธ ์„ค์ • ํŒŒ์ผ์€ /etc/cni/net.d์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Š ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€ ์ ‘๊ทผ ๋ฐฉ๋ฒ•

ํƒ€์ž… ์„ค๋ช…
NodePort ๋…ธ๋“œ IP + ํฌํŠธ (30000~32767)๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
LoadBalancer ํด๋ผ์šฐ๋“œ์—์„œ ์™ธ๋ถ€ IP ์ž๋™ ํ• ๋‹น
Ingress ๋„๋ฉ”์ธ/๊ฒฝ๋กœ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ… + TLS ์ง€์›

Ingress๋Š” ํ•˜๋‚˜์˜ URL๋กœ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋ฅผ ๋‚˜๋ˆ„์–ด ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.


๐Ÿงฉ ํ•ต์‹ฌ ์š”์•ฝ ์ •๋ฆฌ

๊ตฌ์„ฑ ์š”์†Œ ์„ค๋ช…
Pod IP Pod์— ์ž๋™ ๋ถ€์—ฌ๋˜๋Š” ๋‚ด๋ถ€ IP
Service ์—ฌ๋Ÿฌ Pod์— ํ•˜๋‚˜์˜ ๊ฐ€์ƒ IP ์ œ๊ณต
ClusterIP ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค IP
DNS ์„œ๋น„์Šค ์ด๋ฆ„ โ†’ IP ๋งคํ•‘
CNI ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ ์ฒ˜๋ฆฌ (IP ํ• ๋‹น ๋ฐ ๋ผ์šฐํŒ… ๋“ฑ)
Ingress ์™ธ๋ถ€ ์ ‘๊ทผ์„ ์œ„ํ•œ ๊ณ ๊ธ‰ ๋ผ์šฐํŒ… ์„ค์ •

๐Ÿ“š ๋งˆ๋ฌด๋ฆฌ

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๋„คํŠธ์›Œํ‚น์€ Pod ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ ์ž๋™ํ™”๋œ ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค.
  • ์™ธ๋ถ€ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด์„œ๋Š” NodePort, LoadBalancer, Ingress ๋“ฑ์„ ์กฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • DNS์™€ CNI๋ฅผ ์ดํ•ดํ•˜๋ฉด ์•ˆ์ •์ ์ธ ์„œ๋น„์Šค ๋ฐฐํฌ๊ฐ€ ํ›จ์”ฌ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

โ˜๏ธ ๋„คํŠธ์›Œํ‚น์„ ์ž˜ ์ดํ•ดํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ ์„ค๊ณ„์™€ ๋””๋ฒ„๊น… ๋Šฅ๋ ฅ์ด ์‘ฅ์‘ฅ ์ž๋ž๋‹ˆ๋‹ค!


๐Ÿ“Ž ์ฐธ๊ณ ์ž๋ฃŒ:

  • https://kubernetes.io/docs/concepts/services-networking/
  • https://www.weave.works/
  • https://cilium.io/
  • ํ•œ๊ตญํด๋ฆฌํ…๋Œ€ํ•™ ์„œ์šธ๊ฐ•์„œ์บ ํผ์Šค ๋น…๋ฐ์ดํ„ฐ๊ณผ ์ดํ˜‘๊ฑด ๊ต์ˆ˜ ๊ฐ•์˜์ž๋ฃŒ

Updated: