[DevOps] 서비스(Service)

·2025년 2월 17일

쿠버네티스

목록 보기
6/7
post-thumbnail

서비스(Service)

✅ 서비스란?

  • 외부로부터 요청을 받는 역할, 외부로부터 들어오는 트래픽을 받아, 파드에 균등하게 분배해주는 로드밸런서 역할을 하는 기능
  • 파드 집합에서 실행중인 애플리케이션을 네트워크 서비스로 노출하는 추상화 방법
  • 실제 서비스에서는 포트포워딩이나 파드내로 직접 접근해서 애플리케이션에 요청을 보내지 않고 서비스(Service)를 통해 요청을 보낸다.

✅ 서비스(Service) 구조

✅ 서비스 종류

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

✅ 서비스를 활용해 백엔드 서버와 통신

이전에 백엔드 서버 3개를 디플로이먼트를 사용하여 띄웠다.

1. 매니페스트 파일 추가

  • spring-service.yaml
apiVersion: v1
kind: Service

# Service 기본 정보
metadata:
    name: spring-service # Service 이름

# Service 세부 정보
spec:
  type: NodePort # Service의 종류
  selector:
    app: backend-app # 실행되고 있는 Pod 중 'app: backend-app' 라벨을 가진 Pod와 연결
  ports:
    - protocol: TCP # TCP 프로토콜 사용
      port: 8080 # 쿠버네티스 내부에서 Service에 접속하기 위한 포트 번호
      targetPort: 8080 # 매핑하기 위한 Pod 포트 번호
      nodePort: 30000 # 외부에서 접근할 포트 (30000~32767 사이) - 기본 할당 포트 범위
      

2. 서비스 생성

kubectl apply -f spring-service.yaml

kubectl get service

3. 사용자 요청

  • localhost:30000 접속

💡 쿠버네티스에서는 서비스(Service), 디플로이먼트(Deployment), 파드(Pod)와 같은 리소스를 보고 오브젝트(Object)라고 부른다.

0개의 댓글