Kubernetes에서 Application을 실행하면 Pod가 생성됩니다.
하지만 Pod는 기본적으로 고정된 IP를 가지고 있지 않으며, 재시작이나 업데이트 과정에서 IP가 변경될 수 있습니다.
이러한 문제를 해결하기 위해 Kubernetes에서는 Service라는 Resource를 사용합니다.
Service는 여러 Pod를 안정적으로 연결하고 외부 또는 내부에서 Application에 접근할 수 있도록 Network 연결을 관리합니다.
| 구성 요소 | 역할 |
|---|---|
| Service | Pod 연결 및 Network 제공 |
| Pod | Application 실행 |
| Label | Pod 선택 기준 |
| 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 관리 |
| Pod | Application 실행 |
동작 과정:
사용자 요청
↓
Service 접근
↓
Endpoint 확인
↓
Pod로 Traffic 전달
Service는 Kubernetes Network 구조에서 중요한 연결 계층 역할을 합니다.
Kubernetes Service 종류
Kubernetes는 목적에 따라 여러 종류의 Service를 제공합니다.
| Service 종류 | 용도 |
|---|---|
| ClusterIP | Cluster 내부 통신 |
| NodePort | 외부 접근 허용 |
| LoadBalancer | 외부 Load Balancing |
| ExternalName | 외부 서비스 연결 |
일반적인 운영 환경에서는 ClusterIP, NodePort, LoadBalancer를 가장 많이 사용합니다.
Kubernetes ClusterIP란?
ClusterIP는 Kubernetes Service의 기본 유형입니다.
Cluster 내부에서만 접근 가능한 가상 IP를 제공합니다.
특징:
| 항목 | 설명 |
|---|---|
| 접근 범위 | Cluster 내부 |
| 외부 접근 | 불가능 |
| 주요 용도 | Internal Service |
사용 예:
| 서비스 | 용도 |
|---|---|
| Backend API | Frontend 내부 통신 |
| Database | Application 연결 |
ClusterIP는 Microservice Architecture에서 내부 서비스 연결에 많이 사용됩니다.
Kubernetes NodePort란?
NodePort는 외부 사용자가 Worker Node의 특정 Port를 통해 Service에 접근할 수 있도록 합니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| External User | 외부 요청 |
| NodePort | 접근 Port 제공 |
| Service | Traffic 전달 |
| Pod | Application 실행 |
특징:
| 항목 | 설명 |
|---|---|
| 접근 범위 | 외부 접근 가능 |
| Port 범위 | 30000~32767 |
| 사용 목적 | 테스트 및 간단한 외부 연결 |
NodePort는 개발 환경이나 간단한 서비스 공개에 적합합니다.
Kubernetes LoadBalancer란?
LoadBalancer는 Cloud 환경에서 외부 Traffic을 Kubernetes Service로 전달하는 방식입니다.
주로 Production 환경에서 사용됩니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| External Load Balancer | 외부 요청 분산 |
| Service | Traffic 전달 |
| Pod | Application 실행 |
장점:
| 장점 | 설명 |
|---|---|
| 외부 접근 가능 | Public 서비스 제공 |
| Traffic 분산 | 여러 Pod 연결 |
| Cloud 연동 | 자동 Load Balancer 생성 |
AWS, Azure, Google Cloud 같은 Cloud 환경에서 많이 활용됩니다.
Kubernetes ExternalName이란?
ExternalName은 Kubernetes Service를 외부 서비스와 연결하는 방식입니다.
예:
| 대상 | 연결 |
|---|---|
| 외부 Database | Service 이름으로 접근 |
| 외부 API | Kubernetes 내부에서 사용 |
ExternalName은 별도의 Proxy 없이 DNS 기반 연결을 제공합니다.
Kubernetes Service와 Label 관계
Service는 Label을 기준으로 Pod를 선택합니다.
예:
Pod 설정:
| Pod | Label |
|---|---|
| Pod 1 | app=web |
| Pod 2 | app=web |
| Pod 3 | app=api |
Service 설정:
| Selector | 연결 대상 |
|---|---|
| app=web | Pod 1, Pod 2 |
| app=api | Pod 3 |
이 구조를 통해 원하는 Pod 그룹에 Traffic을 전달할 수 있습니다.
Kubernetes Endpoint란?
Endpoint는 Service가 실제로 연결하는 Pod 정보를 관리합니다.
구성:
| 구성 요소 | 역할 |
|---|---|
| Service | 접근 주소 제공 |
| Endpoint | Pod 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 관리 |
| Endpoint | Pod 연결 정보 관리 |
Service를 이해하면 Kubernetes Application이 어떻게 외부와 통신하고 여러 Pod를 안정적으로 관리하는지 알 수 있습니다.
다음 글에서는 Kubernetes 외부 접근과 Traffic 관리를 담당하는 Kubernetes Ingress 완벽 가이드! HTTP Routing과 Load Balancing 구조 이해하기를 알아보겠습니다.