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

image 25

Service

image 27

Ingress

image 28

Ingress içerisinde “edit config” seçeneği ile host kısmını düzenleyelim.

image 29

Request host kısmını test için “sezer.test” ile değiştirdikten sonra save diyerek ingress’i kaydediyoruz.

image 30

Ardından test için herhangi bir worker ip adresini hosts dosyamıza ekleyip domain kısmına ise “sezer.test” yazıyorum.

image 31

Şimdi tarayıcıdan erişmeye çalıştığımda sonuç aşağıdaki gibi oluyor.

rancherdemolast

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.