Kubernetes Keda Nedir? Örneklerle Keda ve Kurulumu

Kubernetes Keda Nedir? Örneklerle Keda ve Kurulumu 1

Kubernetes, açık kaynaklı bir konteyner yönetim platformudur ve işletmelerin uygulamalarını daha hızlı, daha güvenli ve daha tutarlı bir şekilde dağıtmalarına yardımcı olur. Keda ise, Kubernetes’teki otomatik ölçeklendirme özelliklerini genişleten bir araçtır. Bu makalede, Keda’nın ne olduğunu, nasıl çalıştığını ve örneklerle neler yapabileceğimizi inceleyeceğiz.

Keda Nedir?

Keda (Kubernetes-based Event-Driven Autoscaling), etkinlik odaklı ölçeklendirmeyi mümkün kılan bir ölçeklendirme çözümüdür. Keda, Kubernetes’in otomatik ölçeklendirme mekanizmalarını kullanarak, işlemci kullanımı, kuyruk boyutu, özel metrikler ve diğer ölçütler gibi farklı koşullara göre Kubernetes pod’larının sayısını otomatik olarak artırabilir veya azaltabilir.

Keda, birden fazla kaynaktan gelen olaylar için ölçeklendirme yapabilir; bu kaynaklar arasında Apache Kafka, RabbitMQ, AWS Kinesis, Azure Event Hubs ve benzerleri vardır. Keda, Kubernetes’e entegre olarak çalışır ve Kubernetes Cluster Resource API’sini kullanarak ölçeklendirme işlemlerini yapar.

Keda Nasıl Çalışır?

Keda, Kubernetes’te kaynak takibi yaparak etkinlikleri izler ve bunları olaylar olarak sunar. Bu olayları izleyerek, belirli bir eşiği aşan olaylar için ölçeklendirme kararları verir ve pod’ların sayısını artırır veya azaltır. Bir etkinliği izlemek için, Keda bir ScaledObject oluşturur ve bu objeye hangi kaynağı izleyeceğini ve hangi ölçeklendirme türünü kullanacağını söyler.

Örneğin, bir RabbitMQ kuyruğu için bir ScaledObject oluşturarak, Keda’nın bu kuyruktaki mesaj sayısına bakmasını ve pod’ların sayısını artırıp azaltmasını sağlayabiliriz. Keda, bunu yaparken, pod’lardaki yük dengelemesini de sağlar ve böylece performans ve kullanılabilirlik açısından en iyi sonucu elde ederiz.

Keda, ölçeklendirme kararı vermeden önce ölçümleri işlemek için bir “metrik kaynağı” kullanır. Örneğin, CPU kullanımı veya hafıza kullanımı gibi standart Kubernetes metrikleri kullanabiliriz. Ayrıca, özelleştirilmiş metrikler de tanımlayabiliriz. Bu metrikleri kullanarak, Keda, ölçeklendirme kararı vermek için bir eşiği belirler.

Keda ile Neler Yapılabilir?

Keda, çeşitli senaryolarda kullanılabilen bir ölçeklendirme çözümüdür. Aşağıda, Keda ile yapılabilecek bazı örnekler bulunmaktadır:

1. Mesaj Kuyruklarındaki Otomatik Ölçeklendirme

Bir kuyrukta bekleyen mesaj sayısı, Keda tarafından izlenebilir ve pod’ların sayısı bu sayıya göre otomatik olarak ayarlanabilir. Örneğin, bir uygulamanın yoğun saatlerinde daha fazla mesaj işlemesi gerekiyorsa, Keda otomatik olarak pod’ların sayısını artırarak uygulamanın performansını artırabilir. Daha düşük trafik saatlerinde, pod’ların sayısı otomatik olarak azaltılır ve kaynaklar boşa harcanmaz.

2. Özel Metriklerde Otomatik Ölçeklendirme

