핵심 인사이트 (3줄 요약)

  1. 본질: K8s (Kubernetes)의 LoadBalancer 서비스는 클러스터 내부의 네트워크를 퍼블릭 클라우드 벤더의 L4 로드밸런서와 자동으로 연동해 주는 외부 진입점이다.
  2. 가치: 인프라 관리자가 직접 퍼블릭 클라우드 콘솔에서 로드밸런서를 생성하고 노드 포트를 연결하는 수동 프로비저닝 (Provisioning) 작업을 완전히 자동화한다.
  3. 판단 포인트: 서비스마다 로드밸런서를 개별 생성하므로 비용이 급증할 수 있으며, L7 (HTTP/HTTPS) 경로 기반 라우팅이 필요할 때는 Ingress (인그레스)로 전환을 고려해야 한다.

Ⅰ. 개요 및 필요성

K8s 서비스 (Service) 타입 중 LoadBalancer는 클러스터 외부의 사용자 트래픽을 내부 파드 (Pod)로 연결하기 위해 클라우드 사업자의 실제 로드밸런서를 동적으로 생성하는 기술이다.

기존의 NodePort (노드포트) 방식은 모든 노드의 특정 포트(30000~32767)를 열어야 했고, 사용자가 직접 특정 노드의 IP를 알고 접속해야 하는 한계가 있었다. 상용 서비스에서는 고객에게 고정된 단일 공인 IP와 표준 포트(80, 443)를 제공해야 하며, 특정 노드가 다운되더라도 트래픽이 우회될 수 있는 진정한 의미의 부하 분산이 필수적이다. LoadBalancer는 K8s의 CCM (Cloud Controller Manager)이 AWS, GCP 등의 API를 호출하여 이 모든 구성을 코드로 자동화 (IaC)한다.

  • 📢 섹션 요약 비유: NodePort가 아파트 담벼락에 뚫어 놓은 여러 개의 쪽문이라면, LoadBalancer는 외부 도로와 연결된 거대하고 깔끔한 아파트 단지의 공식 정문 건물이다.

Ⅱ. 아키텍처 및 핵심 원리

LoadBalancer 서비스는 단독으로 동작하는 것이 아니라, 외부 LB 인프라 -> NodePort -> ClusterIP -> Pod로 이어지는 4단계 계층 라우팅 구조를 감싸는 형태다.

구성 요소역할 및 동작 방식
Cloud Provider APICCM이 클라우드 벤더의 API를 호출하여 L4 로드밸런서 인스턴스(예: AWS NLB)를 프로비저닝
NodePort클라우드 로드밸런서가 트래픽을 꽂아 넣을 수 있도록 클러스터의 모든 워커 노드에 동일한 포트 개방
kube-proxy노드에 도달한 트래픽을 목적지 파드로 포워딩하는 iptables/IPVS 룰 적용
External Traffic PolicyLocal 설정 시, 파드가 없는 노드를 거치지 않고 직접 목적지 노드로 트래픽을 보내 SNAT 핑퐁 최소화
┌──────────────────────────────────────────────────────────────┐
│        LoadBalancer 트래픽 인입 및 계층적 라우팅 흐름        │
├──────────────────────────────────────────────────────────────┤
│ [클라이언트] ──▶ (포트 80/443, 공인 IP)                      │
│                                                              │
│       ▼ AWS NLB / GCP TCP LB (외부 클라우드 로드밸런서)      │
│                                                              │
│       ├──▶ [노드 A] (포트 31000) ──▶ 파드 없음 (핑퐁 발생)   │
│       │                                                      │
│       └──▶ [노드 B] (포트 31000) ──▶ (kube-proxy) ──▶ [파드] │
└──────────────────────────────────────────────────────────────┘

서비스 생성 시 K8s는 내부적으로 NodePort와 ClusterIP를 함께 할당한다. 이후 클라우드 LB는 노드의 IP와 해당 NodePort를 백엔드 타겟 그룹으로 묶어, 외부 트래픽을 클러스터 내부로 밀어 넣는다.

  • 📢 섹션 요약 비유: 로드밸런서는 거대한 깔때기와 같다. 넓은 외부 공인 IP로 쏟아지는 트래픽을 모아, 클러스터라는 체를 거쳐 정확한 파드라는 유리병 안으로 흘려보낸다.

Ⅲ. 비교 및 연결

외부로 서비스를 노출하는 K8s의 세 가지 방식은 노출 범위와 지능(L4 vs L7)에서 명확한 경계를 가진다.

항목NodePortLoadBalancerIngress
라우팅 계층L4 (IP, Port)L4 (IP, Port)L7 (HTTP, URL 패스)
외부 진입점각 노드의 공인 IP + 비표준 포트클라우드 LB의 단일 공인 IP + 표준 포트클라우드 LB (1개) + Ingress Controller
비용 구조클라우드 LB 비용 없음서비스 1개당 LB 1대 비용 발생여러 서비스가 1대의 LB 공유 (비용 절감)
주요 한계상용 서비스용으로 부적합서비스 개수 비례 인프라 비용 폭증초기 설정 복잡, 컨트롤러 추가 필요

