KEDA ile Kubernetes'te Event-Driven Otomatik Ölçeklendirme: Detaylı Kılavuz ve En İyi Uygulamalar - BirCloud Blog
Bulut Bilişim

KEDA ile Kubernetes’te Event-Driven Otomatik Ölçeklendirme: Detaylı Kılavuz ve En İyi Uygulamalar

📖 7 dakika okuma süresi

Giriş

Modern bulut tabanlı uygulamaların en önemli gereksinimlerinden biri, değişen iş yüklerine hızlı ve etkili bir şekilde uyum sağlayabilmektir. Kubernetes, container orkestrasyonu için endüstri standardı haline gelirken, otomatik ölçeklendirme yetenekleri de kritik bir rol oynamaktadır. İşte tam bu noktada, Kubernetes Event-driven Autoscaling (KEDA) devreye giriyor. KEDA, Kubernetes’teki uygulamaların olay güdümlü bir şekilde otomatik olarak ölçeklenmesini sağlayarak, kaynak kullanımını optimize eder ve maliyetleri düşürür.

Bu yazıda, KEDA’nın ne olduğunu, nasıl çalıştığını, avantajlarını, kullanım senaryolarını ve Kubernetes ortamında nasıl kurulup yapılandırılacağını detaylı bir şekilde inceleyeceğiz. Ayrıca, BirCloud’un bulut çözümleri uzmanlığıyla KEDA’nın sunduğu faydaları nasıl en üst düzeye çıkarabileceğinizi de ele alacağız.

KEDA Nedir?

Kubernetes Event-driven Autoscaling (KEDA), Kubernetes ortamındaki uygulamaların olay güdümlü bir şekilde otomatik olarak ölçeklenmesini sağlayan açık kaynaklı bir projedir. Geleneksel Horizontal Pod Autoscaler (HPA) gibi metrik tabanlı ölçeklendirme yöntemlerine alternatif olarak, KEDA, harici olay kaynaklarından (message queue, veritabanı, bulut servisleri vb.) gelen metrikleri kullanarak uygulama ölçeklendirmesini tetikler. Bu sayede, uygulamalar yalnızca ihtiyaç duydukları kaynakları kullanır ve gereksiz maliyetlerden kaçınılır.

KEDA, Kubernetes’in yeteneklerini genişleten bir Kubernetes operatörü olarak çalışır. Özel kaynak tanımları (Custom Resource Definitions – CRDs) aracılığıyla ölçeklendirme kurallarını tanımlamanıza olanak tanır. KEDA, uygulamanızın olay kaynaklarını sürekli olarak izler ve belirli bir eşik değerine ulaşıldığında pod sayısını otomatik olarak artırır veya azaltır.

KEDA’nın Avantajları

  • Olay Güdümlü Ölçeklendirme: KEDA, uygulamaların gerçek zamanlı olaylara tepki vererek ölçeklenmesini sağlar. Bu, özellikle yoğun trafik dönemlerinde veya ani yük artışlarında uygulamanın performansını korumak için önemlidir.
  • Kaynak Optimizasyonu: KEDA, uygulamaların yalnızca ihtiyaç duydukları kaynakları kullanmasını sağlayarak, kaynak israfını önler ve maliyetleri düşürür. Uygulamalarınızın ölçeği, iş yüküne göre dinamik olarak ayarlanır.
  • Kolay Entegrasyon: KEDA, çeşitli olay kaynaklarıyla (Apache Kafka, RabbitMQ, Azure Event Hubs, AWS SQS vb.) kolayca entegre olabilir. Bu, mevcut altyapınıza KEDA’yı entegre etmeyi kolaylaştırır. NATS ile Yüksek Performanslı Mesajlaşma Altyapısı Kurmak yazımızda farklı mesajlaşma sistemleri hakkında bilgi bulabilirsiniz.
  • Otomatik Ölçeklendirme: KEDA, manuel müdahale olmadan uygulamaların otomatik olarak ölçeklenmesini sağlar. Bu, operasyonel yükü azaltır ve ekiplerin daha stratejik görevlere odaklanmasına olanak tanır.
  • Açık Kaynak: KEDA, açık kaynaklı bir proje olduğu için, topluluk tarafından desteklenir ve sürekli olarak geliştirilir. Bu, KEDA’nın güvenilir ve yenilikçi bir çözüm olmasını sağlar.

