반응형
로드밸런서 서비스를 이용하기 위해서는 다른 오픈소스를 이용해야 하는데
그 중 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
반응형
'IT 공부 > PaaS' 카테고리의 다른 글
[Harbor] 이미지 Push 및 Kubernetes 에서 사용방법 (0) | 2024.04.13 |
---|---|
[Harbor] 사설 image repository Harbor 설치 방법 정리 (0) | 2024.04.11 |
[K8S] 9. AutoScaling & Scheduler (0) | 2024.01.22 |
[K8S] 8. Statefulset (0) | 2024.01.20 |
[K8S] 7. Deployment (0) | 2024.01.19 |