[k8s] kind 클러스터에 MetalLB 설치하기

2025. 8. 8. 15:30·Cloud/Kubernetes

2024.10.21 - [Cloud/Kubernetes] - [k8s] kind로 Kubernetes 실습 환경 구성하기

 

[k8s] kind로 Kubernetes 실습 환경 구성하기

Kind란?Kind는 로컬 컴퓨터 환경에 쿠버네티스 클러스터를 손쉽고 빠르게 설치하기 위해 만들어진 도구입니다.Kind는 Go 언어를 기반으로 만들어졌으며, Docker이미지를 기반으로 kubeadm을 이용하여

lucy-devblog.tistory.com

MetalLB를 설치하기 전에 kind 클러스터 구성을 위해 위 글을 참고하시면 됩니다.
kind는 베어메탈 환경에서 동작합니다. 그러므로 MetalLB를 설치하여 베어메탈 환경에서도 로드 밸런서를 사용할 수 있도록 합니다.

1. MetalLB 설치

https://metallb.io/installation/

 

Installation :: MetalLB, bare metal load-balancer for Kubernetes

Before starting with installation, make sure you meet all the requirements. In particular, you should pay attention to network addon compatibility. If you’re trying to run MetalLB on a cloud platform, you should also look at the cloud compatibility page

metallb.io

MetalLB를 설치하기 전에 kube-proxy가 ipvs 모드를 사용하고 있는지 확인한다. 사용하고 있다면 다음과 같이 수정한다.

kubectl edit configmap -n kube-system kube-proxy

apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "ipvs"
ipvs:
  strictARP: true

수정했다면 이제 아래 명령어를 사용하여 MetalLB를 설치하면 된다.

# kubectl로 설치
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.15.2/config/manifests/metallb-native.yaml

# helm으로 설치
helm repo add metallb https://metallb.github.io/metallb
helm install metallb metallb/metallb

kubectl과 helm 이외에도 kustomize를 이용하여 설치할 수 있습니다.

# kustomization.yml
namespace: metallb-system

resources:
  - github.com/metallb/metallb/config/native?ref=v0.15.2

MetalLB를 설치하면 metallb-system이라는 네임스페이스에 배포되었음을 확인할 수 있습니다.

2. 로드 밸런서에 할당할 IP 주소 정의

https://metallb.io/configuration/

 

Configuration :: MetalLB, bare metal load-balancer for Kubernetes

MetalLB remains idle until configured. This is accomplished by creating and deploying various resources into the same namespace (metallb-system) MetalLB is deployed into. There are various examples of the configuration CRs in configsamples. Also, the API i

metallb.io

로드밸런서에서 사용하는 주소 풀을 설정하기 위해 docker network inspect로 정보를 받아옵니다.

docker network inspect -f '{{.IPAM.Config}}' kind

위 명령어의 결과를 바탕으로 외부 노출 주소 범위를 설정합니다. 그리고 이를 L2로 광고합니다.

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: local-pool
  namespace: metallb-system
spec:
  addresses:
  - # 생성할 로드밸런서의 IP 범위
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: local-loadbalancer-advertisement
  namespace: metallb-system
spec:
  ipAddressPools:
  - local-pool
Linux에서는 docker network에 접근이 가능하여 위와 같은 설정이 가능하지만 Windows나 MacOS에서는 docker network에 접근할 수 없다고 합니다.

3. 테스트 결과

로드밸런서에 할당된 IP에 curl을 하면 통신이 되는 것을 확인할 수 있습니다.


ubuntu로 vmware를 만들고 그 위에 kind로 클러스터를 설치해서 시도했는데 vmware에서는 curl로 가능하지만 아무래도 kind ip 범위로 설정하여 외부에서는 통신이 되지 않습니다. 이 부분은 추후 수정하겠습니다.


참고

  • https://www.anyflow.net/sw-engineer/kind-kubernetes-in-docker
저작자표시 비영리 변경금지 (새창열림)

'Cloud > Kubernetes' 카테고리의 다른 글

[k8s] kubeadm으로 클러스터 구성(2)  (2) 2025.07.17
[k8s] kubeadm으로 클러스터 구성(1)  (1) 2025.07.12
[k8s] helm으로 Grafana와 Prometheus 설치하기  (0) 2025.04.01
[k8s] GKE에서 ArgoCD 설치 및 Github Repository 연결  (0) 2025.02.24
[k8s] Kubernetes Scheduling  (0) 2024.12.04
'Cloud/Kubernetes' 카테고리의 다른 글
  • [k8s] kubeadm으로 클러스터 구성(2)
  • [k8s] kubeadm으로 클러스터 구성(1)
  • [k8s] helm으로 Grafana와 Prometheus 설치하기
  • [k8s] GKE에서 ArgoCD 설치 및 Github Repository 연결
The Engineer, Lucy
The Engineer, Lucy
  • The Engineer, Lucy
    Growing up for My Future💕
    The Engineer, Lucy
    • Instagram
    • GitHub
  • 전체
    오늘
    어제
    • 분류 전체보기 (171) N
      • Linux (26)
      • Infra (9)
      • Cloud (25)
        • AWS (2)
        • GCP (3)
        • Docker (4)
        • Kubernetes (14)
        • IaC (2)
      • NGINX (1)
      • DevOps (3)
      • Computer Science (17)
        • Data Structure (0)
        • Algorithms (1)
        • Operating System (3)
        • Network (11)
        • Database System (2)
      • Coding Test (85) N
        • Algorithms (77) N
        • SQL (7)
      • ETC (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 공지사항

  • 링크

    • Lucy's Instagram
    • Lucy's GitHub
  • 인기 글

  • 태그

    Linux
    Kubernetes
    프로그래머스
    도커
    K8s
    Java
    programmers
    다이나믹 프로그래밍
    네트워크 기초 지식
    셸 스크립트
    Shell
    리눅스마스터 2급
    Baekjoon
    자바
    Shell Script
    쉘 스크립트
    리눅스마스터
    오블완
    cs 기초 지식 정리
    리눅스
    네트워크
    코딩테스트 공부
    dfs
    티스토리챌린지
    bfs
    너비우선탐색
    docker
    백준
    network
    쿠버네티스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
The Engineer, Lucy
[k8s] kind 클러스터에 MetalLB 설치하기
상단으로

티스토리툴바