MetalLB: 베어메탈 Kubernetes 로드 밸런싱의 초석
클라우드 컴퓨팅이 점점 보편화되는 오늘날, Kubernetes는 컨테이너 오케스트레이션의 사실상 표준이 되었습니다. 그러나 Kubernetes 클러스터가 베어메탈 환경(예: 프라이빗 데이터 센터 또는 엣지 컴퓨팅 노드)에 배포될 때, 핵심적인 과제가 부상합니다. 클러스터 내 서비스에 외부에서 접근 가능한 로드 밸런싱 기능을 어떻게 제공할 것인가? 클라우드 서비스 제공업체는 일반적으로 LoadBalancer 서비스 유형을 기본적으로 통합하지만, 베어메탈 환경에서는 이 기능이 종종 누락됩니다. MetalLB는 이러한 문제점을 해결하기 위해 탄생했습니다. 이는 오픈 소스 네트워크 로드 밸런서로, 베어메탈 Kubernetes 클러스터에 클라우드 환경과 유사한 LoadBalancer 경험을 제공합니다.
MetalLB 프로젝트는 현재 베타 단계에 있지만, 그 안정성과 신뢰성은 수많은 프로덕션 및 비프로덕션 환경에서 검증되었습니다. 이 프로젝트는 원래 Google이 저작권을 소유하고 개발했지만, 2019년 3월부터 Google의 공식 프로젝트가 아닌 소규모 유지보수 팀과 커뮤니티가 함께 추진하는 오픈 소스 프로젝트로 전환되어 강력한 커뮤니티 활력을 보여줍니다.

MetalLB의 5가지 핵심 특징
MetalLB는 독특한 설계와 기능으로 베어메탈 Kubernetes 분야에서 중요한 위치를 차지하고 있습니다. 다음은 5가지 핵심 특징입니다.
1. 베어메탈 Kubernetes 로드 밸런싱 솔루션
MetalLB는 베어메탈 Kubernetes 클러스터에서 기본 LoadBalancer 서비스 유형의 공백을 메웁니다. 이를 통해 사용자는 클라우드 제공업체의 지원 없이도 Kubernetes 서비스에 외부 IP 주소를 할당하고 트래픽 로드 밸런싱을 효과적으로 수행할 수 있습니다. 이는 베어메탈 클러스터가 클라우드 환경처럼 내부 서비스를 외부 네트워크에 쉽게 노출할 수 있도록 하여 배포의 유연성과 가용성을 크게 향상시킵니다.

2. 두 가지 주요 작동 모드 지원: Layer 2 및 BGP
MetalLB는 다양한 네트워크 환경과 요구 사항에 맞춰 두 가지 핵심 작동 모드를 제공합니다.
- Layer 2 모드 (ARP/NDP): 이 모드에서 MetalLB는 하나의 노드에서 ARP(IPv4) 또는 NDP(IPv6) 요청에 응답하여 서비스 IP 주소를 알립니다. 이 모드는 구성이 간단하고 호환성이 높아 대부분의 간단한 네트워크 환경에 적합합니다. 모든 외부 트래픽은 먼저 특정 노드로 라우팅된 다음, 해당 노드의 kube-proxy를 통해 백엔드 Pod로 전달됩니다.
- BGP 모드 (경계 게이트웨이 프로토콜): BGP 모드는 외부 라우터와 BGP 피어링 세션을 설정하여 서비스 IP 주소를 능동적으로 알립니다. 이 모드는 진정한 다중 노드 로드 밸런싱을 구현하고 더 세밀한 트래픽 제어 기능을 제공하여 대규모 배포 및 고가용성에 대한 엄격한 요구 사항이 있는 복잡한 네트워크 환경에 적합합니다. 이는 네트워크 인프라를 더 잘 활용하여 최적의 경로 선택과 장애 조치를 구현할 수 있습니다.
3. 경량 및 Kubernetes 네이티브

MetalLB는 Kubernetes와 원활하게 통합되도록 설계되었으며, 클러스터 내부의 구성 요소로 작동합니다. 소프트웨어 형태로 로드 밸런싱 기능을 제공하여 값비싼 전용 하드웨어 장비가 필요 없어 배포 및 운영 복잡성을 줄입니다. 경량 특성으로 인해 클러스터 리소스 사용량이 최소화되면서도 고성능을 유지합니다.
4. 비용 효율성 및 유연성
오픈 소스 솔루션인 MetalLB는 사용자가 값비싼 하드웨어 로드 밸런서 또는 특정 클라우드 플랫폼 로드 밸런싱 서비스에 대한 의존성을 피할 수 있도록 돕습니다. 이는 특히 프라이빗 클라우드 또는 하이브리드 클라우드 환경을 구축하려는 기업에게 인프라 비용을 크게 절감합니다. 또한 MetalLB는 고도로 사용자 정의 가능한 옵션을 제공하여 사용자가 자신의 네트워크 토폴로지와 비즈니스 요구 사항에 따라 유연하게 구성할 수 있습니다.
5. IP 주소 동적 할당 및 외부 공지

MetalLB는 사용자가 미리 구성한 IP 주소 풀에서 LoadBalancer 유형 서비스에 외부 IP 주소를 동적으로 할당하고 회수하는 역할을 합니다. IP 주소가 할당되면 MetalLB는 Layer 2 또는 BGP 프로토콜을 통해 이 IP 주소를 외부 네트워크에 알림으로써 외부 클라이언트가 해당 서비스를 검색하고 접근할 수 있도록 합니다. 이러한 동적 관리 메커니즘은 IP 주소 할당 프로세스를 간소화하고 서비스의 지속적인 접근성을 보장합니다.
프로젝트 현황 및 기술 통합
MetalLB의 구성 방식도 지속적으로 발전하고 있으며, v0.13.0 버전부터는 기존의 ConfigMap에서 Kubernetes 네이티브 모드에 더 적합한 Custom Resources (CRs)로 변경되어 관리 효율성과 확장성이 향상되었습니다.
호환성 측면에서 MetalLB는 일반적으로 대부분의 퍼블릭 클라우드 플랫폼과 호환되지 않습니다. 이는 클라우드 플랫폼에서 일반적으로 제공하지 않는 표준 라우팅 프로토콜 구현에 의존하기 때문입니다. 그러나 Hetzner, OVH, OpenShift OCP, OpenStack, Proxmox, VMware, Vultr 등 특정 플랫폼에서 지원되는 것은 프라이빗 클라우드 및 하이브리드 클라우드 시나리오에서의 광범위한 적용 가능성을 보여줍니다. 특히 MetalLB는 BGP 세션을 처리하기 위한 기본 백엔드로 FRR-K8s를 사용합니다. FRR-K8s는 FRR의 Kubernetes 래퍼로, 기본 BGP 구현에는 없는 BGP 세션과 BFD 세션 페어링, IPv6 주소 공지 등 향상된 기능을 제공하여 복잡한 네트워크 환경에서 MetalLB의 기능을 더욱 강화합니다.

결론적으로 MetalLB는 베어메탈 Kubernetes 클러스터에 강력하고 유연하며 비용 효율적인 로드 밸런싱 솔루션을 제공하며, 고성능, 고가용성 프라이빗 클라우드 인프라를 구축하는 데 필수적인 도구입니다.


