모래성 말고 철옹성

[1분 쿠버네티스] Service - ClusterIP, NodePort, LoadBalancer 본문

쿠버네티스

[1분 쿠버네티스] Service - ClusterIP, NodePort, LoadBalancer

JDhyeok 2025. 3. 26. 22:29

Service의 역할

쿠버네티스에서 Service파드(Pod)들이 안정적으로 네트워크를 통해 통신할 수 있도록 도와주는 리소스다. 각 파드는 고유한 IP를 가지지만, 동적으로 변경될 수 있기 때문에 직접 접근하는 것이 어렵다. 이를 해결하기 위해 Service가 존재하며, 특정 네트워크 정책을 설정하여 안정적인 접근을 가능하게 한다.

  • 네트워크 추상화: 파드가 변경되더라도 동일한 네트워크 주소를 통해 접근할 수 있도록 한다.
  • 로드 밸런싱: 여러 개의 파드로 트래픽을 분산시켜 부하를 조절한다.
  • 디스커버리: DNS와 연동하여 내부 또는 외부 서비스 탐색이 용이하도록 지원한다.

쿠버네티스에서 Service를 생성할 때, spec.type 필드를 통해 동작 방식을 정의할 수 있다. 주요한 세 가지 유형은 다음과 같다.

ClusterIP

  • 기본값으로 설정되는 Service 유형이다.
  • 클러스터 내부에서만 접근 가능하며, 외부에서 직접 접근할 수 없다.
  • 내부 애플리케이션 간 통신을 위해 사용된다.
apiVersion: v1
kind: Service
metadata:
  name: my-clusterip-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: ClusterIP

NodePort

  • 클러스터 외부에서도 접근 가능하도록 하는 방법이다.
  • 각 노드의 특정 포트를 개방하여 서비스에 접근할 수 있다.
  • 서비스에 할당된 포트(기본 범위: 30000-32767)를 통해 클러스터 외부에서 접근 가능하다.
  • 접근 방법: http://<노드 IP>:30080
apiVersion: v1
kind: Service
metadata:
  name: my-nodeport-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30080
  type: NodePort

LoadBalancer

  • 클라우드 환경에서 외부 Load Balancer를 자동으로 생성하여 트래픽을 관리한다.
  • AWS, GCP, Azure 등의 클라우드 제공업체에서 사용 가능하다.
  • 클러스터 외부에서 접근할 수 있으며, 자동으로 퍼블릭 IP가 할당된다.
  • 접근 방법: 클라우드 제공업체에서 할당한 외부 IP를 통해 접근 가능
apiVersion: v1
kind: Service
metadata:
  name: my-loadbalancer-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer

정리

유형 내부 접근 외부 접근 주요 사용처
ClusterIP O X 클러스터 내부 통신
NodePort O O (노드IP + 포트) 로컬 개발, 내부 서비스 노출
LoadBalancer O O (Public IP) 클라우드 환경에서 외부 서비스 제공

 

반응형
Comments