Kullanım Senaryoları

  • Mesaj Kuyruğu İşleme: Uygulamalarınız, mesaj kuyruğundan gelen mesajları işliyorsa, KEDA, kuyruktaki mesaj sayısına göre uygulama ölçeğini otomatik olarak ayarlayabilir.
  • Veritabanı İşlemleri: Uygulamalarınız, veritabanı işlemlerini gerçekleştiriyorsa, KEDA, veritabanındaki yük durumuna göre uygulama ölçeğini otomatik olarak ayarlayabilir. TiDB: Dağıtık ve Ölçeklenebilir HTAP Veritabanı ile Veri Yönetiminde Yeni Bir Çağ yazımızda veritabanı çözümleri hakkında daha fazla bilgi bulabilirsiniz.
  • Bulut Servisleri: Uygulamalarınız, bulut servislerini kullanıyorsa, KEDA, bu servislerin yük durumuna göre uygulama ölçeğini otomatik olarak ayarlayabilir.
  • Zamanlanmış Görevler: Uygulamalarınız, belirli zamanlarda yoğun işlem gerektiren görevler gerçekleştiriyorsa, KEDA, bu görevlerin başlangıcında uygulama ölçeğini otomatik olarak artırabilir ve bitiminde azaltabilir.

Kurulum ve Başlangıç Rehberi

KEDA’yı Kubernetes ortamına kurmak oldukça basittir. Aşağıdaki adımları izleyerek KEDA’yı kolayca kurabilirsiniz:

1. Helm ile Kurulum

KEDA’yı kurmanın en kolay yolu Helm kullanmaktır. Helm, Kubernetes için bir paket yöneticisidir ve KEDA’yı kolayca kurmanıza ve yönetmenize olanak tanır.


helm repo add kedacore https://kedacore.github.io/charts
helm repo update
helm install keda kedacore/keda --namespace keda --create-namespace

Bu komutlar, KEDA’yı `keda` namespace’i altında kurar. Kurulumun başarılı olup olmadığını aşağıdaki komutla kontrol edebilirsiniz:


kubectl get pods -n keda

2. Ölçeklenebilir Kaynak (ScaledObject) Tanımlama

KEDA’nın uygulamanızı nasıl ölçeklendireceğini tanımlamak için bir `ScaledObject` kaynağı oluşturmanız gerekir. `ScaledObject`, uygulamanızın hangi olay kaynağını izleyeceğini ve hangi ölçeklendirme kurallarını uygulayacağını belirtir.

Örneğin, RabbitMQ kuyruğundaki mesaj sayısına göre bir uygulamayı ölçeklendirmek için aşağıdaki gibi bir `ScaledObject` tanımlayabilirsiniz:


apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: rabbitmq-scaledobject
  namespace: default
spec:
  scaleTargetRef:
    name: my-application
  triggers:
  - type: rabbitmq
    metadata:
      host: amqp://guest:guest@rabbitmq-service:5672/
      queueName: my-queue
      queueLength: '50'

Bu `ScaledObject`, `my-application` adlı deployment’ı ölçeklendirecek ve `my-queue` adlı RabbitMQ kuyruğundaki mesaj sayısı 50’yi aştığında pod sayısını artıracaktır.

3. Uygulama Dağıtımı (Deployment)

KEDA’nın ölçeklendireceği uygulamayı Kubernetes’e dağıtmanız gerekir. Bu, geleneksel bir Kubernetes `Deployment` kaynağı kullanılarak yapılır.


apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-application
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-application
  template:
    metadata:
      labels:
        app: my-application
    spec:
      containers:
      - name: my-application
        image: my-application-image:latest

