DATA GROUND 로고DATA GROUND
Kubernetes

[Kubernetes] port와 targetPort의 차이

S.H. Yoo
마지막 업데이트: 2024-04-11

Kubernetes Service에서 port와 targetPort의 역할과 차이점을 예제 YAML과 함께 정리합니다.

작성일: 2024-04-11작성자: S.H. Yoo마지막 업데이트: 2024-04-11

port와 targetPort란?

porttargetPort
Kubernetes Service 리소스에서 사용되는 설정 값으로,
Service와 Pod를 네트워크 레벨에서 연결하는 역할을 합니다.


port

  • Service가 외부 또는 내부에 노출되는 포트
  • 다른 Service 또는 Pod가 접근할 때 사용하는 포트
  • Service 단에서 정의되는 포트

즉, 클러스터 내부에서
ServiceIP:port 형태로 접근하게 됩니다.


targetPort

  • 실제 Pod 내부 컨테이너가 사용하는 포트
  • Service로 유입된 트래픽이 최종적으로 전달되는 포트
  • 컨테이너 애플리케이션이 리스닝 중인 포트여야 함

Service의 port로 들어온 트래픽은
Pod의 targetPort로 전달됩니다.


예시

apiVersion: v1
kind: Service
metadata:
  name: example-service
spec:
  type: ClusterIP
  selector:
    app: example-app
  ports:
    - protocol: TCP
      port: 80          # Service가 노출되는 포트
      targetPort: 8080  # Pod 내부 컨테이너 포트

동작 설명

  • Service의 port80
  • 클러스터 내부에서 example-service:80으로 접근
  • 들어온 트래픽은 Pod의 targetPort8080으로 전달
  • Pod 내부 애플리케이션은 반드시 8080 포트에서 실행 중이어야 함

주의사항

  • 여러 개의 Service를 운영하는 경우
    • targetPort는 동일할 수 있음
    • port는 각 Service마다 달라야 함
  • porttargetPort숫자뿐 아니라 이름(name)으로도 지정 가능
  • Service와 Pod의 label/selector가 일치하지 않으면 트래픽이 전달되지 않음

마무리하며

간단히 정리하면 다음과 같습니다.

  • port → Service의 포트
  • targetPort → Pod(컨테이너)의 포트

이 개념을 정확히 이해하면
Kubernetes Service 네트워크 설정에서 발생하는
대부분의 혼란을 피할 수 있습니다.

마지막 업데이트: 2024-04-11

당신이 관심있을 만한 글