Kubernetes'te KEDA ile Dinamik Ölçeklendirme: Olay Güdümlü Mükemmelliğe Ulaşın - BirCloud Blog
Bulut Bilişim

Kubernetes’te KEDA ile Dinamik Ölçeklendirme: Olay Güdümlü Mükemmelliğe Ulaşın

📖 7 dakika okuma süresi

Giriş

Günümüzün dinamik ve yoğun iş yüklerine sahip bulut ortamlarında, uygulamaların performansı ve maliyet etkinliği kritik öneme sahiptir. Kubernetes, konteyner orkestrasyonu için endüstri standardı haline gelmiş olsa da, otomatik ölçeklendirme konusunda bazı sınırlamaları bulunmaktadır. İşte bu noktada, KEDA (Kubernetes Event-Driven Autoscaling) devreye girerek, Kubernetes’in yeteneklerini genişletir ve olay güdümlü (event-driven) otomatik ölçeklendirme imkanı sunar. Bu yazıda, KEDA’nın ne olduğunu, avantajlarını, kullanım senaryolarını ve nasıl kurulup yapılandırılacağını detaylı bir şekilde inceleyeceğiz. Ayrıca, BirCloud’un bu alandaki uzmanlığını ve sunduğu çözümleri de ele alacağız.

KEDA Nedir?

KEDA, Kubernetes üzerinde çalışan uygulamaların, çeşitli olay kaynaklarına (event sources) bağlı olarak otomatik olarak ölçeklenmesini sağlayan açık kaynaklı bir projedir. Geleneksel Kubernetes Horizontal Pod Autoscaler (HPA), CPU veya bellek kullanımı gibi metriklerle çalışırken, KEDA, Kafka kuyruklarındaki mesaj sayısı, Azure Service Bus kuyruklarındaki ileti sayısı, Prometheus metrikleri gibi dış olay kaynaklarından gelen verileri kullanarak ölçeklendirme yapar. Bu sayede, uygulamalarınızın gerçek talebe göre dinamik olarak ölçeklenmesini ve kaynakların verimli kullanılmasını sağlar.

KEDA’nın Temel Bileşenleri

  • Scaler: Olay kaynağına (event source) bağlanarak metrikleri toplayan ve HPA’ya ölçeklendirme için gerekli bilgileri sağlayan bileşendir. KEDA, birçok popüler olay kaynağı için hazır scaler’lar sunar (Kafka, RabbitMQ, Azure Event Hubs, vb.) ve özel scaler’lar oluşturmanıza da olanak tanır.
  • Operator: Kubernetes kümesinde çalışan ve KEDA’nın özel kaynak tanımlarını (CRD’ler) yöneten bileşendir. ScaledObject ve ScaledJob gibi CRD’ler aracılığıyla, hangi uygulamanın hangi olay kaynağına göre nasıl ölçekleneceğini tanımlarsınız.

KEDA’nın Avantajları

KEDA’nın sunduğu avantajlar, Kubernetes ortamlarında uygulama ölçeklendirmesini daha akıllı, verimli ve maliyet etkin hale getirir:

  • Olay Güdümlü Ölçeklendirme: Uygulamalarınız, gerçek talep üzerine, olay kaynaklarından gelen verilere göre ölçeklenir. Bu, kaynak israfını önler ve performansı optimize eder.
  • Otomatik Ölçeklendirme: KEDA, uygulama ölçeklendirmesini tamamen otomatikleştirir. İnsan müdahalesine gerek kalmadan, uygulamalarınız talebe göre ölçeklenir ve ölçeği düşürülür.
  • Çeşitli Olay Kaynakları Desteği: KEDA, çok çeşitli olay kaynaklarını destekler. Kafka, RabbitMQ, Azure Event Hubs, Prometheus, AWS SQS gibi popüler olay kaynaklarına kolayca entegre olabilir ve özel scaler’lar oluşturarak diğer olay kaynaklarını da destekleyebilirsiniz.
  • Maliyet Optimizasyonu: KEDA, uygulama trafiği düşük olduğunda uygulamaları sıfıra (zero) kadar ölçeklendirebilir. Bu, kaynak maliyetlerini önemli ölçüde azaltır.
  • Kolay Entegrasyon: KEDA, Kubernetes ortamlarına kolayca entegre edilebilir. Helm chart’ları veya YAML dosyaları aracılığıyla kolayca kurulabilir ve yapılandırılabilir.