Bir uygulama, özel bir metriği izleyerek ölçeklendirilebilir. Örneğin, bir uygulama belirli bir API çağrısı sayısında yoğunlaşırsa, Keda, bu metrikleri izleyerek pod’ların sayısını otomatik olarak ayarlar ve kaynakları verimli bir şekilde kullanır.

3. Etkinlik Tabanlı Otomatik Ölçeklendirme

Bir etkinlik tabanlı uygulama, Keda tarafından otomatik olarak ölçeklendirilebilir. Örneğin, bir web sitesindeki ziyaretçi sayısı arttığında, Keda otomatik olarak pod’ların sayısını artırarak sitenin performansını korur.

4. Kaynak Havuzu Yönetimi

Keda, Kubernetes Cluster Resource API’sini kullanarak, kaynak havuzunu otomatik olarak yönetebilir. Bu sayede, verimli bir şekilde kaynak kullanımı sağlanabilir ve maliyetler düşürülebilir.

Keda’nın Avantajları Nelerdir?

Keda, Kubernetes’teki otomatik ölçeklendirme mekanizmalarını genişleterek, daha akıllı ve verimli bir ölçeklendirme deneyimi sunar. Ayrıca, Keda’nın diğer avantajları şunlardır:

1. Kolay Kurulum ve Kullanım

Kubernetes’e entegre olan Keda, kurulumu kolay ve kullanımı basittir. Birkaç adımda ölçeklendirmeyi yapılandırabilir ve etkinlik kaynağına bağlayabilirsiniz.

2. Birden Fazla Etkinlik Kaynağı Desteği

Keda, birçok farklı etkinlik kaynağını destekler. Apache Kafka, RabbitMQ, AWS Kinesis, Azure Event Hubs gibi popüler etkinlik kaynaklarının yanı sıra, özelleştirilmiş etkinlik kaynaklarını da destekler.

3. Kaynakları Verimli Kullanma

Keda, kaynakları verimli bir şekilde kullanarak, maliyetleri düşürür. Pod’ların sayısını gereksiz yere artırmaz ve iş yüküne göre dinamik olarak ayarlar.

4. Performans ve Kullanılabilirlik

Keda, otomatik ölçeklendirme sayesinde, yüksek performans ve yüksek kullanılabilirlik sağlar. Pod’ların sayısı, iş yüküne göre otomatik olarak ayarlanır ve böylece hızlı ve tutarlı bir performans elde edilir.

Sonuç

Keda, Kubernetes’in otomatik ölçeklendirme mekanizmalarını genişleterek, daha akıllı ve verimli bir ölçeklendirme deneyimi sunar. Keda, birden fazla etkinlik kaynağını destekler ve kaynakları verimli bir şekilde kullanarak, maliyeti düşürür. Ayrıca, performans ve kullanılabilirlik açısından da avantajlar sağlar.

Bu makalede, Keda’nın ne olduğunu, nasıl çalıştığını ve örneklerle neler yapabileceğimizi inceledik. Keda’nın faydalarını ve avantajlarını da tartıştık. Keda’nın kullanımı, özellikle etkinlik odaklı uygulamalar için büyük bir avantaj sağlar ve Kubernetes kullanıcıları için değerli bir araçtır.

Keda Nasıl Kurulur?

Keda’nın kurulumu oldukça basittir ve Kubernetes üzerinde çalışır. Kurulum için öncelikle bir Kubernetes Cluster’a ihtiyacınız vardır. Daha sonra, Keda’yı yüklemek için aşağıdaki adımları izleyebilirsiniz:

  1. kubectl apply -f https://raw.githubusercontent.com/kedacore/keda/v2.3.0/deploy/crds/keda.k8s.io_scaledobjects_crd.yaml komutunu kullanarak Keda CRD’lerini yükleyin.
  2. helm repo add kedacore https://kedacore.github.io/charts komutunu kullanarak Keda Helm repo’sunu ekleyin.
  3. helm repo update komutuyla Helm repo’sunu güncelleyin.
  4. helm install keda kedacore/keda --version 2.3.0 komutuyla Keda’yı yükleyin.

