https://metallb.universe.tf/installation/
먼저 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 |