MetalLB - Kube LoadBalancer
최근 고객사에서 L4 스위치를 사용 못하게 되어 급하게 Metallb를 적용하였다. 국내는 모르겠지만 해외에서도 Reference도 꽤 있는 편이라 설치도 쉽고 운영 환경에서도 별다른 이슈 없이 사용 중이다.
사용 방법은 설정 파일만 CM(configure map) 형태로 적용하면 된다. (상세 설치 내용은 생략)
주의 사항은 IP 하나만 사용해도 위 형식처럼 IP를 두번 적어주어야 한다. 그렇지 않으면 아래와 같이 Invalid CIDR 에러 발생한다.
{“caller”:”k8s.go:387",”configmap”:”metallb-system/config”,”error”:”parsing address pool #1: invalid CIDR \”172.17.16.172\” in pool \”default\”: invalid CIDR \”172.17.16.172\””,”event”:”configStale”,”msg”:”config (re)load failed, config marked stale”,”ts”:”2021–01–13T17:10:43.244551517Z”}
오픈소스 부하 생성 툴인 JMeter 이용하여 Connections 100개 부하를 주었다. 아래와 같이 정상적으로 Load Balancing 확인 가능하다.
Node Down 하여 5개 NGINX POD에서 3개 POD로 줄였는데, 역시 정상적으로 분배된다.
여기까지는 정상적인데, HA Test가 이상 하였다.
Metallb POD 및 NGINX POD를 다운해도 서비스 Down이 없었다. 아마도 부하 생성 툴(Vegeta 사용, https://github.com/tsenart/vegeta) 에 이상이 있는 것 같은데 정확한 이유는 아직 찾지 못하였다.
다행히 서비스 적용 후 아직까지 POD Down 등의 문제가 발생하지 않고 있다. 아직 많은 Traffic(2,000명 사용자)을 받지 않아 특별히 성능 상의 이슈도 없다.
Kube 환경에서 물리 L4 스위치를 구매할 필요도 없고 오픈 소스면 대부분 가능한 신통한 세상이다.