Kubernetes Kümesine Nginx Nasıl Dağıtılır


Son yazımızda Kubernetes Cluster'ın nasıl kurulup çalıştırılacağını ele almıştık, şimdi de kümemizde NGINX hizmetini nasıl dağıtabileceğimizi tartışalım.

Bu dağıtımı genel bir bulut sağlayıcısı tarafından Barındırılan bir Sanal Makinede çalıştıracağım. Birçok genel bulut hizmetinde olduğu gibi, çoğu genellikle Sanal Makineleri için genel ve özel bir IP şemasına sahiptir.

Test Ortamı

Master Node - Public IP: 104.197.170.99 and Private IP: 10.128.15.195
Worker Node 1 - Public IP: 34.67.149.37 and Private IP: 10.128.15.196
Worker Node 2 - Public IP: 35.232.161.178 and Private IP: 10.128.15.197

NGINX'i Kubernetes Kümesi üzerinde dağıtma

Bu dağıtımı ana düğümden çalıştıracağız.

Kümenin durumunu kontrol ederek başlayalım. Tüm düğümleriniz HAZIR durumda olmalıdır.

kubectl get nodes

NGINX görüntüsünü kullanarak bir NGINX dağıtımı oluşturuyoruz.

kubectl create deployment nginx --image=nginx

Artık dağıtımınızın durumunu görebilirsiniz.

kubectl get deployments

Dağıtımınız hakkında daha fazla ayrıntı görmek isterseniz açıkla komutunu çalıştırabilirsiniz. Örneğin dağıtımın kaç kopyasının çalıştığını belirlemek mümkündür. Bizim durumumuzda, 1 kopyanın çalıştığını görmeyi bekliyoruz (yani 1/1 kopya).

kubectl describe deployment nginx

Artık Nginx dağıtımınız etkin olduğundan, NGINX hizmetini internette erişilebilen genel bir IP'ye sunmak isteyebilirsiniz.

Nginx Hizmetinizi Genel Ağa Gösterim

Kubernetes, hizmetinizi Kubernetes Hizmet türleri adı verilen bir özelliğe dayalı olarak kullanıma sunarken çeşitli seçenekler sunar ve bunlar:

  1. ClusterIP – Bu Hizmet türü genellikle hizmeti yalnızca küme içinde ve muhtemelen yalnızca küme düğümleri içinde erişilebilen dahili bir IP'de gösterir.
  2. NodePort – Bu, hizmetinizin kümeniz dışında, kümedeki her düğümdeki belirli bir bağlantı noktasında (NodePort olarak adlandırılır) erişilebilir olmasını sağlamanın en temel seçeneğidir. Bu seçeneği birazdan açıklayacağız.
  3. LoadBalancer – Bu seçenek, hizmetinize erişime izin vermek için çeşitli sağlayıcılar tarafından sunulan harici Yük Dengeleme hizmetlerinden yararlanır. Bu, hizmetiniz için yüksek kullanılabilirlik düşünüldüğünde daha güvenilir bir seçenektir ve varsayılan erişimin ötesinde daha fazla özelliğe sahiptir.
  4. ExternalName – Bu hizmet, trafiği küme dışındaki hizmetlere yeniden yönlendirir. Bu nedenle hizmet, kümenizin dışında barındırılabilecek bir DNS adıyla eşlenir. Bunun proxy kullanmadığını unutmamak önemlidir.

Varsayılan Hizmet türü ClusterIP'tir.

Senaryomuzda hem genel hem de özel IP adresimiz olduğundan ve şimdilik harici bir yük dengeleyiciye ihtiyacımız olmadığından NodePort Hizmet türünü kullanmak istiyoruz. Bu hizmet türüyle Kubernetes, bu hizmeti 30000+ aralığındaki bağlantı noktalarına atayacaktır.

kubectl create service nodeport nginx --tcp=80:80

Hizmetin ve kullanıma sunulan bağlantı noktalarının bir özetini görmek için get svc komutunu çalıştırın.

kubectl get svc

Artık curl komutunu kullanarak Nginx sayfasına tüm düğümlerde erişilebildiğini doğrulayabilirsiniz.

curl master-node:30386
curl node-1:30386
curl node-2:30386

Gördüğünüz gibi “NGINX'E HOŞGELDİNİZ!” sayfasına ulaşılabiliyor.

Geçici KAMU IP Adreslerine Ulaşmak

Fark etmiş olabileceğiniz gibi, Kubernetes kayıtlı aktif bir Genel IP'min olmadığını veya daha doğrusu kayıtlı bir HARİCİ IP'min olmadığını bildiriyor.

kubectl get svc

IP komutunu kullanarak arayüzlerime hiçbir HARİCİ IP eklenmediğinin gerçekten doğru olup olmadığını doğrulayalım.

ip a

Gördüğünüz gibi genel IP yok.

Daha önce de belirtildiği gibi, şu anda bu dağıtımı genel bir bulut sağlayıcısının sunduğu Sanal Makine üzerinde çalıştırıyorum. Dolayısıyla, genel IP'ye atanmış belirli bir arayüz olmasa da VM sağlayıcısı bir Geçici harici IP adresi vermiştir.

Geçici harici IP adresi, sanal örnek durdurulana kadar VM'ye bağlı kalan geçici bir IP adresidir. Sanal örnek yeniden başlatıldığında yeni bir harici IP atanır. Temel olarak bu, servis sağlayıcıların boşta kalan genel IP'lerden faydalanmasının basit bir yoludur.

Buradaki zorluk, genel IP'nizin statik olmaması dışında, Geçici Genel IP'nin Özel IP'nin yalnızca bir uzantısı (veya proxy'si) olmasıdır ve bu nedenle hizmet, yalnızca 30386 numaralı bağlantı noktasından erişilebilir. Bu, hizmete URL'sinden, yani 104.197.170.99:30386 adresinden erişileceği anlamına gelir; bunu kontrol ederseniz tarayıcınızda karşılama sayfasını görebilmeniz gerekir.

Bununla birlikte NGINX'i 3 düğümlü Kubernetes kümemizde başarıyla dağıttık.