Kubernetes Service 완벽 가이드! ClusterIP, NodePort, LoadBalancer 구조 이해하기

Kubernetes에서 Application을 실행하면 Pod가 생성됩니다.

하지만 Pod는 기본적으로 고정된 IP를 가지고 있지 않으며, 재시작이나 업데이트 과정에서 IP가 변경될 수 있습니다.

이러한 문제를 해결하기 위해 Kubernetes에서는 Service라는 Resource를 사용합니다.

Service는 여러 Pod를 안정적으로 연결하고 외부 또는 내부에서 Application에 접근할 수 있도록 Network 연결을 관리합니다.

구성 요소역할
ServicePod 연결 및 Network 제공
PodApplication 실행
LabelPod 선택 기준
Endpoint실제 연결 대상 관리

Kubernetes Service를 이해하면 Application 접근 구조와 Network 동작 방식을 이해할 수 있습니다.

Kubernetes Service란 무엇인가?

Kubernetes Service는 여러 Pod에 안정적인 Network 접근 경로를 제공하는 Resource입니다.

Pod는 생성과 삭제가 반복되면서 IP 주소가 변경될 수 있습니다.

Service는 이러한 Pod의 변경을 추적하고 고정된 접근 주소를 제공합니다.

예:

상황문제
Pod 생성새로운 IP 할당
Pod 삭제기존 IP 제거
Pod 재생성다른 IP 사용

Service는 이러한 변화와 관계없이 동일한 주소로 Application에 접근할 수 있도록 합니다.

Kubernetes Service 동작 구조

Service는 Label Selector를 이용하여 연결할 Pod를 선택합니다.

구조:

구성 요소역할
Service접근 주소 제공
Selector연결할 Pod 선택
Endpoint실제 Pod IP 관리
PodApplication 실행

동작 과정:

사용자 요청

Service 접근

Endpoint 확인

Pod로 Traffic 전달

Service는 Kubernetes Network 구조에서 중요한 연결 계층 역할을 합니다.

Kubernetes Service 종류

Kubernetes는 목적에 따라 여러 종류의 Service를 제공합니다.

Service 종류용도
ClusterIPCluster 내부 통신
NodePort외부 접근 허용
LoadBalancer외부 Load Balancing
ExternalName외부 서비스 연결

일반적인 운영 환경에서는 ClusterIP, NodePort, LoadBalancer를 가장 많이 사용합니다.

Kubernetes ClusterIP란?

ClusterIP는 Kubernetes Service의 기본 유형입니다.

Cluster 내부에서만 접근 가능한 가상 IP를 제공합니다.

특징:

항목설명
접근 범위Cluster 내부
외부 접근불가능
주요 용도Internal Service

사용 예:

서비스용도
Backend APIFrontend 내부 통신
DatabaseApplication 연결

ClusterIP는 Microservice Architecture에서 내부 서비스 연결에 많이 사용됩니다.

Kubernetes NodePort란?

NodePort는 외부 사용자가 Worker Node의 특정 Port를 통해 Service에 접근할 수 있도록 합니다.

구조:

구성 요소역할
External User외부 요청
NodePort접근 Port 제공
ServiceTraffic 전달
PodApplication 실행

특징:

항목설명
접근 범위외부 접근 가능
Port 범위30000~32767
사용 목적테스트 및 간단한 외부 연결

NodePort는 개발 환경이나 간단한 서비스 공개에 적합합니다.

Kubernetes LoadBalancer란?

LoadBalancer는 Cloud 환경에서 외부 Traffic을 Kubernetes Service로 전달하는 방식입니다.

주로 Production 환경에서 사용됩니다.

구조:

구성 요소역할
External Load Balancer외부 요청 분산
ServiceTraffic 전달
PodApplication 실행

장점:

장점설명
외부 접근 가능Public 서비스 제공
Traffic 분산여러 Pod 연결
Cloud 연동자동 Load Balancer 생성

AWS, Azure, Google Cloud 같은 Cloud 환경에서 많이 활용됩니다.

Kubernetes ExternalName이란?

ExternalName은 Kubernetes Service를 외부 서비스와 연결하는 방식입니다.

예:

대상연결
외부 DatabaseService 이름으로 접근
외부 APIKubernetes 내부에서 사용

ExternalName은 별도의 Proxy 없이 DNS 기반 연결을 제공합니다.

Kubernetes Service와 Label 관계

Service는 Label을 기준으로 Pod를 선택합니다.

예:

Pod 설정:

PodLabel
Pod 1app=web
Pod 2app=web
Pod 3app=api

Service 설정:

Selector연결 대상
app=webPod 1, Pod 2
app=apiPod 3

이 구조를 통해 원하는 Pod 그룹에 Traffic을 전달할 수 있습니다.

Kubernetes Endpoint란?

Endpoint는 Service가 실제로 연결하는 Pod 정보를 관리합니다.

구성:

구성 요소역할
Service접근 주소 제공
EndpointPod IP 저장
Pod실제 Application 실행

Pod가 추가되거나 삭제되면 Endpoint 정보도 자동으로 변경됩니다.

Kubernetes Service Network 흐름

사용자가 Application에 접근하는 과정:

단계동작
1단계사용자가 요청 전달
2단계Service 접근
3단계Endpoint 확인
4단계Pod로 Traffic 전달

이 구조를 통해 Kubernetes는 여러 Pod 환경에서도 안정적인 서비스를 제공합니다.

Kubernetes Service 운영 장점

장점설명
고정 접근 주소Pod 변경과 관계없이 접근 가능
Traffic 관리여러 Pod 연결 가능
확장 지원Replica 증가 대응
서비스 분리Microservice 구성 가능

Service는 Kubernetes Application 운영에서 필수적인 Network 구성 요소입니다.

자주 묻는 질문

Pod IP가 변경되는데 어떻게 계속 접속할 수 있나요?

Kubernetes Service가 고정된 접근 주소를 제공하고 변경된 Pod 정보를 자동으로 관리합니다.

ClusterIP와 NodePort의 차이는 무엇인가요?

ClusterIP는 Cluster 내부 통신용이고 NodePort는 외부 사용자가 접근할 수 있도록 하는 방식입니다.

Production 환경에서는 어떤 Service를 많이 사용하나요?

일반적으로 LoadBalancer와 Ingress를 함께 사용하여 외부 Traffic을 관리합니다.

마무리

Kubernetes Service는 Pod와 사용자 사이를 연결하는 Network 핵심 기능입니다.

구성 요소역할
ClusterIP내부 서비스 연결
NodePort외부 접근 제공
LoadBalancer외부 Traffic 관리
EndpointPod 연결 정보 관리

Service를 이해하면 Kubernetes Application이 어떻게 외부와 통신하고 여러 Pod를 안정적으로 관리하는지 알 수 있습니다.

다음 글에서는 Kubernetes 외부 접근과 Traffic 관리를 담당하는 Kubernetes Ingress 완벽 가이드! HTTP Routing과 Load Balancing 구조 이해하기를 알아보겠습니다.

댓글 남기기