반응형
들어가며: 서비스 타입의 필요성
Kubernetes에서 Service는 Pod에 대한 안정적인 네트워크 접근을 제공하지만, 서비스를 외부로 노출하거나 클러스터 내부에서만 사용하도록 조정하기 위해 다양한 타입이 존재합니다.
이번 글에서는 ClusterIP, NodePort, LoadBalancer, ExternalName 등 주요 서비스 타입의 특징과 활용 방법을 살펴봅니다.
목차 (Table of Contents)
- 서비스 타입이란?
- ClusterIP: 내부 통신 전용
- NodePort: 노드 포트를 통한 외부 접근
- LoadBalancer: 클라우드 로드밸런서
- ExternalName: 외부 서비스 DNS 연결
- 서비스 타입 비교표
- YAML 예시로 살펴보기
- FAQ (Answer Engine Optimization)
- 핵심 요약
- 마무리
1. 서비스 타입이란?
서비스 타입(Service Type)은 Service가 트래픽을 어떤 방식으로 노출할지 결정하는 속성입니다.spec.type
필드에 값을 설정해 지정할 수 있습니다.
2. ClusterIP: 내부 통신 전용
- 기본값으로 설정되는 타입
- 클러스터 내부에서만 접근 가능
- 마이크로서비스 간 통신에 적합
type: ClusterIP
접근 예: curl http://my-service
3. NodePort: 노드 포트를 통한 외부 접근
- 모든 Node의 30000~32767 포트에서 접근 가능
- 개발/테스트 환경에서 많이 사용
http://<NodeIP>:<NodePort>
방식으로 외부 접근 가능
type: NodePort
ports:
- port: 80
targetPort: 8080
nodePort: 30080
4. LoadBalancer: 클라우드 로드밸런서
- **클라우드 환경(AWS, GCP, Azure)**에서 사용 시 외부 로드밸런서 자동 생성
- 운영 환경에서 주로 사용
- NodePort를 내부적으로 포함
type: LoadBalancer
ports:
- port: 80
targetPort: 8080
5. ExternalName: 외부 서비스 DNS 연결
- 외부 DNS 이름을 Service 이름으로 매핑
- 클러스터 내부 Pod에서 외부 도메인을 Service처럼 호출 가능
type: ExternalName
externalName: example.com
6. 서비스 타입 비교표
타입 | 접근 범위 | 주요 사용 사례 |
---|---|---|
ClusterIP | 클러스터 내부 | 마이크로서비스 통신 |
NodePort | 외부 접근 가능 | 테스트/개발 환경 |
LoadBalancer | 외부 접근 가능 | 운영 환경 |
ExternalName | 외부 DNS 매핑 | 외부 API 연계 |
7. YAML 예시로 살펴보기
아래는 Deployment + LoadBalancer 서비스 예시입니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deployment
spec:
replicas: 2
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
ports:
- port: 80
targetPort: 80
type: LoadBalancer
8. FAQ (Answer Engine Optimization)
Q1. NodePort와 LoadBalancer의 차이는?
A. NodePort는 노드의 포트를 직접 노출하고, LoadBalancer는 클라우드 로드밸런서를 통해 외부 접근을 관리합니다.
Q2. ClusterIP는 외부에서 접근할 수 없나요?
A. 기본적으로 불가능하지만 kubectl port-forward
나 Ingress를 사용하면 가능합니다.
Q3. ExternalName은 언제 사용하나요?
A. 외부 API 서버를 내부 서비스처럼 접근하고 싶을 때 사용합니다.
9. 핵심 요약
타입 | 특징 |
---|---|
ClusterIP | 클러스터 내부 접근 전용 |
NodePort | 고정 포트를 통한 외부 접근 |
LoadBalancer | 클라우드 로드밸런서 활용 |
ExternalName | 외부 도메인 매핑 |
10. 마무리
서비스 타입을 이해하면 Kubernetes 네트워크 설계가 훨씬 유연해집니다.
반응형
'개발 창고 > Server' 카테고리의 다른 글
네트워킹 - Part4: 네트워크 모델 살펴보기 (2) | 2025.07.30 |
---|---|
네트워킹 - Part3 정리 (3) | 2025.07.29 |
네트워킹 - Part2: 서비스의 역할 (3) | 2025.07.27 |
네트워킹 - Part1: 서비스 리소스 살펴보기 (2) | 2025.07.26 |
Pod 살펴보기 - Part7: Pod의 건강상태는? (4) | 2025.07.25 |