Bu `Deployment`, `my-application` adlı bir pod’u çalıştırır. KEDA, bu deployment’ı izleyecek ve `ScaledObject`’ta tanımlanan kurallara göre pod sayısını otomatik olarak ayarlayacaktır.

BirCloud Perspektifi

BirCloud olarak, müşterilerimize bulut tabanlı uygulamaların verimliliğini ve maliyet etkinliğini artırmak için KEDA’yı şiddetle tavsiye ediyoruz. KEDA, Kubernetes ortamındaki uygulamaların olay güdümlü bir şekilde otomatik olarak ölçeklenmesini sağlayarak, kaynak kullanımını optimize eder ve maliyetleri düşürür. Kubernetes Operatörleri ile Durumsal Uygulama Yönetimi: BirCloud Uzmanlığı yazımızda Kubernetes operatörleri ile uygulama yönetimi hakkında daha fazla bilgi bulabilirsiniz.

BirCloud’un bulut çözümleri uzmanlığıyla, müşterilerimize KEDA’yı en iyi şekilde kullanmaları için destek sağlıyoruz. KEDA kurulumu, yapılandırması ve yönetimi konusunda deneyimli ekibimiz, müşterilerimizin ihtiyaçlarına uygun çözümler sunar.

Ayrıca, BirCloud olarak, müşterilerimize KEDA ile birlikte kullanabilecekleri diğer bulut tabanlı teknolojiler konusunda da danışmanlık hizmeti veriyoruz. Örneğin, GitOps ve Argo CD ile Güvenli ve Ölçeklenebilir Sürekli Dağıtım gibi sürekli dağıtım araçlarıyla KEDA’yı entegre ederek, uygulama geliştirme ve dağıtım süreçlerini daha da optimize edebilirsiniz.

Sonuç

KEDA, Kubernetes ortamındaki uygulamaların olay güdümlü bir şekilde otomatik olarak ölçeklenmesini sağlayan güçlü ve esnek bir çözümdür. Kaynak kullanımını optimize ederek, maliyetleri düşürür ve uygulama performansını artırır. BirCloud’un bulut çözümleri uzmanlığıyla, KEDA’nın sunduğu faydaları en üst düzeye çıkarabilir ve bulut tabanlı uygulamalarınızın verimliliğini artırabilirsiniz.

Umarız bu yazı, KEDA’nın ne olduğunu, nasıl çalıştığını ve Kubernetes ortamında nasıl kullanılabileceğini anlamanıza yardımcı olmuştur. KEDA ile ilgili daha fazla bilgi edinmek veya BirCloud’un bulut çözümleri hakkında daha fazla bilgi almak için bizimle iletişime geçmekten çekinmeyin.

❓ Sık Sorulan Sorular

KEDA nedir ve ne işe yarar?

KEDA, Kubernetes ortamında olay güdümlü otomatik ölçeklendirme sağlayan bir araçtır. Uygulamaların harici olay kaynaklarına tepki vererek ölçeklenmesini sağlar.

KEDA'nın avantajları nelerdir?

KEDA'nın avantajları arasında kaynak optimizasyonu, olay güdümlü ölçeklendirme, kolay entegrasyon, otomatik ölçeklendirme ve açık kaynaklı olması yer alır.

KEDA hangi olay kaynaklarıyla entegre olabilir?

KEDA, Apache Kafka, RabbitMQ, Azure Event Hubs, AWS SQS gibi çeşitli olay kaynaklarıyla entegre olabilir.

KEDA nasıl kurulur?

KEDA, Helm kullanılarak kolayca kurulabilir. Helm, Kubernetes için bir paket yöneticisidir ve KEDA'yı kurmanıza ve yönetmenize olanak tanır.

ScaledObject nedir?

ScaledObject, KEDA'nın uygulamanızı nasıl ölçeklendireceğini tanımlamak için kullanılan bir Kubernetes kaynağıdır. Hangi olay kaynağını izleyeceğini ve hangi ölçeklendirme kurallarını uygulayacağını belirtir.