[k8s] NodePort, LoadBalancer, Ingress 본문
NodePort
NodePort
는 가장 기본적인 외부 노출 방식으로, 각 노드의 특정 포트를 통해 서비스를 외부에 노출한다.
- 특징
- Kubernetes 노드의 IP와 특정 포트를 사용하여 외부에서 접근
- 기본적으로 30000~32767 범위의 포트를 사용
- 클러스터의 모든 노드에서 해당 포트로 서비스에 접근할 수 있다
- 장점
- 설정이 간단하고, 클러스터 외부에서 즉시 접근 가능
- 추가적인 리소스 필요 없이 노드 IP로 접근 가능
- 단점
- 포트 범위가 제한적이며, 노드의 IP 주소를 알아야 합니다
- 노드가 다운되면 해당 노드의 서비스에 접근 불가
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
nodePort: 30001
LoadBalancer
LoadBalancer
는 클라우드 환경에서 주로 사용되는 방식으로, 클라우드 제공자의 로드 밸런서를 통해 외부 트래픽을 서비스로 전달한다.
- 특징
- 클라우드 환경(AWS, GCP, Azure 등)에서 외부 로드 밸런서를 자동으로 생성하여 IP를 할당
- 서비스마다 고유한 외부 IP가 할당되며, 주로 프로덕션 환경에서 사용
- 온프레미스 환경에서도
Metallb
와 같은 소프트웨어를 사용하여 구성 가능
- 장점
- 외부 IP가 자동으로 할당되어 쉽게 접근 가능하며, 높은 가용성 제공
- 클라우드 로드 밸런서와 연동하여 트래픽을 분산
- 단점
- 클라우드 제공자의 리소스를 사용할 경우 추가 비용이 발생할 수 있다
apiVersion: v1
kind: Service
metadata:
name: my-loadbalancer-service
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 8080
Ingress
Ingress
는 도메인 기반 라우팅을 지원하는 방식으로, 외부 트래픽을 클러스터 내부의 여러 서비스에 전달할 수 있다.
- 특징
Ingress Controller
를 통해 도메인과 경로 기반 라우팅 규칙을 정의하고 서비스로 연결- HTTPS를 지원하며, SSL 인증서를 설정하여 보안 트래픽을 처리할 수 있다
- 장점
- 도메인 및 경로 기반 라우팅이 가능하여, IP 주소를 절약하고 트래픽을 효율적으로 관리
- 하나의 IP로 여러 도메인이나 서브도메인을 관리 가능
- 단점
Ingress Controller
를 설치해야 하며, 설정이 다소 복잡할 수 있다.- 클러스터 환경에 따라 지원되는 Ingress Controller가 제한될 수 있다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /service1
pathType: Prefix
backend:
service:
name: service1
port:
number: 80
- path: /service2
pathType: Prefix
backend:
service:
name: service2
port:
number: 80
Ingress, LoadBalancer, NodePort의 차이점
유형 | 특징 | 장점 | 단점 | 사용 사례 |
---|---|---|---|---|
NodePort | 노드의 특정 포트를 통해 서비스 노출 | 설정이 간단하고 추가 리소스가 필요 없음 | 포트 범위가 제한적이며 노드 IP가 필요 | 개발 환경, 간단한 서비스 노출 |
LoadBalancer | 클라우드 로드 밸런서를 통해 외부 노출 | 외부 IP 자동 할당, 높은 가용성과 로드 밸런싱 제공 | 클라우드 비용 발생, 온프레미스 지원 제한 | 클라우드 환경의 프로덕션 서비스 |
Ingress | 도메인 기반 라우팅, SSL 지원 가능 | 도메인과 경로 기반의 정교한 라우팅, IP 절약 | Ingress Controller 설정 필요, 다소 복잡 | 다수의 서비스, 도메인 기반의 접근이 필요한 경우 |
'Infra' 카테고리의 다른 글
메모리 영역 (0) | 2025.02.06 |
---|---|
[k8s] k8s Security basic (0) | 2024.11.11 |
[k8s] Kubernetes Network (0) | 2024.11.08 |
[Traefik] K8s Traefik 설치, External-IP 설정 및 HTTPS 적용 방법 (5) | 2024.09.22 |
[k8s] K8s Storage with OpenEBS (0) | 2024.08.02 |
Comments