반응형
MetalLB는 Kubernetes 클러스터에서 외부 서비스에 대한 로드 밸런싱(Load Balancing)을 제공하는 오픈 소스 프로젝트입니다. 일반적으로, 로드 밸런서는 클러스터 내부의 서비스나 Pod에 대한 외부 접속을 분산시키는 역할을 합니다. MetalLB는 특히 On-Premises 환경이나 Bare Metal 환경에서 사용하기 용이하도록 설계되었습니다.
다음은 MetalLB의 주요 특징과 구성 요소에 대한 설명입니다:
주요 특징:
- BGP 프로토콜 사용:
- MetalLB는 기본적으로 BGP (Border Gateway Protocol) 프로토콜을 사용하여 외부 라우터와 통신합니다. 이를 통해 외부 IP 주소를 클러스터 내부 서비스에 동적으로 할당할 수 있습니다.
- Layer 2 및 Layer 3 모드:
- MetalLB는 두 가지 모드를 지원합니다.
- Layer 2 (ARP, Address Resolution Protocol) 모드: 로드 밸런서는 외부 라우터와 동일한 서브넷 내에 있어야 합니다.
- Layer 3 (BGP) 모드: 로드 밸런서와 외부 라우터가 서로 다른 서브넷에 있어도 됩니다.
- MetalLB는 두 가지 모드를 지원합니다.
- 투명한 프록시 및 IPVS 지원:
- MetalLB는 투명한 프록시 및 IPVS (IP Virtual Server)를 지원하여 레이어 4 로드 밸런싱을 제공합니다.
구성 요소:
- Controller:
- MetalLB의 컨트롤러는 BGP 세션을 관리하고 외부 라우터와의 통신을 처리합니다. 이를 통해 외부 IP 주소를 할당하고 클러스터 내 서비스로 트래픽을 전달합니다.
- 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)
728x90
반응형
LIST
'Kubernetes' 카테고리의 다른 글
[Kubernetes] probe 에 대한 비교 및 설명 (1) | 2024.01.10 |
---|---|
[Kubernetes] Kubespray 로 K8S Cluster 구성하기 (2) | 2023.12.12 |
[IT잡지식] k8s와 ocp 를 명령어 비교표 (2) | 2023.10.10 |
[Kubernetes] run, create, apply 의 정의와 차이점 (1) | 2023.09.18 |
[Kubernetes] Kubernetes + Kubesphere 구축하기 - On Linux 설치편 (1) | 2023.07.23 |