LoadBalancer는 외부 L4 장비와의 단순 연결을 담당하지만, URL 패스 기반의 스마트한 트래픽 분배를 원한다면 이 LoadBalancer 뒤에 Ingress Controller를 배치하는 아키텍처로 진화하게 된다.

  • 📢 섹션 요약 비유: NodePort는 각 식당 주인이 직접 밖에서 손님을 부르는 것이고, LoadBalancer는 식당마다 전용 발렛파킹 직원을 고용하는 것이며, Ingress는 쇼핑몰 통합 안내 데스크를 두는 것이다.

Ⅳ. 실무 적용 및 기술사 판단

실무에서 LoadBalancer를 사용할 때는 "트래픽 최적화"와 "비용 통제"가 핵심 판단 기준이다.

실무 체크리스트

  1. SNAT 및 레이턴시 문제: externalTrafficPolicy: Cluster (기본값)는 트래픽이 무작위 노드로 가면서 홉 (Hop)이 추가된다. 클라이언트의 원본 IP를 보존하고 네트워크 지연을 줄이려면 Local로 설정해야 한다. 단, 이 경우 트래픽 불균형이 발생할 수 있어 파드의 분산 배치 (Anti-Affinity) 설계가 수반되어야 한다.
  2. 비용 폭탄 (Cost Explosion): 마이크로서비스 아키텍처 (MSA)에서 50개의 서비스를 모두 LoadBalancer로 열면 50대의 클라우드 LB가 과금된다.
  3. 온프레미스 (On-Premise) 한계: 베어메탈 (Bare Metal) 환경에서는 AWS/GCP의 API가 없으므로 type: LoadBalancer가 동작하지 않는다. 이 경우 MetalLB 같은 소프트웨어 기반 L2/BGP 라우팅 솔루션을 별도로 구축해야 한다.

기술사적 의사결정

  • 채택: 트래픽 분리 격리가 엄격히 필요한 소수의 핵심 진입점 API나, L4 수준의 TCP/UDP 스트리밍 서비스에 적용한다.

  • 회피: 수십 개의 웹/API 서비스(L7)를 띄우는 환경에서는 LoadBalancer 타입 직접 사용을 피하고, 단일 LoadBalancer와 연결된 Ingress 아키텍처로 전환해야 한다.

  • 📢 섹션 요약 비유: 회삿돈을 아끼려면 직원(서비스)마다 개별 법인차량(LoadBalancer)을 지급하지 말고, 대형 버스(Ingress) 한 대를 렌트해 나눠 타게 만들어야 한다.


Ⅴ. 기대효과 및 결론

LoadBalancer는 복잡한 인프라 생성 작업을 K8s 매니페스트 (Manifest) 한 줄로 통합하여 진정한 의미의 클라우드 네이티브 (Cloud Native) 자동화를 완성했다. 이를 통해 개발자는 네트워크 장비의 CLI를 몰라도 글로벌 스케일의 부하 분산기를 즉시 확보할 수 있다.

하지만 1:1 결합 구조가 낳는 비용과 확장성 한계는 분명하다. 따라서 LoadBalancer는 "K8s와 퍼블릭 클라우드가 만나는 최초의 물리적 접점"으로 이해해야 하며, 이 접점을 어떻게 효율적으로 공유 (Ingress, API Gateway)할 것인지가 아키텍트의 최종 과제로 남게 된다.

  • 📢 섹션 요약 비유: 훌륭한 자동문(LoadBalancer)은 설치하기 쉽고 손님을 잘 맞이하지만, 문이 너무 많으면 유지보수비가 건물 렌트비를 넘어선다.

📌 관련 개념 맵

개념연결 포인트
CCM (Cloud Controller Manager)K8s와 클라우드 벤더(AWS, GCP 등) API를 연결하는 브리지 컴포넌트
NodePort (노드포트)LoadBalancer가 외부 트래픽을 노드 내부로 밀어 넣기 위해 의존하는 하위 기술
Ingress (인그레스)LoadBalancer의 1:1 비용 문제를 해결하는 L7 라우팅 및 호스트 기반 트래픽 제어기
MetalLB클라우드 벤더가 없는 온프레미스 환경에서 LoadBalancer 기능을 구현하는 솔루션

📈 관련 키워드 및 발전 흐름도

서비스 노출의 기초 
    │
    ▼
NodePort (노드포트) · 단일 노드 IP 의존
    │
    ▼
LoadBalancer (로드밸런서) · 외부 L4 장비 연동 및 공인 IP 자동화
    │
    ▼
externalTrafficPolicy: Local · SNAT 방지 및 최적화
    │
    ▼
Ingress (인그레스) · L7 통합 라우팅으로 비용 및 효율성 극대화

👶 어린이를 위한 3줄 비유 설명

  1. 학교 운동장에 텐트(파드)를 치고 친구들을 초대하려고 해요.
  2. 하지만 텐트가 어디 있는지 아무도 모르니까, 학교 정문(LoadBalancer)에 큰 간판을 세우고 안내원 아저씨를 불렀어요.
  3. 이제 밖에서 온 친구들은 텐트 주소를 몰라도 안내원 아저씨가 정확하게 안내해 준답니다!