본문 바로가기

리눅스

쿠버네티스 서비스 유형

반응형

쿠버네티스 서비스 유형(Kubernetes Service Types)

Kubernetes에서 서비스 유형은 클러스터 내의 애플리케이션을 외부 또는 다른 파드와 연결하는 방법을 정의합니다. 서비스는 파드의 IP 주소가 동적으로 변경될 수 있기 때문에 안정적인 네트워크 접점을 제공하는 역할을 합니다.

서비스 유형 비교

서비스 유형 외부 접근 가능 로드 밸런싱 사용 사례
Cluster IP 아니요 클러스터 내부 통신
NodePort 외부에서 간단히 접근 가능
LoadBalancer 클라우드 환경에서 외부 트래픽을 분배
Ingress 여러 서비스에 대한 경로 기반 라우팅
Port Forwarding 아니요 로컬 개발 환경에서 파드에 접근
External IP 아니요 특정 노드에 외부 IP 할당
ExternalName 아니요 아니요 외부 서비스를 클러스터 내에서 일관되게 접근
Headless Service 아니요 아니요 파드의 직접 접근 필요

1. ClusterIP

기능 : 클러스터 내부에서만 접근 가능한 가상 IP를 제공합니다.

사용 사례 : 클러스터 내의 파드들이 서로 통신할 때 사용합니다.

장점

  • 간단한 설정으로 클러스터 내에서 안정적인 통신 가능.
  • 기본값으로 자동 설정되어 특별한 구성 필요 없음.

단점

  • 외부에서는 접근할 수 없으며 오직 클러스터 내부에서만 접근 가능.

2. NodePort

기능 : 각 노드에서 지정된 포트를 열어 외부에서 클러스터 내부의 서비스에 접근할 수 있게 합니다.

사용 사례 : 클러스터 외부에서 서비스에 접근해야 하지만 간단한 설정이 필요할 때 사용합니다.

장점

  • 외부에서 클러스터의 노드 IP와 포트를 통해 접근 가능.
  • 클러스터 외부에서 쉽게 테스트 가능.

단점

  • 노드의 IP를 알아야 하며 노드가 많을 경우 관리가 번거로울 수 있음.
  • 특정 포트 범위(30000-32767) 내에서만 사용할 수 있음.

3. LoadBalancer

기능 : 클라우드 환경에서 외부 로드 밸런서를 생성하여 외부에서 서비스에 접근할 수 있게 합니다.

사용 사례 : 클라우드 환경에서 외부 트래픽을 클러스터의 서비스로 라우팅할 때 사용합니다.

장점

  • 외부에서의 접근을 위한 공인 IP와 로드 밸런싱을 자동으로 제공.
  • 클라우드 제공자가 관리하므로 설정이 간편.

단점

  • 클라우드 환경에서만 사용할 수 있음.
  • 클라우드 서비스 비용이 추가될 수 있음.

4. Ingress

기능 : HTTP 및 HTTPS 경로 기반의 라우팅을 제공하여 도메인 이름을 통해 여러 서비스에 접근할 수 있게 합니다.

사용 사례 : 여러 서비스에 대한 외부 접근을 관리하고, 경로 기반 라우팅을 통해 트래픽을 분배할 때 사용합니다.

장점

  • 하나의 공인 IP로 여러 서비스에 접근 가능.
  • TLS/SSL 인증서 관리와 경로 기반 라우팅을 지원.

단점

  • 설정이 복잡하며 Ingress Controller를 설치해야 함.
  • 모든 클라우드 환경에서 완전히 지원되지 않을 수 있음.
728x90

5. Port Forwarding

기능 : 로컬 컴퓨터에서 Kubernetes 클러스터 내의 특정 파드에 직접 접근할 수 있게 포트를 포워딩합니다.

사용 사례 : 로컬 개발 환경에서 클러스터 내 파드의 특정 포트에 접근해야 할 때 사용합니다.

장점

  • 간단한 명령으로 로컬에서 파드에 직접 접근 가능.
  • 클러스터 내부 네트워크에 대한 자세한 지식 없이도 사용할 수 있음.

단점

  • 일시적이며 로컬 머신과 클러스터 간 연결이 필요함.
  • 스케일링 및 프로덕션 환경에는 적합하지 않음.

6. External IP

기능 : 특정 노드에 외부 IP를 직접 할당하여 외부 트래픽을 받아들이고, 이를 서비스로 라우팅합니다.

사용 사례 : 물리적 서버 또는 특정 외부 IP가 필요한 상황에서 사용합니다.

장점

  • 특정 노드의 IP 주소를 외부에 직접 노출 가능.
  • 노드 수준에서의 외부 접근이 필요할 때 유용.

단점

  • 특정 노드에만 적용되며 노드의 고가용성 문제가 발생할 수 있음.
  • 클라우드 환경에 따라 지원 여부가 다를 수 있음.

7. ExternalName

기능: 외부에 있는 서비스를 Kubernetes 서비스로 매핑합니다. 주로 DNS CNAME 레코드를 통해 외부 서비스를 참조합니다.

사용 사례 : 클러스터 내부에서 외부 서비스(예: 데이터베이스, API 등)에 접근할 때 사용합니다.

장점

  • 클러스터 내부에서 외부 서비스를 일관되게 접근 가능.
  • 설정이 간단하며 외부 서비스의 DNS 이름만 필요함.

단점

  • 외부 서비스에 대한 DNS 이름 변경 시 재배포 필요.
  • 트래픽은 외부 DNS를 통해 라우팅되므로 성능에 영향을 줄 수 있음.

8. Headless Service

기능 : 클러스터IP 없이 DNS 레코드를 통해 개별 파드에 직접 접근할 수 있도록 합니다.

사용 사례 : StatefulSet 등에서 개별 파드에 직접 접근이 필요할 때 사용합니다.

장점

  • 개별 파드의 DNS 이름을 통해 파드에 직접 접근 가능.
  • 로드 밸런싱 없이 클라이언트가 직접 파드를 제어할 수 있음.

단점

  • 클라이언트가 로드 밸런싱 및 파드 선택을 직접 처리해야 함.
  • 클러스터 내부에서만 사용 가능.

 

참고URL

- The Baeldung : ClusterIP, NodePort, and LoadBalancer: Kubernetes Service Types

- Undefined - Blog by Eunsu Kim : 쿠버네티스 서비스(Service) 개념 정리

- Kubernetes Documentation : 서비스, 로드밸런싱, 네트워킹

- Kubernetes Documentation : 서비스와 애플리케이션 연결하기

- Kubernetes Documentation : 외부 로드 밸런서 생성하기

- Sysdig : Kubernetes Services: ClusterIP, Nodeport and LoadBalancer

 

728x90
반응형