# 8.๊ธฐ๋ณธ Object - Service

Service๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž์‹ ์˜ Cluster IP๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์ด Service๋ฅผ Pod์— ์—ฐ๊ฒฐ์‹œ์ผœ ๋†“์œผ๋ฉด Service์˜ IP๋ฅผ ํ†ตํ•ด์„œ Pod์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด์ „์— ๋ฐฐ์šด Pod์—๋„ Cluster๋‚ด์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” IP๊ฐ€ ์žˆ๋Š”๋ฐ ์™œ Service๋กœ ์ ‘๊ทผํ• ๊นŒ?

๊ทธ ์ด์œ ๋Š” Pod์˜ ํŠน์„ฑ์œผ๋กœ ์‹œ์Šคํ…œ ์žฅ์•  or ์„ฑ๋Šฅ ์žฅ์• ๋กœ ์ธํ•ด ์–ธ์ œ๋“ ์ง€ ์ฃฝ์„ ์ˆ˜ ์žˆ๋‹ค.
์ฃฝ์œผ๋ฉด ์žฌ์ƒ์„ฑ ๋˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํœ˜๋ฐœ์„ฑ์ž„!

๊ทธ๋ž˜์„œ Pod IP๋Š” ์‹ ๋ขฐ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

ํ•˜์ง€๋งŒ Service๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ง€์šฐ์ง€ ์•Š๋Š”ํ•œ ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ์žฌ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ.

๋”ฐ๋ผ์„œ Service๋กœ ์ ‘๊ทผํ•˜๋ฉด ํ•ญ์ƒ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” Pod์— ์ ‘์† ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.


Service๋Š” Pod์— ์ ‘๊ทผ์„ ๋„์™€์ฃผ๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋ช‡๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๋‚˜๋‰œ๋‹ค.

# 1.ClusterIP

img

โ–ฒ Service - ClusterIP ๋ฐฉ์‹

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์ด IP๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค Cluster ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Pod์— ์žˆ๋Š” IP์™€ ํŠน์ง•์ด ๋˜‘๊ฐ™๋‹ค!

๋”ฐ๋ผ์„œ Cluster๋‚ด์˜ ๋ชจ๋“  Object๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์™ธ๋ถ€(External)์—์„œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.

Pod๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ณ  Service๋Š” ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐํ•ด์„œ Pod์— ์ „๋‹ฌํ•ด์ค€๋‹ค.

yaml ๋‚ด์šฉ์„ ํ™•์ธํ•ด๋ณด์ž.

img

โ–ฒ ClusterIP์˜ yaml ํŒŒ์ผ

  • Service์™€ Pod๊ฐ€ ์—ฐ๊ฒฐ๋˜๊ธฐ ์œ„ํ•œ selector์™€ label์ด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
  • type: ClusterIP ๋Š” ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Œ (๊ธฐ๋ณธ๊ฐ’์ด ClusterIP์ž„!)
  • port: 9000 ๋Š” 9000๋ฒˆ ํฌํŠธ๋กœ ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ target์˜ 8080ํฌํŠธ๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค๋Š” ๋‚ด์šฉ

# 2.NodePort

NodePort ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค์–ด๋„ Service์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ClusterIP๊ฐ€ ํ• ๋‹น์ด ๋˜์–ด์„œ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

img

โ–ฒ Service - NodePort ํƒ€์ž…

# โนNodePort์˜ ํฐ ํŠน์ง•

Kubernetes Cluster์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  Node์—๊ฒŒ ๋˜‘๊ฐ™์€ Port๊ฐ€ ํ• ๋‹น์ด ๋˜์–ด์„œ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์–ด๋Š Node๋˜ ๊ฐ„์— ๊ทธ IP์˜ ํฌํŠธ๋กœ ์ ‘์†์„ ํ•˜๋ฉด ํ•ด๋‹น Service์— ์—ฐ๊ฒฐ์ด ๋œ๋‹ค!
์ด Service๋Š” ์ž์‹ ์— ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” Pod์— ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•ด์ค€๋‹ค.

# ์ฃผ์˜ํ• ์ !

  • pod๊ฐ€ ์žˆ๋Š” node์—๋งŒ ํฌํŠธ๊ฐ€ ํ• ๋‹น๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ๋ชจ๋“  node์— Port๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

yaml ํŒŒ์ผ์„ ํ™•์ธํ•ด๋ณด์ž.

img

โ–ฒ NodePort yamlํŒŒ์ผ

  • type: NodePort โ†’ NodePort ํƒ€์ž…์œผ๋กœ ์„ค์ •
  • nodePort: port๋ฒˆํ˜ธ โ†’ Port๋ฒˆํ˜ธ๋ฅผ ์„ค์ •
    • 30000~32767๊ฐ’์œผ๋กœ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ ์ง€ ์•Š๋Š”๋‹ค๋ฉด ์•Œ์•„์„œ ๋ฒ”์œ„๋‚ด๋กœ ์„ค์ •๋œ๋‹ค.

# ์ถ”๊ฐ€์ ์ธ ์†์„ฑ

๋งŒ์•ฝ ๊ฐ Node์— Pod๊ฐ€ ํ•˜๋‚˜์”ฉ ์˜ฌ๋ผ๊ฐ€์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด Node1๋กœ ์ ‘๊ทผํ•˜๋”๋ผ๋„ ์ด Service๋Š” Node2์— ์žˆ๋Š” Pod์— ํŠธ๋ž˜ํ”ฝ ์ „๋‹ฌ ๊ฐ€๋Šฅ
Service์ž…์žฅ์—์„œ๋Š” ์–ด๋–ค Node์—์„œ ์˜จ ํŠธ๋ž˜ํ”ฝ์ธ์ง€ ์ƒ๊ด€์—†์ด ์ž์‹ ์—๊ฒŒ ์—ฐ๊ฒฐ๋œ Node์˜ Pod์—๊ฒŒ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ yamlํŒŒ์ผ์— externalTrafficPolicy: Local๋กœ ์„ค์ •ํ•  ๊ฒฝ์šฐ

