Daha önceki yazımda 3 master, 3 worker sanal makine üzerine Rancher’ı yapılandırmıştık. Daha sonra OpenEBS CSTOR ile workerlar arasında ortak bir data engine kurmuştuk. İlgili yazılara aşağıdaki linklerden erişebilirsiniz.
Şimdi ise Rancher üzerinde fazlaca replica kaldırıp, bunlar arasında yük dengelemeyi planlayacağız. İlk olarak Rancher-demo ‘yu github üzerinden çekiyoruz.
git clone https://github.com/sezersanlikan/rancher-demo
Ardından klasöre gidiyoruz.
cd /root/rancher-demo
Burada aşağıdaki komutu çalıştırıyoruz.
kubectl apply -k base
Bu şekilde base klasöründeki “service, ingress, pod” dosyalarını topluca kaldırmış oluyoruz.
Rancher üzerinden kontrol sağladığınızda her worker’da 1 adet olacak şekilde toplamda 3 pod, 1 service, 1 ingress aktif göreceksiniz.
Podlar
Service
Ingress
Ingress içerisinde “edit config” seçeneği ile host kısmını düzenleyelim.
Request host kısmını test için “sezer.test” ile değiştirdikten sonra save diyerek ingress’i kaydediyoruz.
Ardından test için herhangi bir worker ip adresini hosts dosyamıza ekleyip domain kısmına ise “sezer.test” yazıyorum.
Şimdi tarayıcıdan erişmeye çalıştığımda sonuç aşağıdaki gibi oluyor.
Her ne kadar hosts dosyamıza 1 adet worker ip adresimizi yazsak da Rancher’a eklediğimiz ingress ve service kısımları kendi içinde bir load balance hizmeti sunuyor. Bu kubernetes’in bir özelliğidir.
Bunun haricinde bir diğer soru Worker1 kapanırsa ne olur? Biz hosts dosyamıza Worker1’in ip adresini yazdık?
Cevap: Bu kısımda kullanabileceğiniz bir kaç alternatif var.
1- HAProxy ile trafiği açık olan herhangi bir Worker’a yönlendirmek. Zaten kendi içerisinde siz nereye yönlendirirseniz yönlendirin load balance yapıp diğer podlara da trafiği iletiyor.
2- MetalLB her ne kadar beta aşamasında olsa da harici bir alternatif olarak görebilirsiniz. Service sağlayıcıların yaptığı ServiceType LoadBalance görevini kendi sunucularınızda yapar. Örn: GKE (google cloud), AKS(azure), EKS(amazon) vb.
3- Google Cloud veya amazon gibi servis sağlayıcıları kullanıyorsanız doğrudan ServiceType LoadBalance olarak ayarlayabilirsiniz fakat bu ekstra bir maliyet çıkartır her defasında.