본문 바로가기

k8s

Metallb 를 통한 베어메탈 LoadBallancer 구성

https://metallb.universe.tf/installation/

 

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

 

 

먼저 kube-proxy ARP를 확인

strictARP모드를 사용해야하는데 이제는 defalut값으로 false로 지정됐기 때문이다.

kubectl get configmap kube-proxy -n kube-system -o yaml | \
> sed -e "s/strictARP: false/strictARP: true/" | \
> kubectl apply -f - -n kube-system

 

 

 

metallb설치

mkdir metallb
cd metallb/

#helm repo 추가
helm repo add metallb https://metallb.github.io/metallb

helm search repo update

#확인
helm repo list

 

 

 

#pull
helm pull metallb/metallb

tar xvzf metallb-0.14.5.tgz
mv metallb metallb-0.14.5
cd metallb-0.14.5/

#
cp values.yaml my-values.yaml

kubectl create ns mymetallb

#설치
helm install --namespace mymetallb --generate-name metallb/metallb -f my-values.yaml

 

 

 

확인

 

위 스크린샷에서

metallb-webhook-service의 EXTERNAL -IP가 none인 것은 정상입니다.

metallb-webhook-service는 클러스터 내부에서만 사용하기 때문입니다.

 

이젠

metallb 설정을 변경해 보겠습니다.

[root@k8s-master metallb-0.14.5]# pwd
/root/app/nginx-ingress-controller/metallb/metallb-0.14.5
[root@k8s-master metallb-0.14.5]# ls
Chart.lock  Chart.yaml  README.md  charts  my-config.yaml  my-values.yaml  policy  templates  values.schema.json  values.yaml

##위 처럼 my-config.yaml을 만들예정입니다.


###my-config.yaml
---
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: my-metallb-config
  namespace: mymetallb
spec:
  addresses:
  - 192.168.56.70-192.168.56.90  #현재 192.168.56.30~50대역은 노드들이 차지하고 있습니다 
  autoAssign: true
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: my-metallb-config
  namespace: mymetallb
spec:
  ipAddressPools:
    - my-metallb-config

 

 

[root@k8s-master metallb-0.14.5]# kubectl apply -f my-config.yaml
ipaddresspool.metallb.io/my-metallb-config created
l2advertisement.metallb.io/my-metallb-config unchanged

 

 

생성 확인

 

 

ipaddresspool확인

 

 

이제 앞서 만들었던 nginx-controller가 어떤 상태로 변했는지 확인해보겠습니다.

 

 

pending -> 192.168.56.70으로 할당된 것을 볼 수 있네요

'k8s' 카테고리의 다른 글

Graceful pod shutdown  (0) 2024.06.29
UTM(MAC) k8s nginx-controller 와 localhost 포트포워딩  (0) 2024.05.19
k8s nginx-ingress-controller 설치  (0) 2024.05.19