AWS와 같은 클라우드 플랫폼에서는 로드밸런서를 제공해준다. 하지만 k8s의 경우 로드벨런서를 제공해주지 않기 때문에 L4 로드벨런스를 사용할 때 metalLB를 사용한다.
metalLB를 사용하기 위해서는 외부와 연결되는 IP가 필요하다.
route 명령어 혹은 ip addr 명령어 사용해서 현재 ip 할당, dns가 정상적으로 설정되어있는지 확인한다.
만약 정상적으로 설정되어 있지않다면 sudo dhclient [network interface name]을 통해 자동할당한다.
metalLB 구성을 위해 k8s에서 kube-proxy strictARP true로 변경해준다.
kubectl edit configmap -n kube-system kube-proxy
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "ipvs"
ipvs:
strictARP: true
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/metallb.yaml
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
cat << EOF | kubectl create -f -
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 192.168.56.200-192.168.56.229
EOF
kubectl get all -n metallb-system
vi [yaml파일]
kubectl create -f [yaml파일]
vi [yaml파일]
kubectl create -f [yaml파일]
kubectl get service testapp-svc-lb
curl [LB-IP]