개발 창고/Server

네트워킹 - Part2: 서비스의 역할

Royzero 2025. 7. 27. 22:00
반응형

들어가며: Service는 단순한 로드밸런서가 아니다

많은 초보자들은 Kubernetes Service를 단순히 로드밸런서 정도로 이해합니다.
하지만 Service는 Pod IP의 변화에도 불구하고 안정적이고 일관된 네트워크 접점을 제공하며, kube-proxy와 함께 작동하여 트래픽 라우팅을 관리하는 핵심 리소스입니다.

이번 글에서는 다음 내용을 다룹니다.

  • Service의 주요 역할과 동작 방식
  • kube-proxy와 Endpoints의 관계
  • Service와 DNS 연동
  • Service 동작 흐름 이해하기

목차 (Table of Contents)

  1. Service의 핵심 역할
  2. kube-proxy의 역할
  3. Endpoints와 Service 관계
  4. Service와 DNS 통합
  5. Service 동작 흐름
  6. 실습: 서비스와 엔드포인트 확인
  7. FAQ (Answer Engine Optimization)
  8. 핵심 요약
  9. 마무리

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-serviceapp=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 동작 흐름

  1. Service 객체 생성 (YAML 또는 kubectl expose)
  2. Selector에 맞는 Pod IP를 탐색
  3. Endpoints 객체 생성
  4. kube-proxy가 iptables/IPVS 규칙 적용
  5. 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 네트워킹에서 트래픽 라우팅과 서비스 디스커버리를 책임지는 핵심 요소입니다.

반응형