■ MetalLB
MetalLB는 표준 라우팅 프로토콜을 사용하여, 베어 메탈에 Kubernetes 클러스터에 대한 외부 로드 밸런서의 구현을 제공한다.
Kubernetes는 베어 메탈 클러스터를 위한 네트워크 로드 밸런서 (LoadBalancer 유형의 서비스) 구현을 제공하지 않는다.
(Kubernetes가 제공하는 Network LB의 구현은 다양한 IaaS 플랫폼 (GCP, AWS, Azure ...)을 호출하는 모든 코드임, 즉 default Cloud환경에서만 지원)
따라서, 베어 메탈 환경에서도, Cloud와 같이 안전하고 빠른 LoadBalancer 기능을 지원하기 위해, MetalLB 프로젝트가 시작되었다.
<설치>
Installation With Kubernetes Manifests > kubectl apply -f https://raw.githubusercontent.com/google/metallb/v0.7.3/manifests/metallb.yaml Installation With Helm > helm install --name metallb stable/metallb
- helm의 경우 stable 저장소에 업데이트 되는 interval이 존재한다.
<설정>
ConfigMap yaml 정의
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 180.70.98.66-180.70.98.71
이젠, On-Premise 환경에서도 LoadBalancer Type의 서비스 정의 가능 및 Ingress Resource 정의 및 사용 가능 하다!
■ Service External IP Flag VS LoadBalancer Type
ExternalIps는 단지, 서비스에(all Type) Cluster내 특정 Node의 IP를 Attatch하여, 이 IP를 통해 외보로 서비스를 노출하는 것 뿐이다.
Kubernetes는 이 External Ip의 존재를 알지 못하며, 관리하지도 않는다. 따라서 사용자(어드민)가 프로비저닝하고 관리한다.
LoadBalancer Type의 서비스는 보안, 암호화 설정 등 추가적인 네트워크 스펙 구현이 가능하다.
또한, Kubernetes에 의해 자동으로 프로비저닝되고 관리된다.