본문 바로가기
반응형

로드밸런서 서비스를 이용하기 위해서는 다른 오픈소스를 이용해야 하는데

그 중 MetalLB 를 이용해서 구성

 

 

1. MetalLB 설치

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.11.0/manifests/namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.11.0/manifests/metallb.yaml

 

다른 버전을 받으려면 v0.11.0 대신 다른 버전 입력. (현재 v0.14.3)

metallb 공식 홈페이지나 github 참고

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

 

 

설치 후에 controller 와 speaker POD 가 정상기동되었는지 확인

[k8s-master@k8s-master loadbalancer]$ k get po -n metallb-system
NAME                          READY   STATUS    RESTARTS   AGE
controller-7dcc8764f4-t5q6m   1/1     Running   0          178m
speaker-689sc                 1/1     Running   0          178m
speaker-c2b8c                 1/1     Running   0          178m
speaker-dzx8x                 1/1     Running   0          178m
speaker-gjzt9                 1/1     Running   0          178m

 

 

pod 마다 한개씩 speaker 가 뜨고 controller 하나 설치 확인

설치가 잘 안되면 kubectl logs 나 kubectl describe 명령어를 이용하여 확인

 

configmap 을 다음과같이 등록

[k8s-master@k8s-master loadbalancer]$ cat metallb-config.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.133.240-192.168.133.250 #원하는 IP대역대 등록

[k8s-master@k8s-master loadbalancer]$ kubectl apply -f metallb-config.yaml

[k8s-master@k8s-master loadbalancer]$ k get cm -n metallb-system
NAME               DATA   AGE
config             1      3h
kube-root-ca.crt   1      3h36m
[k8s-master@k8s-master loadbalancer]$

 

이후 서비스 등록되었는지 확인

아직 잘 모르니 추가설정은 하지않고 기본값으로만 적용

 

[k8s-master@k8s-master loadbalancer]$ k get svc
NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP       PORT(S)        AGE
hpa-target-service   LoadBalancer   10.233.20.107   192.168.133.240   80:31356/TCP   18m
kubernetes           ClusterIP      10.233.0.1      <none>            443/TCP        39d

 

서비스 등록 확인하였다.

 

정상 등록되었는지 테스트

 

kubectl create deploy nginx --image=nginx
kubectl expose deploy nginx --port 80 --type LoadBalancer

 

nginx 이미지를 이용해 pod를 생성하고, 로드밸런서로 외부에 노출

 

[k8s-master@k8s-master loadbalancer]$ k get svc
NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP       PORT(S)        AGE
hpa-target-service   LoadBalancer   10.233.20.107   192.168.133.240   80:31356/TCP   20m
kubernetes           ClusterIP      10.233.0.1      <none>            443/TCP        39d
nginx                LoadBalancer   10.233.2.50     192.168.133.241   80:30238/TCP   2s

 

192.168.133.241 이라는 외부 IP가  생긴것을 확인 후에 접속해본다.

 

 

이미지를 nginx 가 아니라 nginxdemos/hello 로 하면 IP가 나오는데

레플리카를 여러개 해놓고 호출을 보내면 로드밸런싱이 잘 되는 모습을 볼 수 있음.

728x90
반응형

한걸음 한걸음

개인적인 기록