Bu adımları takip ederek Keda’yı Kubernetes Cluster’inize yükleyebilirsiniz.

Keda Nasıl Yapılandırılır?

Keda yapılandırması, ScaledObject olarak adlandırılan Kubernetes öğeleriyle yapılır. Bu nesneler, etkinlik kaynaklarını tanımlar ve bunların nasıl ölçeklendirileceğini belirler. Bir ScaledObject, aşağıdaki özellikleri içerir:

  • scaleTargetRef: Ölçeklendirilecek Kubernetes Kaynağı
  • triggers: Ölçeklendirme tetikleyicileri
  • minReplicaCount: Pod’ların minimum sayısı
  • maxReplicaCount: Pod’ların maksimum sayısı

Bir ScaledObject oluşturmak için, öncelikle ScaledObject YAML dosyası oluşturmanız gerekir. Daha sonra, bu dosyayı kubectl ile Kubernetes cluster’ınıza göndererek ScaledObject oluşturabilirsiniz.

Örneğin, RabbitMQ kuyruğu için bir ScaledObject oluşturmak için aşağıdaki YAML dosyasını kullanabilirsiniz:

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: rabbitmq-scaledobject
spec:
  scaleTargetRef:
    kind: Deployment
    name: rabbitmq-deployment
  triggers:
  - type: rabbitmq-queue
    metadata:
      queueName: example-queue
      host: rabbitmq.hostname.com
      port: "5672"
      username: rabbitmquser
      password: yourpassword
      connectionName: rabbitmq-connection
    authenticationRef:
      name: rabbitmq-auth-secret
  minReplicaCount: 1
  maxReplicaCount: 10

Bu YAML dosyasında, scaleTargetRef bölümünde RabbitMQ kuyruğu için bir Deployment belirtilir. triggers bölümünde, RabbitMQ kuyruğu için bir tetikleyici tanımlanır. Burada queueName, host, port, username, password ve connectionName gibi parametreler belirtilir.

Keda ile Ölçeklendirme Test Etme

Keda ile ölçeklendirmeyi test etmek için, öncelikle bir test senaryosu oluşturmanız gerekir. Örneğin, RabbitMQ kuyruğuna bazı mesajlar ekleyebilir ve Keda’nın bunları algılayarak pod’ların sayısını artırmasını sağlayabilirsiniz.

Bu senaryoyu gerçekleştirmek için, öncelikle bir RabbitMQ kuyruğu oluşturmanız gerekiyor. Daha sonra, bir ScaledObject oluşturarak RabbitMQ kuyruğunu Keda’ya bağlayabilirsiniz. Son olarak, kuyruğa bazı mesajlarÖrneğin, RabbitMQ kuyruğuna bazı mesajlar ekleyebilir ve Keda’nın bunları algılayarak pod’ların sayısını artırmasını sağlayabilirsiniz. Bu senaryoyu gerçekleştirmek için öncelikle bir RabbitMQ kuyruğu oluşturmanız gerekiyor. Daha sonra, bir ScaledObject oluşturarak RabbitMQ kuyruğunu Keda’ya bağlayabilirsiniz. Son olarak, kuyruğa bazı mesajlar ekleyerek Keda’nın ölçeklendirmeyi başarılı bir şekilde gerçekleştirdiğini gözlemleyebilirsiniz.

Keda, Kubernetes’in otomatik ölçeklendirme mekanizmalarını genişleterek daha akıllı ve verimli bir ölçeklendirme deneyimi sunar. Keda, birden fazla etkinlik kaynağını destekler ve kaynakları verimli bir şekilde kullanarak maliyeti düşürür. Ayrıca, performans ve kullanılabilirlik açısından da avantajlar sağlar. Keda’yı kurmak ve yapılandırmak oldukça basittir ve etkinlik odaklı uygulamalar için büyük bir avantaj sağlar.

Yorum yapın