본문 바로가기

[k8s] NodePort, LoadBalancer, Ingress 본문

Infra

[k8s] NodePort, LoadBalancer, Ingress

겨울바람_ 2024. 11. 12. 17:11

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