📖 7 dakika okuma süresi
📋 İçindekiler
Giriş
Günümüzün dinamik iş yüklerinde, uygulamaların taleplere hızlı ve verimli bir şekilde yanıt vermesi kritik öneme sahiptir. Kubernetes, konteyner orkestrasyonu için güçlü bir platform sunarken, uygulama ölçeklendirmesi hala karmaşık bir konu olabilir. İşte burada KEDA (Kubernetes Event-driven Autoscaling) devreye giriyor. KEDA, Kubernetes üzerinde olay güdümlü otomatik ölçeklendirme sağlayarak, uygulamalarınızın yalnızca ihtiyaç duyulduğunda kaynak tüketmesini ve maliyetleri optimize etmenizi sağlar. Bu makalede, KEDA’nın ne olduğunu, nasıl çalıştığını, avantajlarını ve BirCloud’un bu alandaki uzmanlığını detaylı bir şekilde inceleyeceğiz.
KEDA Nedir?
KEDA, Kubernetes ortamlarında olay güdümlü otomatik ölçeklendirme (Event-Driven Autoscaling) sağlamak için tasarlanmış, açık kaynak kodlu bir çözümdür. Geleneksel Kubernetes Horizontal Pod Autoscaler (HPA) yalnızca CPU ve bellek kullanımına göre ölçeklendirme yaparken, KEDA, Kafka kuyrukları, RabbitMQ, Azure Service Bus gibi çeşitli olay kaynaklarından gelen metrikleri kullanarak daha akıllı ve esnek bir ölçeklendirme imkanı sunar. KEDA, uygulamalarınızın iş yüküne göre otomatik olarak ölçeklenmesini sağlayarak kaynak kullanımını optimize eder ve maliyetleri düşürür.
KEDA’nın Avantajları
- Olay Güdümlü Ölçeklendirme: KEDA, uygulamalarınızı gerçek zamanlı olaylara göre ölçeklendirir. Bu, uygulamalarınızın yalnızca ihtiyaç duyulduğunda kaynak tüketmesini sağlar ve maliyetleri düşürür.
- Çeşitli Olay Kaynakları Desteği: KEDA, Kafka, RabbitMQ, Azure Service Bus, Prometheus ve daha birçok olay kaynağını destekler. Bu sayede, farklı kaynaklardan gelen metrikleri kullanarak ölçeklendirme yapabilirsiniz. Prometheus ile Proaktif İzleme ve Anomali Tespiti yazımızda da bahsettiğimiz gibi, KEDA’nın bu özelliği, izleme sistemlerinizle entegre olarak anormalliklere hızlı yanıt vermenizi sağlar.
- Kolay Entegrasyon: KEDA, Kubernetes ile kolayca entegre olur ve mevcut uygulamalarınızda minimum değişiklik gerektirir.
- Otomatik Ölçeklendirme: KEDA, uygulamalarınızı otomatik olarak ölçeklendirir, böylece manuel müdahaleye gerek kalmaz.
- Maliyet Optimizasyonu: KEDA, kaynak kullanımını optimize ederek maliyetleri düşürür. Uygulamalarınız yalnızca ihtiyaç duyulduğunda kaynak tüketir, bu da bulut harcamalarınızı önemli ölçüde azaltır.
- Sunucusuz (Serverless) Yetenekleri: KEDA, Kubernetes üzerinde sunucusuz (serverless) işlevleri kolaylaştırır. Uygulamalarınız olaylara tepki olarak otomatik olarak başlatılır ve durdurulur. WebAssembly ile Sunucusuz (Serverless) Bulut Uygulamaları Geliştirme Rehberi yazımızda sunucusuz mimarilerin avantajlarından bahsetmiştik. KEDA, bu avantajları Kubernetes ortamınıza taşımanıza yardımcı olur.
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 gibi mesaj kuyruklarından gelen mesajları işleyen uygulamalarınızı KEDA ile ölçeklendirebilirsiniz. Mesaj sayısı arttıkça uygulama otomatik olarak ölçeklenir, azaldıkça ise kaynak tüketimi düşer.
- Veritabanı İşlemleri: Veritabanı işlemlerini gerçekleştiren uygulamalarınızı KEDA ile ölçeklendirebilirsiniz. Veritabanı yükü arttıkça uygulama otomatik olarak ölçeklenir. Kubernetes ile Otonom Veritabanı Yönetimi yazımızda, veritabanı operasyonlarını otomatikleştirmenin önemine değinmiştik. KEDA, bu otomasyonun bir parçası olarak veritabanı bağlantılı uygulamaların ölçeklenmesini sağlar.
- Zamanlanmış Görevler: Zamanlanmış görevleri gerçekleştiren uygulamalarınızı KEDA ile ölçeklendirebilirsiniz. Görevler başladığında uygulama otomatik olarak ölçeklenir, bittiğinde ise kaynak tüketimi düşer.
- IoT Uygulamaları: IoT cihazlarından gelen verileri işleyen uygulamalarınızı KEDA ile ölçeklendirebilirsiniz. Veri akışı arttıkça uygulama otomatik olarak ölçeklenir.
- Görüntü/Video İşleme: Görüntü veya video işleme uygulamalarında, işlenecek dosya sayısı arttıkça KEDA devreye girerek uygulama kaynaklarını otomatik olarak artırabilir.
Kurulum ve Başlangıç Rehberi
KEDA’yı Kubernetes kümenize kurmak oldukça basittir. Aşağıdaki adımları izleyerek KEDA’yı kurabilir ve kullanmaya başlayabilirsiniz:
Adım 1: KEDA’yı Kurulumu
Helm kullanarak KEDA’yı kurabilirsiniz. Öncelikle Helm’in kurulu olduğundan emin olun. Ardından aşağıdaki komutları çalıştırın:
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 kuracaktır.
Adım 2: ScaledObject Tanımlama
KEDA’nın ölçeklendirme yapabilmesi için bir `ScaledObject` tanımlamanız gerekir. `ScaledObject`, hangi olay kaynağını izleyeceğini ve hangi uygulamayı ölçeklendireceğini belirtir. Aşağıda bir Kafka kuyruğunu izleyen ve bir uygulamayı ölçeklendiren bir `ScaledObject` örneği verilmiştir:
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: kafka-scaledobject
namespace: default
spec:
scaleTargetRef:
name: my-application
triggers:
- type: kafka
metadata:
bootstrapServers: my-kafka-brokers:9092
topic: my-topic
consumerGroup: my-group
lagThreshold: "10"
Bu örnekte, `kafka-scaledobject` adlı bir `ScaledObject` tanımlanmıştır. Bu `ScaledObject`, `my-application` adlı uygulamayı ölçeklendirecek ve `my-topic` adlı Kafka kuyruğundaki gecikme (lag) 10’u aştığında uygulamayı ölçeklendirecektir.
Adım 3: Uygulamayı Dağıtma
`ScaledObject`’i tanımladıktan sonra, uygulamayı Kubernetes’e dağıtabilirsiniz. Uygulamanızın deployment’ı, `ScaledObject`’teki `scaleTargetRef` alanında belirtilen adla eşleşmelidir.
Örnek: Basit Bir HTTP Ölçeklendirme
Daha basit bir örnek olarak, bir HTTP endpoint’ine gelen istek sayısına göre ölçeklendirme yapalım. Bunun için Prometheus kullanacağız.
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: http-scaledobject
namespace: default
spec:
scaleTargetRef:
name: my-http-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 örnekte, KEDA `http_requests_total` metriğini izleyecek ve bu metrik 100’ü aştığında `my-http-application` uygulamasını ölçeklendirecektir.
BirCloud Perspektifi
BirCloud olarak, müşterilerimize en iyi bulut çözümlerini sunmayı hedefliyoruz. KEDA, Kubernetes ortamlarında uygulama ölçeklendirmesini optimize etmek için güçlü bir araçtır ve müşterilerimizin maliyetlerini düşürmelerine ve verimliliklerini artırmalarına yardımcı olabilir. Uzman ekibimiz, KEDA’nın kurulumu, yapılandırılması ve yönetimi konusunda size destek sağlayabilir. Ayrıca, Kubernetes’te eBPF ile Derinlemesine Ağ İzleme ve Güvenlik: BirCloud Uzmanlığı gibi diğer çözümlerimizle birlikte KEDA’yı kullanarak, uygulamanızın performansını ve güvenliğini en üst düzeye çıkarabilirsiniz.
BirCloud’un sunduğu çözümlerle işletmenizin bulut yolculuğunda size rehberlik etmekten memnuniyet duyarız. KEDA ve diğer Kubernetes çözümleri hakkında daha fazla bilgi edinmek için bizimle iletişime geçebilirsiniz.
Sonuç
KEDA, Kubernetes ortamlarında olay güdümlü uygulama ölçeklendirmesi için güçlü ve esnek bir çözümdür. Uygulamalarınızın yalnızca ihtiyaç duyulduğunda kaynak tüketmesini sağlayarak maliyetleri düşürür ve verimliliği artırır. Çeşitli olay kaynakları desteği, kolay entegrasyonu ve otomatik ölçeklendirme özellikleri sayesinde, KEDA, modern bulut uygulamaları için vazgeçilmez bir araçtır. BirCloud olarak, KEDA’nın kurulumu, yapılandırılması ve yönetimi konusunda size destek sağlayarak, uygulamanızın performansını ve verimliliğini en üst düzeye çıkarmanıza yardımcı olabiliriz.
❓ Sık Sorulan Sorular
KEDA nedir ve ne işe yarar?
KEDA, Kubernetes ortamlarında olay güdümlü otomatik ölçeklendirme (Event-Driven Autoscaling) sağlamak için tasarlanmış, açık kaynak kodlu bir çözümdür. Uygulamalarınızın yalnızca ihtiyaç duyulduğunda kaynak tüketmesini sağlar ve maliyetleri düşürür.
KEDA hangi olay kaynaklarını destekler?
KEDA, Kafka, RabbitMQ, Azure Service Bus, Prometheus ve daha birçok olay kaynağını destekler.
KEDA'yı Kubernetes'e nasıl kurabilirim?
Helm kullanarak KEDA'yı Kubernetes kümenize kolayca kurabilirsiniz. Helm repo'sunu ekleyip, KEDA chart'ını kurmanız yeterlidir.
ScaledObject nedir ve nasıl kullanılır?
ScaledObject, KEDA'nın ölçeklendirme yapabilmesi için tanımlanan bir Kubernetes kaynağıdır. Hangi olay kaynağını izleyeceğini ve hangi uygulamayı ölçeklendireceğini belirtir.
BirCloud, KEDA konusunda nasıl destek sağlayabilir?
BirCloud, KEDA'nın kurulumu, yapılandırılması ve yönetimi konusunda uzman desteği sağlar. Ayrıca, KEDA'yı diğer bulut çözümleriyle entegre ederek uygulamanızın performansını ve güvenliğini en üst düzeye çıkarmanıza yardımcı olur.



