ft_services - MetalLB

jiholee·2021년 4월 17일
0

ft_services

목록 보기
2/4

Load Balancer 요구사항

  • Load Balancer는 외부에서 여러분의 서비스에 접근하는 것을 관리합니다. 이 load balancer가 여러분의 클러스터에 접근하는 유일한 입구가 될 것입니다. 각 서비스와 연관된 포트를 유지해야합니다.(ex. IP:3000 for Grafana) Load Balancer는 하나의 IP를 가집니다.
  • 서비스로의 모든 Redirection 은 load balancer를 이용해 이루어질 수 있도록 하세요. FTPS, Grafana, Wordpress, phpMyAdmin, nignx는 모두 LoadBalancer 타입입니다. Influx DB와 MySQL은 ClusterIP 타입입니다. 다른 entrie들은 존재할 수 있지만, 그 entrie들 중 어느것도 NodePort 타입이어서는 안됩니다.
  • Node Port, Ingress, kubectl port-forward 명령어는 금지.
  • Cloud provider에서 제공하는 loadbalancer는 여기선 무용지물입니다. MetalLB 라는걸 알아보세요.

serviceTypes

쿠버네티스 클러스터는 컨테이너화된 애플리케이션을 실행하기 위한 일련의 노드 머신이다. 쿠버네티스를 실행 중이라면 클러스터를 실행하고 있는 것이다. 클러스터를 만들면 이 위에 쿠버네티스의 Object (Pod, Service.. 등)들을 생성할 수 있다.

서비스를 클러스터 밖에 위치한 외부 ip주소에 노출하고 싶은 경우가 있다. serviceTypes는 원하는 서비스 종류를 지정할 수 있게 해준다.

  1. Cluster IP - 클러스터 내부에서만 서비스에 접근할 수 있다.

  2. Node Port - [NodeIP]:[NodePort] 로 클러스터 외부에서 서비스에 접속할 수 있다.

  3. Load Balancer - 클라우드 공급자의 로드 밸런서를 사용하여 서비스를 외부에 노출시킨다.

  • 인그레스사용하여 서비스를 노출시킬 수도 있다. 인그레스는 서비스 유형은 아니지만, 클러스터의 진입점 역할을 한다.

metallb를 사용하는 이유

on premise 환경에서는 로드밸런서 타입을 이용할 수 없다고 한다. 그런데 온프레미스 환경에서도 로드밸런서 타입의 서비스를 배포할 수 있게 해주는 도구가 MetalLB라고 한다.

on premise(온프레미스): 소프트웨어 등 솔루션을 클라우드 같이 원격 환경이 아닌 자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식을 말한다.

metallb configuration

공식 홈페이지에서는 matallb 구성이 방법이 나와있다.

  • MetalLB는 구성 될 때까지 유휴 상태로 유지됩니다. 이는 배포와 동일한 네임 스페이스 (metallb-system)에 configmap을 만들고 배포하여 수행됩니다.

  • configmap config.yaml의 이름을 지정한 경우 kubectl apply -f config.yaml을 사용하여 매니페스트를 배포 할 수 있습니다.

  • 특정 구성은 서비스 IP를 알리는 데 사용할 프로토콜에 따라 다릅니다.

  1. Layer 2 configuration
  2. BGP configuration
  3. Advanced configuration

그중 가장 간단하다고 나와있는 layer 2 방법을 사용했다.

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.99.100-192.168.99.250

마지막 addresses 부분을 자신이 외부로 노출할 수 있는 IP 범위를 적어준다.


minikube는 내장 addons를 지원한다.

애드온(Addons)
애드온은 클러스터 내부에서 필요한 기능들을 위해 실행되는 pod입니다. 애드온에 사용되는 pod은 디플로이먼트, 리플리케이션컨트롤러등에 의해 관리됩니다. 애드온이 사용하는 네임스페이스는 kube-system입니다.
출처 https://arisu1000.tistory.com/27828

minikube addons list 로 지원하는 서비스의 목록을 볼 수 있다.

#metallb
minikube addons enable metallb          // metalLB를 활성화
kubectl apply -f ./srcs/metallb/metallb_config.yaml

config.yaml 파일을 적용시키고 로드밸런서 타입의 서비스를 배포할 수 있다.

0개의 댓글