Data Engineering/Kubernetes

Kubernetes NodePort란

jjaehyeok 2026. 4. 30. 15:58

1. 문제 / 필요성

Kubernetes에서 Pod는 내부 네트워크에서만 동작한다.

  • Pod은 Cluster 내부 IP를 사용
  • 외부에서는 직접 접근 불가능
  • Pod IP는 계속 변경됨

외부에서 접근할 수 있는 “고정된 진입점”이 필요하다


2. NodePort란 무엇인가

NodePort는 Kubernetes Service 타입 중 하나로 클러스터 외부에서 접근할 수 있도록 Node의 포트를 열어주는 방식이다.

Node의 IP + 특정 포트를 통해 Pod에 접근 가능하게 만든다


3. 기본 구조

 
 
 
[출처]: https://kim-dragon.tistory.com/52

NodePort의 흐름은 다음과 같다.

Client → NodeIP:NodePort → Service → Pod
 
  • Client → Node의 IP로 접근
  • NodePort → 열린 포트
  • Service → Pod으로 라우팅

4. 내부 동작 구조

NodePort는 단순히 포트를 여는 것이 아니다.

동작 흐름:

  1. Service 생성 (type: NodePort)
  2. API Server에 정보 저장
  3. kube-proxy가 이를 감지
  4. Node에 포트 개방 (iptables/IPVS)
  5. 요청이 들어오면 Pod으로 전달

NodePort는 “Node 레벨에서 트래픽을 Pod으로 전달하는 구조”


5. 포트 구조 이해

NodePort에는 3개의 포트가 존재한다.

구분  의미
targetPort Pod 내부 컨테이너 포트
port Service 내부 포트
nodePort 외부에서 접근하는 포트

예시

apiVersion: v1
kind: Service
metadata:
  name: nodeport-test
spec:
  type: NodePort
  selector:
    app: my-app
  ports:
    - port: 80
      targetPort: 8080
      nodePort: 30080

흐름

Client → NodeIP:30080 → Service:80 → Pod:8080

6. 실제 요청 흐름

NodePort 요청은 다음 순서로 처리된다.

  1. Client가 NodeIP:NodePort로 요청
  2. kube-proxy가 Service 규칙 확인
  3. 연결된 Pod 목록 확인
  4. 하나의 Pod으로 전달

 특징

  • Pod이 여러 개여도 자동 분산
  • Pod이 바뀌어도 영향 없음

7. NodePort 범위

기본적으로 NodePort는 특정 범위에서 할당된다.

30000 ~ 32767
 
  • 직접 지정 가능
  • 지정하지 않으면 자동 할당

8. 장점

  • 설정이 단순함
  • 외부 접근 가능
  • 별도 LoadBalancer 없이 사용 가능

9. NodePort  한계

NodePort는 테스트나 간단한 환경에서는 유용하지만 실제 운영에서는 한계가 있다.

① Node IP를 직접 알아야 함

  • 모든 Node IP 관리 필요
  • 환경이 바뀌면 접근 방식도 변경됨

② 포트 관리 필요

  • 30000번대 포트 사용
  • 서비스 많아지면 충돌 가능

③ 로드밸런싱 한계

  • 기본적인 분산만 제공
  • 외부 트래픽 분산 기능 부족

그래서 실제 운영에서는

  • LoadBalancer
  • Ingress

를 함께 사용한다.


10. 언제 사용하는가

NodePort는 다음 상황에서 주로 사용된다.

  • 로컬 환경 테스트
  • 간단한 개발 환경
  • Kubernetes 내부 구조 학습

11. 구조 전체 연결

이전 글과 연결하면

  • Deployment → 상태 유지
  • Pod → 실행
  • Service → 연결
  • NodePort → 외부 연결

NodePort는 “클러스터 외부에서 내부 Service로 들어오는 가장 단순한 방식”


12. 핵심 정리

  • NodePort는 Node의 포트를 통해 외부 접근 제공
  • NodeIP:Port로 접근 가능
  • kube-proxy가 Pod으로 라우팅
  • 구조는 단순하지만 운영 환경에서는 한계 존재