개발자 블로그를 위한 네걸음
기본적인 서버 구성이 완료되었고 쿠버네티스 (Kubernates)가 준비가 되었지만, 아직도 블로그 구축을 위한 세팅이 끝나지 않았습니다. 이전 포스팅에서는 정상적으로 '작동'만 하는 쿠버네티스를 설치했을 뿐이고, 블로그 구축을 위해 부가적인 세팅을 위해 한 발자국 더 나아가도록 하겠습니다.
MetalLB 란?
온프레미스 쿠버네티스를 외부트래픽과 통신하며 사용하기 위해서는 로드밸런스 또는 L4/L7 스위치를 사용하거나 소프트웨어 로드밸런스 기능을 사용해야 합니다.
하지만 로드밸런서나 스위치는 지금 구축한 서버보다 고가이며, 유료호스팅 방식들의 월유지비를 뛰어넘는 초기비용이 발생하기 때문에 소프트웨어 로드밸런서인 MetalLB를 사용하도록 하겠습니다.
MetalLB를 설치할 때 주의 사항과 공유기 설정를 공유하며, Helm Chart를 통한 설치로 쉽고 간단하게 적용할 수 있습니다.
MetalLB 설치
- hem 레포추가
helm install metallb -n metallb --create-namespace bitnami/metallb
- 설정변경
kubectl patch configmap kube-proxy -n kube-system --type merge -p '{"data":{"mode":"ipvs","ipvs":{"strictARP":"true"}}}'
#설정 후 재시작
kubectl delete pod -n kube-system -l k8s-app=kube-proxy
metallb를 사용하기 위한 쿠버네티스 설정에 대한 설명은 다음과 같습니다.
- IPVS 모드 는 고성능 로드 밸런싱을 제공하여 대규모 클러스터에서 더 나은 성능과 확장성을 제공합니다.
- strictARP 는 각 노드가 자신에게 할당된 IP 주소에 대해서만 ARP 응답을 보내도록 하여 네트워크 안정성을 높입니다.
설정 후 기존 포드를 삭제하면 자동으로 새로운 포드를 생성하면 새로운 설정이 적용됩니다.
- 공유기 설정

공유기 설정에서 DHCP로 자동으로 할당되는 아이피 범위를 공유기 자신의 아이피 (192.168.0.1) 과 MetalLB에서 사용할 아이피 (192.168.0.251 ~ 192.168.0.254)를 제외한 범위로 지정을 해줍니다. MetalLB에서 사용할 아이피는 1개만 사용해도 괜찮지만, 예시에서는 다른 서비스나 테스트를 위해 4개를 사용했습니다.
이제 공유기에서는 아이피 범위 (192.168.0.251 ~ 192.168.0.254)에 대해서 알지 못하는 상태됩니다.
- metalLB 설정 매니패스트
vi metallb-config.yaml
---
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: lb-ip-pool
namespace: metallb-system
spec:
addresses:
- 192.168.0.251-192.168.0.254
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: metallb-l2
namespace: metallb-system
공유기에서 미리 빼놓은 아이피 범위를 사용하도록 설정하고 다음 명령어로 매니패스트를 적용합니다.
kubectl apply -f metallb-config.yaml
이제 해당 아이피 범위는 쿠버네티스 클러스터 내에서만 존재하고 접근이 가능하게 됩니다. 하지만 아직 외부에서 쿠버네티스를 통한 서비스가 작동하지 않습니다. 이어서 ingress 에 대해 포스팅하겠습니다.