
쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 관리하는 강력한 오케스트레이션 도구다. 클러스터 내에서 실행되는 파드(Pod) 는 동적으로 배치되고, 이 과정에서 IP 주소가 변경될 수 있다. 이러한 변화 속에서도 안정적인 네트워크 접근을 제공하기 위해 서비스(Service) 개념이 필요하다.
쿠버네티스의 서비스는 동일한 Label을 가진 파드들을 묶어 단일 엔드포인트(IP 및 포트)를 제공하는 객체다. 이를 통해 특정 파드의 IP 변경과 무관하게 클라이언트가 안정적으로 접근할 수 있다.

서비스는 여러 개의 파드로 트래픽을 분산시켜 부하를 조절할 수 있다. 예를 들어, 웹 애플리케이션이 3개의 파드로 실행된다면, 서비스는 클라이언트 요청을 균등하게 배분할 수 있다.
쿠버네티스는 클러스터 DNS(CoreDNS) 를 통해 각 서비스에 대해 내부 도메인 이름을 자동으로 생성한다. 예를 들어, my-service 라는 서비스는 my-service.default.svc.cluster.local 과 같은 형태로 접근 가능하다.
쿠버네티스 서비스는 네트워크 노출 방식에 따라 다음과 같이 분류된다.
| 서비스 유형 | 설명 |
|---|---|
| ClusterIP | 클러스터 내부에서만 접근 가능 (기본값) |
| NodePort | 모든 노드에서 지정된 포트를 통해 외부 접근 가능 |
| LoadBalancer | 클라우드 제공자의 외부 로드밸런서를 이용한 서비스 |
| ExternalName | 클러스터 내부에서 외부 도메인으로 요청을 포워딩 |
| Headless | 단일 IP 없이 각 파드의 개별 IP로 직접 접근 |
쿠버네티스 서비스는 파드의 동적인 IP 변경 문제를 해결하고, 내부 및 외부 네트워크 접근을 효율적으로 관리하는 중요한 역할을 한다. 다음 글에서는 ClusterIP 실습을 통해 실제로 서비스를 생성하고 활용하는 방법을 다룰 예정이다.