MetalLB Kurulumu ON-PREM

Deniz TÜRKMEN
4 min readOct 17, 2022

--

Merhabalarr,

Bu yazımda var olan single k8s cluster’ıma Metallb kurulumunu inceliycez. ilk olarak nedir ve hangi amaç için kullandığımıza bakalım.

MetalLB: Cloud ortamlarda (AWS, Azure ve Google cloud) üzerindeki Kubernetes cluster’ınızdaki bir servisi dışarıya açmak istediğiniz servisi LoadBalancer tipinde bir servis açtığınızda otomatik olarak bir IP atanmakta ve servis o pod’a external IP’yi kullanarak ulaşabilirsiniz. On-Prem ortamdaki Cluster’larınızda bunu yapmak için kullanılan açık kaynak proje olarak geliştirilmiş MetalLB tooldur. İki modu vardır.

  • Layer2: Ip adresine sadece atanmış bir node cevap verecektir. Failover destekler. Atanan IP adresi cevap vermez ise başka bir IP alır ve bu IP ile Pod’a erişebilirsiniz. Layer2 mod arp request-response ile çalıştığı için gerçek anlamda load balancer yapmaz.
  • Bgp: Mesajları ile sorumluluğu routera devrederek load-balancing işlemlerini gerçekleştir.

Kısacası, Eğer single kubernetes cluster’ınız on-prem ortamda kurduysanız ve bu single clusterdaki bir veya birden fazla pod’u dışardan erişilmesini istiyorsanız bununb çözümü MetalLB’dir.

Kuruluma geçmeden önce aşağıdaki sayfadan kurduğunuz CNI (Container Network Interface) bilinen issue’kara bakmanızı şiddetle tavsiye ederim.

MetalLB var olan on prem ortamımdaki cluster üzerine MetalLB kurulumu gerçekleştircem. Kurulumu aşağıdaki linkteki diğer yazımdan okuyabilirsiniz.

Eğer kube-proxy IPVS mode olarak kullanıyorsanız ARP mode aktifleştirmeniz gerekmektedir. Bunun için;

kubectl edit configmap -n kube-system kube-proxy

Editleyip strictARP true olarak değiştiriyoruz.

ipvs:
strictARP: true

yada aşağıdaki komut ile yapabilirsiniz.

kubectl get configmap kube-proxy -n kube-system -o yaml | \ sed -e "s/strictARP: false/strictARP: true/" | \ kubectl apply -f — -n kube-system

Şimdide metallb yükleyelim.

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.6/config/manifests/metallb-native.yaml

Evet gerekli objeler oluştu. Şimdide pod’ların durumuna bakalım.

kubectl get pods -n metallb-system

Görüldüğü gibi RUNNING state’dedir. Şimdide MetalLB ayarlayalım.

Yukarıdaki görüldüğü gibi addreses bölümüne 3 farklı yöntem ile belirtebiliriz.

addresses: 
— 192.168.10.0/24

Belirli bir subnetten alması istediğimizde addreses kısmına ilgili subnet aralığını verebilirsiniz.

addresses: 
— 192.168.1.200-192.168.1.250

Belirlediğimiz IP aralığından almasını istediğimizde yukarıdaki addres kısmına verebilirsiniz.

addresses: 
— fc00:f853:0ccd:e799::/124

Belirli bir MAC adresinden alması istiyorsak yukaradaki gibi yapabilirsiniz. Biz belirli bir IP adresinden IP almasını istiyoruz.

kubectl apply -f metal-range.yaml

Oluşturduğumuz IpAddressPool bakmak için,

kubectl describe ipaddresspools first-pool -n metallb-system

MetalLB Kurulumu tamamlandı. Son olarak ta bir tane service expose ederek test edelim.

kubectl apply -f metal-dep-svc.yamlkubectl get svc

Görüldüğü gibi service’in tipi LoadBalancer ve bizim verdiğimiz aralıktan bir tane IP almıştır. 192.168.1.240 IP adresine tarayıcıdan gittiğinizde pod’unuzun içindeki image görebilirsiniz.

Bu yazımızın da sonuna gelmiş bulunmaktayız. Araştırmalarım ve sektörde karşılaştığım senaryolar üzerine yazılarımı yazmaya devam edeceğim. Umarım faydalı bir yazı olmuştur. Yazımı okuduğunuz için teşekkürler.

Referanslar;

--

--

Deniz TÜRKMEN
Deniz TÜRKMEN

No responses yet