| 구분 | Pod Networking | Service Networking |
|---|---|---|
| 대상 | Pod ↔ Pod | Client ↔ Service (Pod 묶음) |
| 연결 방식 | Pod IP 직접 연결 | Service IP를 통한 프록시 연결 |
| 관리 주체 | CNI (Weave, Calico 등) | kube-proxy |
| 목적 | Pod 간 통신 | 안정적이고 동적인 접근 제공 |
--service-cluster-ip-range 플래그로 정의
예) 10.96.0.0/12
Pod CIDR과 절대 겹치면 안 됨
예) Pod CIDR 10.244.0.0/16 ↔ Service CIDR 10.96.0.0/12
| Type | 설명 | 접근 범위 |
|---|---|---|
| ClusterIP (기본) | 클러스터 내부 IP 할당 | 클러스터 내부 전용 |
| NodePort | 각 노드의 특정 포트 오픈 | 클러스터 외부 가능 |
| LoadBalancer | 클라우드 로드밸런서 연동 | 외부 접근 |
| ExternalName | 클러스터 외부 DNS 이름 매핑 | 외부 접근 |
| Mode | 특징 | 성능 |
|---|---|---|
| iptables (기본) | DNAT 룰 기반 | 중간 |
| ipvs | 커널 레벨 L4 로드밸런싱 | 가장 빠름 |
| userspace | 레거시 방식 | 느림 |
→ 대부분의 최신 클러스터는 ipvs 사용 권장
10.244.1.210.103.132.104 (DB 서비스)-A KUBE-SERVICES -d 10.103.132.104/32 \
-p tcp -m tcp --dport 3306 \
-j KUBE-SVC-XXXXX
-A KUBE-SVC-XXXXX \
-j KUBE-SEP-YYYYY
-A KUBE-SEP-YYYYY \
-d 10.244.1.2/32 \
-j DNAT --to-destination 10.244.1.2:3306
✔️ 해석:
→ 10.103.132.104:3306 로 들어오는 트래픽을 → 10.244.1.2:3306으로 포워딩
30000~32767)를 엶iptables 예시:
-A KUBE-NODEPORTS -p tcp -m tcp --dport 30080 \
-j KUBE-SVC-XXXXX
ps -ef | grep kube-apiserver | grep service-cluster-ip-range
→ 출력 예시:
--service-cluster-ip-range=10.96.0.0/12
Service IP로 Ping 안 됨 → 정상
(iptables는 L4 레벨에서만 동작)
NodePort 포트 열려있지 않음 → kube-proxy 상태 확인
IP 겹침 → Pod CIDR ↔ Service CIDR 충돌 여부 점검
서비스 접속 불가 →
kubectl get endpoints로 Pod가 정상 연결되었는지 확인