Kubernetes, modern uygulama geliştirme ve dağıtımı için popüler bir araçtır. Ancak, karmaşık yapıları nedeniyle, kullanıcıların çoğu Kubernetes hizmetlerinin nasıl çalıştığını tam olarak anlamakta zorlanmaktadır. Bu yazıda, Kubernetes servicelerinin ne olduğunu, nasıl çalıştığını, yük dengesini nasıl yönettiğini ve daha fazlasını inceleyeceğiz.
1. Kubernetes Service Nedir?
Kubernetes hizmetleri, bir grup pod’u tek bir kaynak olarak sunmak için kullanılır. Bir Kubernetes hizmeti, pod’larla etkileşim kurmanın standart bir yoludur. Ayrıca, hizmetlerin IP adresleri statiktir, bu da hizmetlerin diğer pod’lar için her zaman aynı adreste erişilebilir olmasını sağlar.
Örneğin, bir uygulamanızın veritabanı pod’una erişmesi gerekiyorsa, veritabanı pod’unun IP adresine doğrudan bağlanmak yerine, bir hizmet oluşturarak uygulamanızın hizmete bağlanması önerilir. Bu sayede veritabanı pod’larında değişiklik yaparken, uygulama kodunuzda herhangi bir değişiklik yapmanız gerekmez.
2. Kubernetes ServiceTypes
Kubernetes hizmetleri, ServiceTypes olarak adlandırılan dört farklı tip sunar. Her ServiceType, bir hizmetin pod’lara nasıl yönlendirildiğini belirler.
ClusterIP
Bu Varsayılan servis tipidir. Yalnızca kubernetes kümesi içindeki diğer objeler tarafından erişilebilir. Herhangi bir dış ağ trafiği bu hizmete yönlendirilmez.
NodePort
Bu servis tipi, her düğümde bir TCP/IP port numarası aracılığıyla Kubernetes kümesi dışındaki istemcilere hizmet etmek için kullanılır.
LoadBalancer
Bu servis tipi, bulut sağlayıcısı tarafından sağlanan bir yük dengeleyici kullanarak dış ağ trafiğini hizmete yönlendiren bir IP adresi sağlar.
ExternalName
Bu servis tipi, bir DNS CNAME kaydına benzer şekilde harici bir adı, bir hizmete yeniden atamak için kullanılır.
Kubernetes Service Örnekleri ve Örnek YAML’lar
3. Kubernetes Service Nasıl Çalışır?
Kubernetes hizmetleri, birkaç temel bileşene sahiptir: bir seçici, bir etiket ve birkaç pod. Seçici, hangi pod’ların hizmete dahil edileceğini belirler. Etiketler, hizmete dahil edilen pod’larda tanımlanır ve seçiciler tarafından kullanılır.
Her hizmetin bir adı ve IP adresi vardır. Pod’lar, hizmetin IP adresine erişerek hizmete bağlanabilirler. Pod’lar dağıtıldığında veya yeni pod’lar eklediğinizde, Kubernetes hizmetleri otomatik olarak bu değişikliklere adapte olur. Bu sayede, uygulamanızın büyümesi veya küçülmesi durumunda, hizmetler de uygun şekilde ölçeklenebilir.
4. Kubernetes LoadBalancing
Bir Kubernetes hizmetinin amacı, uygulama işlevselliğini sağlamaktır. Ancak, bir hizmetin birden çok pod’u olması durumunda, trafik yönetimi sorunu ortaya çıkar. Bu nedenle, yük dengelemesi, trafik akışını dengeler ve hizmetler arasında trafik paylaşımını gerçekleştirir.
Yerleşik Kubernetes Yük Dengeleyicisi(Load Balancer)(Ingress Controller)
Kubernetes’in yerleşik yük dengeleyicisi, Kubernetes Ingress Controller olarak adlandırılır. Bu kontrolör, gelen trafiği hizmetlere yönlendirmek için kullanılır. Hizmetlerin IP adreslerine değil, tek bir Ingress kaydına yönlendirme yapar. Bu yöntem, Ingress kaydının yeniden yönlendirilmesiyle birden çok hizmete erişmenizi sağlar.
Üçüncü Taraf Yük Dengeleyicileri
Kubernetes, bulut sağlayıcısı tarafından sağlanan yük dengeleyicileri ile entegrasyonu desteklemektedir. Örneğin, AWS Elastic Load Balancing, Google Cloud Load Balancing veya Azure Traffic Manager gibi bulut sağlayıcıları, Kubernetes hizmetlerine trafik yönlendirebilir.
5. Kubernetes Load Balancer Kurulumu
Kubernetes yük dengeleyicisi kurulumu, Ingress Controller ve üçüncü taraf yük dengeleyicileri için farklılık gösterir.
NGINX Ingress Controller Kurulumu
NGINX Ingress Controller, Kubernetes hizmetlerinin dış dünyaya açılmasını ve yönetilmesini sağlar. Bu Ingress Controller’ın kurulumu oldukça basittir. İlk olarak, NGINX Ingress Controller’ı pod olarak çalıştırmanız gerekiyor. Bu işlem için, bir Deployment manifest dosyası oluşturmanız gerekmektedir.
Sonrasında, bir Service manifest dosyası oluşturmalısınız. Bu dosya, NGINX Ingress Controller’ın dış dünyayla nasıl iletişim kuracağını belirtir.
MetalLB Kurulumu
MetalLB, bare-metal Kubernetes kümesinde hizmet dışı IP adresi atamasını sağlar. Bu Ingress Controller, bare-metal Kubernetes kümesinde yük dengelemesi için benzersizdir. MetalLB’nin kurulumu oldukça basittir. İlk olarak, MetalLB’nin YAML manifest dosyasını indirmeniz gerekiyor. Sonrasında, MetalLB’nin yapılandırmasını belirleyen bir ConfigMap dosyası oluşturmalısınız.
6. Kubernetes Load Balancer Konfigürasyonu
Yük dengeleyicisi konfigürasyonu, NGINX Ingress Controller ve MetalLB için farklılık gösterir.
NGINX Ingress Controller Konfigürasyonu
NGINX Ingress Controller’ın konfigürasyonu, birkaç YAML manifest dosyasını düzenlemeniz gerektirir.
İlk olarak, ConfigMap dosyasına IP adresi tanımlamanız gerekiyor. Bu IP adresi, hizmetlere yönlendirilen trafiği dinleyen IP adresidir.
Sonrasında, Ingress kaydı oluşturmanız gerekir. Bu kayıt, NGINX Ingress Controller üzerinden erişilebilir olan hizmetleri belirtir. Her Ingress kaydı, birden çok kural içerebilir.
MetalLB Konfigürasyonu
MetalLB’nin konfigürasyonu da YAML manifest dosyalarıyla yapılmaktadır. İlk olarak, ConfigMap dosyasını oluşturmanız gerekmektedir. Bu dosya, hangi IP aralığının hizmetler için kullanılacağını belirler.
Sonrasında, bir Service manifest dosyası oluşturmanız gerekiyor. Bu dosya, MetalLB tarafından atanan IP adresini kullanarak hizmetlerinizi yönetmenizi sağlar.
7. Kubernetes Service İle İlgili Sık Sorulan Sorular
Kubernetes hizmetlerinin avantajları nelerdir?
Kubernetes hizmetleri, uygulama geliştiricilerine birçok avantaj sağlar. Bu avantajlar arasında hizmetlerin ölçeklenebilirliği, güvenilirliği ve yüksek kullanılabilirliği yer alır. Ayrıca, hizmetler sayesinde uygulama işlevselliği sağlanır ve trafik yönetimi sorunları çözülmüş olur.
Hangi Kubernetes ServiceTipi, hizmetlere dış ağ trafiği yönlendirmek için kullanılır?
LoadBalancer, hizmetlere dış ağ trafiği yönlendirmek için kullanılır. Bu ServiceType, bulut sağlayıcısı tarafından sağlanan bir yük dengeleyici kullanarak dış ağ trafiğini hizmete yönlendirir.
Kubernetes Ingress Controller nedir?
Kubernetes Ingress Controller, gelen trafiği hizmetlere yönlendirmek için kullanılır. Ingress kaydına yönlendirme yapar ve IP adreslerine değil, tek bir kayda yönlendirme yapar. Bu yöntem, Ingress kaydının yeniden yönlendirilmesiyle birden çok hizmete erişmenizi sağlar.
MetalLB nedir?
MetalLB, bare-metal Kubernetes kümesinde hizmet dışı IP adresi atamasını sağlar. Bu Ingress Controller, bare-metal Kubernetes kümesinde yük dengelemesi için benzersizdir.
Kubernetes’in yerleşik Load Balancer (yük dengeleyicisi) nedir?
Kubernetes’in yerleşik yük dengeleyicisi, Kubernetes Ingress Controller olarak adlandırılır. Bu kontrolör, gelen trafiği hizmetlere yönlendirmek için kullanılır.
Sonuç
Bu makalede, Kubernetes hizmetlerinin ne olduğunu, nasıl çalıştığını ve yük dengelemesi için nasıl kullanıldığını inceledik. Ayrıca, NGINX Ingress Controller ve MetalLB gibi yük dengeleyicilerinin kurulumu ve konfigürasyonu hakkında bilgiler aktardık.
Kubernetes hizmetleri, modern uygulama geliştirme ve dağıtımı için önemli bir araçtır. Hizmetlerin ölçeklenebilirliği, güvenilirKubernetes hizmetleri, modern uygulama geliştirme ve dağıtımı için önemli bir araçtır. Hizmetlerin ölçeklenebilirliği, güvenilirliği ve yüksek kullanılabilirliği sayesinde uygulamaların performansı artar ve trafik yönetimi sorunları çözülür.
Umarız bu makale, Kubernetes hizmetleri hakkında daha fazla bilgi sahibi olmanıza yardımcı olmuştur. Kubernetes ile ilgili diğer konuları öğrenmek isterseniz, kaynaklarımızı inceleyebilirsiniz.