์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[Kubernetes] ์„œ๋น„์Šค : NodePort, ClusterIP, Load Balancer

๐Ÿ˜Ž ์ง€์‹ in Action/โ˜๏ธ ๐Ÿ–ฅ๏ธ

by :ํ•ดํ”ผ๋ž˜๋น—๐Ÿพ 2026. 4. 5. 13:07

๋ณธ๋ฌธ

728x90

์„œ๋น„์Šค

kubectl service {์„œ๋น„์Šค์ด๋ฆ„} --url

 

https://kubernetes.io/ko/docs/concepts/services-networking/service/#publishing-services-service-types

 

์„œ๋น„์Šค

์™ธ๋ถ€์™€ ์ ‘ํ•˜๋Š” ๋‹จ์ผ ์—”๋“œํฌ์ธํŠธ ๋’ค์— ์žˆ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋…ธ์ถœ์‹œํ‚ค๋ฉฐ, ์ด๋Š” ์›Œํฌ๋กœ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฐฑ์—”๋“œ๋กœ ๋‚˜๋‰˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

kubernetes.io

 

 

Pod ์ •์˜๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค๊ณ  ํ•˜์ž 

# pod-definition.yml

apiVersion: v1
kind: Pod

metadata:
  name: myapp-pod
  labels:
    app: myapp
    type: front-end
  spec:
    containers:
    - name: nginx-container
      image: nginx

 

 

NodePort

Service ๊ด€์ ์—์„œ ๋‚ด ํฌํŠธ(port), ๋…ธ๋“œ์— ๋‹ฌ๋ฆฐ Port(๋…ธ๋“œํฌํŠธ), ํƒ€๊ฒŸ ํฌํŠธ(ํฌํŠธ๋ฅผ ๋…ธ์ถœํ•˜๊ณ  ์‹ถ์€ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌํŠธ)

# service-definition.yml

apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  type: NodePort
  ports:
    - targetPort: 80   # 1. ํƒ€๊ฒŸ ํฌํŠธ (default, 2์™€ ๋™์ผ)
      port: 80         # 2. ์„œ๋น„์Šค ์˜ค๋ธŒ์ ํŠธ์˜ ํฌํŠธ๊ฐ’ (ํ•„์ˆ˜)
      nodePort: 30008  # 3. ๋…ธ๋“œ ํฌํŠธ (default, ์ž๋™)
  selector:  # pod-definition.yml์˜ ๋ ˆ์ด๋ธ” selector (๋ชจ๋“  ์ผ์น˜ํ•˜๋Š” ๋ ˆ์ด๋ธ” ์ฐพ์•„์„œ ์ง„ํ–‰ํ•จ) 
    app: myapp
    type: front-end

 

- ์„œ๋น„์Šค๋Š” ๋ชจ๋“  ๋…ธ๋“œ์— ๊ฑธ์ณ์„œ ๋™์ผํ•œ ๋ ˆ์ด๋ธ”์— ํ•ด๋‹นํ•˜๋Š” ํŒŒ๋“œ์— ๋Œ€ํ•ด ์ ์šฉ๋˜๊ณ  

   ์ด๋•Œ service ๋Š” ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ์—ญํ• ์„ ํ•˜๊ฒŒ ๋จ

 

 

ClusterIp

์˜ˆ์‹œ: frontend backend redis ๊ฐ๊ฐ ๋ผ๋ฆฌ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•œ IP 

https://kubernetes.io/ko/docs/concepts/services-networking/service/#%EB%8F%99%EA%B8%B0

# clusterIP for Backend

apiVersion: v1
kind: Service
metadata:
  name: back-end
spec:
  type: ClusterIP
  ports:
    - targetPort: 80
      port: 80
  selector: # pod-definition.yml์˜ lables.*์˜ ๋‚ด์šฉ ์ ๊ธฐ
    app: myapp
    type: backend

 

Load Balancer

HAProxy, Nginx๋“ฑ์„ ์„ค์น˜ํ•ด์„œ LoadBalancer๊ฐ€ /voting ์€ voting app์œผ๋กœ /dashboard๋Š” dashboard app์œผ๋กœ ๊ฐ€๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค 

 

AWS, GCP ๋“ฑ์ด ์ œ๊ณตํ•˜๋Š” LoadBalancer ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํƒ€์ž…์ด๋‹ค  

apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  type: LoadBalancer
  ports:
    - targetPort: 80
      port: 80
      nodePort: 30008

 

 

 

 

728x90

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