Kubernetes [ Service ]

2025. 5. 26. 02:35kubernetes

Service : 서비스는 로드밸런서와 요청을 받는 역활을 한다.

appVersion: v1
kind: Service

metadata:
  name: test-service # Service의 이름

spec:              # Service의 원하는 상태를 정의
  type: NodePort   # Service의 타입 (NodePort는 클러스터 외부에서 접근 가능하게 함)
  selector:        # 이 Service가 연결할 Pod를 선택하는 레이블 셀렉터
    app: test-app  # 'app: test-app' 레이블을 가진 Pod를 선택

  ports:           # Service가 노출할 포트 정의 목록
    - protocol: TCP     # 사용할 프로토콜 (TCP 또는 UDP)
      # Pod에서 내부에서 Service를 접근하는 포트 (클러스터 내부에서 Service IP로 접근 시 사용)
      port: 3000        # Service가 노출할 클러스터 내부 포트 (Service IP:Port)
      # Service에서 Pod를 접근하는 포트 (Pod 내부 컨테이너의 포트)
      targetPort: 3000  # Service가 연결할 백엔드 Pod의 컨테이너 포트
      # 외부에서 접근하는 포트 (노드 IP:NodePort)
      nodePort: 30000   # 클러스터 외부에서 노드 IP를 통해 접근할 수 있는 포트

 

port : Pod 내부에 열려있는 포트 번호

targetPort : deployment에서 설정한 포트 번호

nodePort : 외부에서 접근하는 포트


port

targetPort는 deployment에서 리스닝할 포트번호를 열어놨기 때문에 포트번호를 맞춰서 설정해야 한다.


spec의 type값

NodePort : 내부에서 해당서비스를 접속하기 위한 포트를 열고 외부에서 접속하도록함
ClusterIP: 쿠버네티스 내부에서만 통신 할수있는 IP주소 부여 외부에서는 요청 할수없음
LoadBalancer: 외부 로드밸런서를 활용하여 외부에서 접근하도록 연결


설정, 이미지 업데이트 설정 적용 명령어

kubectl apply -f [Service 파일]

728x90
반응형

'kubernetes' 카테고리의 다른 글

Kubernetes 정리  (1) 2025.05.26
Kubernetes [ Deployment ]  (0) 2025.05.25
Kubernetes [ Pod ]  (0) 2025.05.25