Kullanım Senaryoları

KEDA, çeşitli kullanım senaryolarında uygulama ölçeklendirmesini optimize etmek için kullanılabilir:

  • Mesaj Kuyruğu İşleme: Kafka, RabbitMQ veya Azure Service Bus gibi mesaj kuyruklarından gelen mesajları işleyen uygulamalar, KEDA ile kuyruktaki mesaj sayısına göre otomatik olarak ölçeklenebilir.
  • Zamanlanmış İşler (Cron Jobs): Belirli zaman aralıklarında çalışan işler (cron jobs), KEDA ile tetiklenebilir ve iş yüküne göre ölçeklenebilir.
  • Veritabanı İşlemleri: Veritabanı üzerindeki yükü izleyerek, KEDA ile veritabanı işlemlerini gerçekleştiren uygulamalar ölçeklenebilir. Örneğin, TiDB gibi dağıtık veritabanları ile KEDA entegrasyonu, performansı artırabilir.
  • Veri Akışı İşleme: Apache Kafka Streams gibi veri akışı işleme platformları, KEDA ile entegre edilerek, veri akışındaki değişikliklere göre otomatik olarak ölçeklenebilir.
  • Olay Güdümlü Sunucusuz (Serverless) Fonksiyonlar: KEDA, Knative gibi sunucusuz platformlarla birlikte kullanılarak, olay güdümlü sunucusuz fonksiyonların ölçeklendirilmesini sağlayabilir. WebAssembly ile sunucusuz uygulamalar geliştirirken de KEDA’dan faydalanılabilir.

Kurulum ve Başlangıç Rehberi

KEDA’yı Kubernetes kümenize kurmak ve kullanmaya başlamak oldukça basittir. Aşağıdaki adımları takip ederek KEDA’yı kurabilir ve bir örnek uygulama ile test edebilirsiniz:

Adım 1: KEDA’yı Kurulum

KEDA’yı kurmak için Helm kullanabilirsiniz. Öncelikle Helm’in kurulu olduğundan emin olun. Ardından aşağıdaki komutları kullanarak KEDA’yı kurun:

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’ine kurar. Kurulum tamamlandıktan sonra, KEDA operator’ünün çalıştığını doğrulayın:

kubectl get pods -n keda

Adım 2: Bir Örnek Uygulama Oluşturun

KEDA ile ölçeklenecek bir örnek uygulama oluşturalım. Bu örnekte, bir HTTP endpoint’ini dinleyen ve gelen istekleri işleyen basit bir uygulama kullanacağız. Uygulamanın Docker imajını oluşturun ve bir container registry’sine (Docker Hub, Azure Container Registry, vb.) yükleyin.

Adım 3: ScaledObject Tanımlayın

Uygulamanızın hangi olay kaynağına göre nasıl ölçekleneceğini tanımlamak için bir ScaledObject oluşturmanız gerekir. Aşağıdaki örnekte, Prometheus metriklerine göre ölçeklenen bir ScaledObject örneği verilmiştir:

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
 name: prometheus-scaledobject
 namespace: default
spec:
 scaleTargetRef:
 name: my-application
 replicas:
 min: 0
 max: 10
 scaledObjectPodTemplate:
 spec:
 containers:
 - image: your-docker-image:latest
 name: my-application
 triggers:
 - type: prometheus
 metadata:
 serverAddress: http://prometheus.default.svc.cluster.local:9090
 metricName: http_requests_total
 threshold: '100'
 query: sum(rate(http_requests_total[1m]))

