반응형
들어가며: Service는 단순한 로드밸런서가 아니다
많은 초보자들은 Kubernetes Service를 단순히 로드밸런서 정도로 이해합니다.
하지만 Service는 Pod IP의 변화에도 불구하고 안정적이고 일관된 네트워크 접점을 제공하며, kube-proxy와 함께 작동하여 트래픽 라우팅을 관리하는 핵심 리소스입니다.
이번 글에서는 다음 내용을 다룹니다.
- Service의 주요 역할과 동작 방식
- kube-proxy와 Endpoints의 관계
- Service와 DNS 연동
- Service 동작 흐름 이해하기
목차 (Table of Contents)
- Service의 핵심 역할
- kube-proxy의 역할
- Endpoints와 Service 관계
- Service와 DNS 통합
- Service 동작 흐름
- 실습: 서비스와 엔드포인트 확인
- FAQ (Answer Engine Optimization)
- 핵심 요약
- 마무리
1. Service의 핵심 역할
- Pod IP 변화를 감춘 고정된 접근점 제공
- 로드밸런싱: 동일한 Selector를 가진 여러 Pod로 트래픽 분산
- Service Discovery 지원: 클러스터 내부에서 DNS 이름 기반 접근 가능
- 보안/정책 관리: 네트워크 정책(Network Policy)와 연계 가능
2. kube-proxy의 역할
kube-proxy는 Service의 트래픽을 실제 Pod로 라우팅하는 핵심 컴포넌트입니다.
- iptables 또는 IPVS 규칙을 자동 생성하여 트래픽을 적절한 Pod로 전달
- NodePort, ClusterIP 등 Service 타입에 따른 네트워크 규칙 관리
- 로드밸런싱 알고리즘 (Round Robin) 적용
3. Endpoints와 Service 관계
Service는 Selector를 사용해 Pod를 매칭하고, 해당 Pod의 IP와 포트를 모아 Endpoints 객체를 생성합니다.
kubectl get endpoints
my-service
가app=my-app
레이블을 가진 Pod를 찾으면 해당 Pod IP 목록이 Endpoints에 저장됩니다.
4. Service와 DNS 통합
쿠버네티스는 CoreDNS를 통해 Service 이름을 DNS 엔트리로 자동 등록합니다.
- 예:
my-service.default.svc.cluster.local
- ClusterIP 타입의 Service는 이 DNS를 통해 내부 접근 가능
- Pod 간 통신 시 IP 대신 Service 이름 기반 접근이 권장됨
5. Service 동작 흐름
- Service 객체 생성 (YAML 또는
kubectl expose
) - Selector에 맞는 Pod IP를 탐색
- Endpoints 객체 생성
- kube-proxy가 iptables/IPVS 규칙 적용
- DNS 엔트리 생성으로 안정적인 접근 제공
6. 실습: 서비스와 엔드포인트 확인
Service 생성
kubectl expose deployment my-app --port=80 --target-port=8080 --type=ClusterIP
Endpoints 확인
kubectl get endpoints my-app
결과 예:
NAME ENDPOINTS AGE
my-app 10.244.1.5:8080 1m
7. FAQ (Answer Engine Optimization)
Q1. Service 없이도 Pod 간 통신이 가능한가요?
A. 네, Pod IP로 가능하지만 IP가 변경될 수 있어 Service를 사용해야 안정적입니다.
Q2. kube-proxy가 없다면 Service는 동작할 수 있나요?
A. kube-proxy가 없으면 트래픽 라우팅이 불가능해집니다.
Q3. DNS 이름 없이 Service에 접근하려면?
A. kubectl get svc
로 ClusterIP를 확인하고 IP로 직접 접근할 수 있습니다.
8. 핵심 요약
개념 | 설명 |
---|---|
Service | Pod IP 변화를 감춘 고정 접근점 |
kube-proxy | 트래픽 라우팅 및 로드밸런싱 담당 |
Endpoints | Service와 Pod 간 연결 정보 |
CoreDNS | Service 이름을 DNS로 등록 |
9. 마무리
Service는 Kubernetes 네트워킹에서 트래픽 라우팅과 서비스 디스커버리를 책임지는 핵심 요소입니다.
반응형
'개발 창고 > Server' 카테고리의 다른 글
네트워킹 - Part3 정리 (3) | 2025.07.29 |
---|---|
네트워킹 - Part3: 서비스 타입 알아보기 (1) | 2025.07.28 |
네트워킹 - Part1: 서비스 리소스 살펴보기 (2) | 2025.07.26 |
Pod 살펴보기 - Part7: Pod의 건강상태는? (4) | 2025.07.25 |
Pod 살펴보기 - Part6: 컨테이너 한 개로는 부족해 (2) | 2025.07.24 |