loxilb는 GoLang/eBPF를 기반으로 한 오픈 소스 클라우드 네이티브 로드 밸런서로, 온-프레미스, 퍼블릭 클라우드 또는 하이브리드 K8s 환경 전반에 걸쳐 호환성을 달성하는 것을 목표로 합니다. loxilb는 텔코 클라우드(5G/6G), 모빌리티 및 엣지 컴퓨팅에서 클라우드 네이티브 기술 채택을 지원하기 위해 개발되고 있습니다.
Kubernetes는 ClusterIP, NodePort, LoadBalancer, Ingress 등 여러 서비스 구조를 정의하여 파드에서 파드로, 파드에서 서비스로, 외부 에서 서비스로의 통신을 가능하게 합니다.
이 모든 서비스는 Layer4/Layer7에서 작동하는 로드 밸런서/프록시가 제공합니다. Kubernetes는 매우 모듈화되어 있으며, 다양한 소프트웨어 모듈이 이러한 서비스를 제공할 수 있습니다. 예를 들어, kube-proxy는 기본적으로 ClusterIP 와 NodePort 서비스를 제공하지만, LoadBalancer 와 Ingress 같은 일부 서비스는 기본적으로 제공되지 않습니다.
로드 밸런서 서비스는 일반적으로 퍼블릭 클라우드 제공자가 관리 구성 요소로 함께 제공합니다. 그러나 온프레미스 및 자체 관리 클러스터의 경우 사용할 수 있는 옵션이 제한적입니다. 매니지드 K8S 서비스(예: EKS)의 경우에도 로드 밸런서를 클러스터 어디서나 가져오려는 사람들이 많습니다. 추가적으로, 텔코 5G/6G 및 엣지 서비스는 GTP, SCTP, SRv6, DTLS와 같은 범용적이지 않은 프로토콜 사용으로 인해 기존 K8S 서비스에서의 원활한 통합이 특히 어렵습니다. loxilb는 로드 밸런서 서비스 유형 기능을 주요 사용 사례로 제공합니다. loxilb는 사용자의 필요에 따라 클러스터 내 또는 클러스터 외부에서 실행할 수 있습니다.
loxilb는 기본적으로 L4 로드 밸런서/서비스 프록시로 작동합니다. L4 로드 밸런싱이 우수한 성능과 기능을 제공하지만, 다양한 사용 사례를 위해 K8s에서 동일하게 성능이 뛰어난 L7 로드 밸런서도 필요합니다. loxilb는 또한 eBPF SOCKMAP Helper를 사용하여 향상된 Kubernetes Ingress 구현 형태로 L7 로드 밸런싱을 지원합니다. 이는 동일한 환경에서 L4와 L7 로드 밸런싱이 필요한 사용자에게도 유리합니다.
추가적으로 loxilb는 다음을 지원합니다:
- eBPF를 통한 kube-proxy 교체(Kubernetes의 전체 클러스터 메쉬 구현)
- 인그레스 지원
- Kubernetes Gateway API
- Kubernetes 네트워크 정책
클라우드 네이티브 기능으로 텔코-클라우드를 배포하려면 loxilb를 SCP(Service Communication Proxy: 서비스 통신 프록시)로 사용할 수 있습니다. SCP는 3GPP에서 정의한 통신 프록시로, 클라우드 네이티브 환경에서 실행되는 텔코 마이크로 서비스에 목적을 두고 있습니다. 자세한 내용은 이 블로그를 참조하십시오.
텔코-클라우드는 N2, N4, E2(ORAN), S6x, 5GLAN, GTP 등 다양한 인터페이스와 표준을 통한 로드 밸런싱 및 통신을 필요로 합니다. 각각 고유한 챌린지를 요구하며, loxilb는 이를 해결하는 것을 목표로 합니다. 예를 들어:
- N4는 PFCP 수준의 세션 인텔리전스를 요구합니다.
- N2는 NGAP 파싱 기능이 필요합니다(관련 블로그 - 블로그-1, 블로그-2, 블로그-3).
- S6x는 Diameter/SCTP 멀티-호밍 LB 지원이 필요합니다(관련 블로그).
- MEC 사용 사례는 UL-CL 이해가 필요할 수 있습니다(관련 블로그).
- 미션 크리티컬 애플리케이션을 위해 히트리스 장애 조치 지원이 필수적일 수 있습니다.
- E2는 OpenVPN과 번들된 SCTP-LB가 필요할 수 있습니다.
- 클라우드 네이티브 VOIP를 가능하게 하는 SIP 지원이 필요합니다.
- 다양한 아키텍처 전반에서 경쟁자보다
성능
이 훨씬 뛰어납니다. - ebpf를 활용하여
유연
하고사용자 정의
가 가능합니다. - 워크로드에 대한 고급
서비스 품질
(LB별, 엔드포인트별 또는 클라이언트별) 어떤
Kubernetes 배포판/CNI와도 호환 - k8s/k3s/k0s/kind/OpenShift + Calico/Flannel/Cilium/Weave/Multus 등- loxilb를 사용한 kube-proxy 교체는
간단한 플러그인
으로 기존에 배포된 파드 네트워킹 소프트웨어와 통합이 가능합니다. - K8s에서
SCTP 워크로드
(멀티-호밍 포함)에 대한 광범위한 지원 NAT66, NAT64
를 지원하는 듀얼 스택 K8s멀티 클러스터
K8s 지원 (계획 중 🚧)어떤
클라우드(퍼블릭 클라우드/온프레미스) 또는독립형
환경에서도 실행 가능
- L4/NAT 상태 저장 로드밸런서
- NAT44, NAT66, NAT64를 지원하며 One-ARM, FullNAT, DSR 등 다양한 모드 제공
- TCP, UDP, SCTP(멀티-호밍 포함), QUIC, FTP, TFTP 등 지원
- Hiteless/maglev/cgnat 클러스터링을 위한 BFD 감지로 고가용성 지원
- 클라우드 네이티브 환경을 위한 광범위하고 확장 가능한 엔드포인트 라이브니스 프로브
- 상태 저장 방화벽 및 IPSEC/Wireguard 지원
- Conntrack, QoS 등 기능의 최적화된 구현
- ipvs와 완전 호환(ipvs 정책 자동 상속 가능)
- 정책 지향 L7 프록시 지원 - HTTP1.0, 1.1, 2.0, 3.0
- GoLang 기반의 제어 평면 구성 요소
- 확장 가능하고 효율적인 eBPF 기반 데이터 경로 구현
- 통합된 goBGP 기반 라우팅 스택
- Go로 작성된 Kubernetes 오퍼레이터 kube-loxilb
- Kubernetes 인그레스 구현
- K3s : flannel & loxilb
- K3s : calico & loxilb
- K3s : cilium & loxilb
- K0s : kube-router & loxilb
- EKS : loxilb 외부 모드
- How-To : loxilb와 함께하는 서비스 그룹 존 설정
- How-To : K8s 외부의 엔드포인트에 접근하기
- How-To : loxilb를 사용한 멀티 서버 K3s HA 배포
- How-To : AWS에서 멀티-AZ HA 지원과 함께 loxilb 배포
- How-To : ingress-nginx와 함께 loxilb 배포
- eBPF란 무엇인가
- k8s 서비스 - 로드 밸런서란 무엇인가
- 간단한 아키텍처
- 코드 조직
- loxilb의 eBPF 내부
- loxilb NAT 모드란 무엇인가
- loxilb 로드 밸런서 알고리즘
- 수동 빌드/실행 단계
- loxilb 디버깅
- loxicmd 커맨드 사용법
- loxicmd 개발자 가이드
- loxilb API 개발자 가이드
- API 참조 - loxilb 웹 API
- 성능 보고서
- 개발 로드맵
- 기여하기
- 시스템 요구 사항
- 자주 묻는 질문(FAQ)
- 블로그
- 데모 비디오
loxilb 개발자 및 다른 loxilb 사용자와 채팅을 하려면 loxilb Slack 채널에 가입하세요. 이곳은 loxilb에 대해 배우고, 질문을 하고, 협력작업을 하기에 좋은 장소입니다.
GitHub 토론에 자유롭게 질문을 게시하세요. 문제나 버그가 발견되면 GitHub에서 이슈를 제기해 주세요. loxilb 커뮤니티의 멤버들이 도와드릴 것입니다.
기능(Ubuntu20.04) | 기능(Ubuntu22.04) | 기능(RedHat9) |
---|---|---|
K3s 테스트 | K8s 클러스터 테스트 | EKS 테스트 |
---|---|---|