본문 바로가기
  • 지요미의 IT성장일기
Kubernetes

쿠버네티스- MetalLB

by 지요미=P 2024. 2. 19.
728x90

 

먼저, 로그인!

이번 실습은 vmware로 시작.

 

Metallb

쿠버네티스 사용시 AWS,GCP,Azure와 같은 클라우드 플랫폼에서는 자체적으로 LB를 제공해주지만.
온프레미스 클러스터에서는 로드 밸런싱 기능을 제공하는 모듈을 추가적으로 설치해야 한다.

MetalLB는 BareMetalLoadBalancer약자로 베어메탈 환경에서 사용할 수 있는 로드밸런서를 제공하는 오픈소스 프로젝트!
클라우드 환경의 서비스(로드밸런서)와는 동작이 조금 다르다.

서비스의 External IP 전파를 위해서 표준 프로토콜인 ARP(IPv4)/NDP(IPv6), BGP를 사용한다.

데몬셋으로 speaker 파드를 생성하여 External IP를 전파한다.

 

 

git clone https://github.com/hali-linux/_Book_k8sInfra.git

 

--- metallb
# kubectl apply -f /root/_Book_k8sInfra/ch3/3.3.4/metallb.yaml
# kubectl get pods -n metallb-system -o wide
# vi metallb-l2config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: nginx-ip-range
      protocol: layer2
      addresses:
      - 172.25.0.157/32
      - 172.25.0.158/32
      - 172.25.0.159/32

# kubectl apply -f metallb-l2config.yaml
# kubectl describe configmaps -n metallb-system

 

최신 버전은 아니니.. 프로젝트시에 적용해보도록!

 

speaker가 바로 ip를 자동으로 부여할 수 있는 기능임.

외부에서 접속할 수 있도록 일종의 proxy역할!

 

vi metallb-l2config.yaml

config map이라는 자원을 metallb-system name space에 만들어줘.

 

ip 범위, ip 갯수, ip 주소 3가지 정보가 담겨있다.

 

 

# vi metallb-test2.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod2
  labels:
    app: nginx-pod2
spec:
  containers:
  - name: nginx-pod-container2
    image: nginx
---
apiVersion: v1
kind: Service
metadata:
  name: loadbalancer-service-pod2
spec:
  type: LoadBalancer
#  externalIPs:
#  -
  selector:
    app: nginx-pod2
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

 

 

 

이제 자원정리!!

kubectl delete all --all --force

 

728x90

'Kubernetes' 카테고리의 다른 글

쿠버네티스 - GCP에서 이미지를 띄워서 쿠버네티스 해보기 (pv정적프로비저닝)  (0) 2024.02.19
Kubernetes-volume  (1) 2024.02.19
쿠버네티스 3  (0) 2024.02.05
쿠버네티스 2  (0) 2024.02.02
쿠버네티스 1  (0) 2024.02.01