Bu ScaledObject, `my-application` adlı deployment’ı, Prometheus üzerindeki `http_requests_total` metriğine göre ölçeklendirir. Metrik değeri 100’ü aştığında, uygulama otomatik olarak ölçeklenir. `min` ve `max` değerleri, uygulamanın minimum ve maksimum replica sayısını belirler.

Adım 4: ScaledObject’i Uygulayın

ScaledObject’i Kubernetes kümenize uygulayın:

kubectl apply -f scaledobject.yaml

Adım 5: Ölçeklendirmeyi Test Edin

Prometheus’a yük bindirerek, uygulamanın otomatik olarak ölçeklendiğini gözlemleyin. `kubectl get pods` komutu ile pod sayısını takip edebilirsiniz.

BirCloud Perspektifi

BirCloud olarak, müşterilerimize bulut bilişim çözümleri sunarken, KEDA gibi yenilikçi teknolojileri yakından takip ediyor ve müşterilerimizin ihtiyaçlarına uygun çözümler geliştiriyoruz. KEDA, Kubernetes ortamlarında uygulama ölçeklendirmesini optimize etmek ve maliyetleri düşürmek için güçlü bir araçtır. BirCloud’un uzman ekibi, KEDA’nın kurulumu, yapılandırılması ve yönetimi konusunda size destek olabilir. Ayrıca, Prometheus ve Grafana ile entegre izleme çözümleri sunarak, uygulama performansınızı gerçek zamanlı olarak takip etmenizi sağlıyoruz.

BirCloud, GitOps yaklaşımını benimseyerek, altyapı ve uygulama yönetimini otomatikleştirmenize yardımcı olur. KEDA’yı Argo CD gibi GitOps araçlarıyla entegre ederek, sürekli dağıtım süreçlerinizi daha verimli hale getirebilirsiniz.

Sonuç

KEDA, Kubernetes ortamlarında olay güdümlü otomatik ölçeklendirme için güçlü bir çözümdür. Uygulama performansını optimize etmek, maliyetleri düşürmek ve kaynakları verimli kullanmak isteyen işletmeler için idealdir. BirCloud olarak, KEDA ve diğer bulut bilişim teknolojileri konusundaki uzmanlığımızla, müşterilerimizin dijital dönüşüm süreçlerine destek olmaktan mutluluk duyarız. Daha fazla bilgi için bizimle iletişime geçebilirsiniz.

❓ Sık Sorulan Sorular

KEDA nedir ve ne işe yarar?

KEDA (Kubernetes Event-Driven Autoscaling), Kubernetes üzerinde çalışan uygulamaların, çeşitli olay kaynaklarına bağlı olarak otomatik olarak ölçeklenmesini sağlayan açık kaynaklı bir projedir. Bu sayede, uygulamalarınızın gerçek talebe göre dinamik olarak ölçeklenmesini ve kaynakların verimli kullanılmasını sağlar.

KEDA hangi olay kaynaklarını destekler?

KEDA, Kafka, RabbitMQ, Azure Event Hubs, Prometheus, AWS SQS gibi birçok popüler olay kaynağını destekler. Ayrıca, özel scaler'lar oluşturarak diğer olay kaynaklarını da destekleyebilirsiniz.

KEDA'nın maliyet optimizasyonu açısından avantajları nelerdir?

KEDA, uygulama trafiği düşük olduğunda uygulamaları sıfıra (zero) kadar ölçeklendirebilir. Bu, kaynak maliyetlerini önemli ölçüde azaltır.

KEDA'yı Kubernetes'e nasıl kurabilirim?

KEDA'yı kurmak için Helm kullanabilirsiniz. Helm chart'ları aracılığıyla kolayca kurabilir ve yapılandırabilirsiniz.

BirCloud, KEDA konusunda nasıl destek sağlayabilir?

BirCloud'un uzman ekibi, KEDA'nın kurulumu, yapılandırılması ve yönetimi konusunda size destek olabilir. Ayrıca, Prometheus ve Grafana ile entegre izleme çözümleri sunarak, uygulama performansınızı gerçek zamanlı olarak takip etmenizi sağlıyoruz.