ํŠน์ • Node ํฌํŠธ์— IP๋กœ ์ ‘๊ทผํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์€ Service๊ฐ€ ํ•ด๋‹น Node ์œ„์— ์˜ฌ๋ ค์ ธ์žˆ๋Š” Pod์—๋งŒ ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Œ!


# 3.Load Balancer

Load Balancer ํƒ€์ž…์˜ Service๋Š” ์•ž์—์„œ ๋‹ค๋ฃฌ NodePort์˜ ์„ฑ๊ฒฉ์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค.

# โน์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ

  • ๊ฐ๊ฐ์˜ Node์— ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐ์‹œ์ผœ์ฃผ๋Š” ์—ญํ• ์„ ํ•จ

# โน์ฃผ์˜ํ•  ์ 

  • Load Balancer์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์™ธ๋ถ€ ์ ‘์† IP์ฃผ์†Œ๋Š” ๊ฐœ๋ณ„์ ์œผ๋กœ Kubernetes๋ฅผ ์„ค์น˜ํ–ˆ์„๋•Œ ์ƒ๊ธฐ์ง€ ์•Š์Œ
  • ๋ณ„๋„๋กœ ์™ธ๋ถ€ ์ ‘์† IP๋ฅผ ํ• ๋‹นํ•ด์ค˜์•ผํ•จ(ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์„ค์น˜๋˜์–ด์žˆ์–ด์•ผ ํ•จ)
  • ๋งŒ์•ฝ GCP, AWS, Azure, OpenStack์˜ Kubernetes ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž์ฒด์ ์œผ๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์„ค์น˜๋˜์–ด์žˆ์Œ
    • ๋”ฐ๋ผ์„œ Load Balancer ํƒ€์ž…์œผ๋กœ Service๋ฅผ ๋งŒ๋“ค๋ฉด ์•Œ์•„์„œ ์™ธ๋ถ€์—์„œ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” IP๋ฅผ ๋งŒ๋“ค์–ด์คŒ!

img

โ–ฒ Service - Load Balancer ํƒ€์ž…

yaml ํŒŒ์ผ์„ ํ™•์ธํ•ด๋ณด๋ฉด

img

โ–ฒ Load Balancer ํƒ€์ž… yaml ํŒŒ์ผ

ํฌ๊ฒŒ ๋‹ค๋ฅธ์ ์ด ์—†์ด ํƒ€์ž…์„ type: LoadBalancer๋กœ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค.

Service๋Š” ์ด์™ธ์—๋„ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

# 4.์–ธ์ œ ์–ด๋–ค Service๋ฅผ ์‚ฌ์šฉํ• ๊นŒ?

Service ์‚ฌ์šฉ๋ฒ•์€ ์•Œ์•˜๋Š”๋ฐ ๊ฐ๊ฐ์˜ Service ํƒ€์ž…์„ ์–ด๋Š ์ƒํ™ฉ์— ์‚ฌ์šฉํ•ด์•ผ ๋ ๊นŒ?

# โน1. ClusterIP

  • ClusterIP๋Š” ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Œ
  • Cluster ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” IP
  • ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— IP์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์ƒ์€ Cluster ์ธ๊ฐ€๋œ ์‚ฌ์šฉ์ž (์šด์˜์ž)

# ์ฃผ๋œ ์ž‘์—… : Kubernetes ๋‚ด๋ถ€ ๋Œ€์‰ฌ๋ณด๋“œ ๊ด€๋ฆฌ

๊ฐ Pod์˜ ์„œ๋น„์Šค์ƒํƒœ ๋””๋ฒ„๊น…


# โน2. NodePort

  • ๋ฌผ๋ฆฌ์ ์ธ Host์— IP๋ฅผ ํ†ตํ•ด Pod์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ!
  • ๋Œ€๋ถ€๋ถ„์˜ Host IP๋Š” ๋ณด์•ˆ์ ์œผ๋กœ ๋‚ด๋ถ€๋ง์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์„ฑ
  • ๋”ฐ๋ผ์„œ Node Port๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋ฐ–์— ์žˆ์ง€๋งŒ ๋‚ด๋ถ€๋ง ์•ˆ์—์„œ ์ ‘๊ทผํ•ด์•ผํ•  ๋•Œ ์“ฐ์ž„
  • ์ผ์‹œ์ ์ธ ์™ธ๋ถ€ ์—ฐ๋™์šฉ์œผ๋กœ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

๋‚ด๋ถ€ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๊ฐ€ ์™ธ๋ถ€์— ๊ฐ„๋‹จํ•œ ๋ฐ๋ชจ๋ฅผ ๋ณด์—ฌ์ค„ ๋•Œ ์ข…์ข… ๋„คํŠธ์›Œํฌ ์ค‘๊ณ„๊ธฐ์— ํฌํŠธํฌ์›Œ๋”ฉ์„ ํ•ด์„œ ์™ธ๋ถ€์—์„œ ๋‚ด๋ถ€์— ์—ฐ๊ฒฐํ•ด์„œ NodePort๋ฅผ ์ž ๊น ๋šซ์–ด๋†“๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ


# โน3. Load Balancer

# ์‹ค์งˆ์ ์œผ๋กœ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์— ๋…ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

๋‚ด๋ถ€ IP๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๊ณ  ์™ธ๋ถ€ IP์— ์•ˆ์ •์ ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ๋…ธ์ถœ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ

Last Updated: 6/18/2023, 2:13:15 PM