Pod는 언제든지 죽고 새로 만들어질 수 있다.
그렇다면 Pod의 IP는 고정일까? → 아니다.
이 문제를 해결하기 위해 등장한 리소스가 바로 Service다.
Service는 다음을 해결한다:
Service는
| 타입 | 외부 접근 가능? | 사용 목적 |
| ClusterIP | ❌ | 클러스터 내부 통신 |
| NodePort | ⭕ | 간단한 외부 노출 |
| LoadBalancer | ⭕ | 실제 운영 환경 |
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: ClusterIP
selector:
app: my-app
ports:
\- port: 80
targetPort: 8080
Pod → Service(ClusterIP) → Pod
모든 노드의 특정 포트를 열어 외부 접근 가능하게 만든다.
spec:
type: NodePort
ports:
\- port: 80
targetPort: 8080
nodePort: 30007
Client → NodeIP:30007 → Service → Pod
spec:
type: LoadBalancer
ports:
\- port: 80
targetPort: 8080
예:
Client → External LoadBalancer → Node → Service → Pod
| 구분 | ClusterIP | NodePort | LoadBalancer |
| 외부 접근 | ❌ | ⭕ | ⭕ |
| 사용 환경 | 내부 통신 | 테스트 | 운영 |
| 외부 IP 자동 생성 | ❌ | ❌ | ⭕ |
| 보안성 | 높음 | 낮음 | 높음 |
실제 운영 환경에서는 보통 이렇게 구성한다:
Client
↓
LoadBalancer
↓
Ingress Controller
↓
Service (ClusterIP)
↓
Pods
👉 대부분의 경우 LoadBalancer + Ingress + ClusterIP 조합을 사용한다.
spec:
clusterIP: None
| Kubernetes 핵심 개념 정리 - Container, Pod, Deployment, StatefulSet (0) | 2026.02.22 |
|---|---|
| Kubernetes - Update and Rollback (1) | 2024.01.03 |
| Kubernetes - Deployments (1) | 2023.12.26 |
| Kubernetes - Replication Controllers and ReplicaSets (1) | 2023.12.26 |