MetalLB Kurulumu ON-PREM
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;