Kubernetes

[Kubernetes] K8S에서 MetalLB 설치하기

IT-PAPA 2023. 12. 18. 06:37
반응형

MetalLB는 Kubernetes 클러스터에서 외부 서비스에 대한 로드 밸런싱(Load Balancing)을 제공하는 오픈 소스 프로젝트입니다. 일반적으로, 로드 밸런서는 클러스터 내부의 서비스나 Pod에 대한 외부 접속을 분산시키는 역할을 합니다. MetalLB는 특히 On-Premises 환경이나 Bare Metal 환경에서 사용하기 용이하도록 설계되었습니다.

다음은 MetalLB의 주요 특징과 구성 요소에 대한 설명입니다:

주요 특징:

  1. BGP 프로토콜 사용:
    • MetalLB는 기본적으로 BGP (Border Gateway Protocol) 프로토콜을 사용하여 외부 라우터와 통신합니다. 이를 통해 외부 IP 주소를 클러스터 내부 서비스에 동적으로 할당할 수 있습니다.
  2. Layer 2 및 Layer 3 모드:
    • MetalLB는 두 가지 모드를 지원합니다.
      • Layer 2 (ARP, Address Resolution Protocol) 모드: 로드 밸런서는 외부 라우터와 동일한 서브넷 내에 있어야 합니다.
      • Layer 3 (BGP) 모드: 로드 밸런서와 외부 라우터가 서로 다른 서브넷에 있어도 됩니다.
  3. 투명한 프록시 및 IPVS 지원:
    • MetalLB는 투명한 프록시 및 IPVS (IP Virtual Server)를 지원하여 레이어 4 로드 밸런싱을 제공합니다.

구성 요소:

  1. Controller:
    • MetalLB의 컨트롤러는 BGP 세션을 관리하고 외부 라우터와의 통신을 처리합니다. 이를 통해 외부 IP 주소를 할당하고 클러스터 내 서비스로 트래픽을 전달합니다.
  2. Speaker:
    • MetalLB는 BGP 스피커를 사용하여 로드 밸런서의 상태를 외부 라우터에 전파합니다. BGP 스피커는 각 노드에서 실행되며, 로드 밸런서가 배포된 노드에서만 활성화됩니다.

 

1. kube-proxy 편집

# kube-proxy 를 사용하는 경우 ARP 모드를 사용해야 합니다.
# 아래 명령을 이용해 kube-proxy 구성을 편집합니다.

$ kubectl edit configmap -n kube-system kube-proxy
configmap/kube-proxy edited

...
ipvs:
  strictARP: true
...

 

2. MetalLB 설치

# MetalLB install
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.12/config/manifests/metallb-native.yaml

2-1 Unable to connect to the server: dial tcp: lookup raw.githubusercontent.com on 127.0.0.53:53: server misbehaving 트러블 슈팅

# nameserver 가 제대로 등록되어있는지 확인 및 설정

$ vi /etc/resolv.conf

nameserver 8.8.8.8

 

3. External IP 설정할 yaml 파일 작성 및 적용

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: first-pool
  namespace: metallb-system
spec:
  addresses:
  - 192.168.0.240-192.168.0.250
#  - 192.168.0.235-192.168.0.239

 

4. L2 스위치 yaml 파일 작성 및 적용

apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: my-l2
  namespace: metallb-system
spec:
  ipAddressPools:
  - first-pool

 

관련 사이트

MetalLB, bare metal load-balancer for Kubernetes (universe.tf)

 

MetalLB, bare metal load-balancer for Kubernetes

Installation Before starting with installation, make sure you meet all the requirements. In particular, you should pay attention to network addon compatibility. If you’re trying to run MetalLB on a cloud platform, you should also look at the cloud compat

metallb.universe.tf

 

728x90
반응형
LIST