KEDA ile Kubernetes'te Olay Odaklı Otomatik Ölçeklendirme: Uygulamalarınızı Dinamik Hale Getirin - BirCloud Blog
Bulut Bilişim

KEDA ile Kubernetes’te Olay Odaklı Otomatik Ölçeklendirme: Uygulamalarınızı Dinamik Hale Getirin

📖 8 dakika okuma süresi

Giriş

Günümüzün dinamik ve talep odaklı dünyasında, uygulamaların değişen iş yüklerine hızlı ve verimli bir şekilde uyum sağlaması kritik öneme sahiptir. Kubernetes, container orkestrasyonu için endüstri standardı haline gelirken, otomatik ölçeklendirme yetenekleri uygulama performansını optimize etmek ve kaynak kullanımını en üst düzeye çıkarmak için hayati bir rol oynamaktadır. İşte tam bu noktada KEDA (Kubernetes Event-driven Autoscaling) devreye giriyor. KEDA, Kubernetes’teki uygulamaların olay odaklı otomatik ölçeklendirilmesini sağlayarak, geliştiricilere ve operatörlere daha esnek, verimli ve maliyet tasarrufu sağlayan bir çözüm sunar.

Bu blog yazısında, KEDA’nın ne olduğunu, nasıl çalıştığını, avantajlarını, kullanım senaryolarını ve nasıl kurulup kullanılacağını detaylı bir şekilde inceleyeceğiz. Ayrıca, BirCloud olarak KEDA konusundaki uzmanlığımızı ve bu teknolojiyi kullanarak müşterilerimize nasıl değer sağladığımızı da ele alacağız. Kubernetes’te sürekli dağıtım stratejileri için GitOps ve Argo CD yaklaşımını da inceleyebilirsiniz.

KEDA Nedir?

KEDA, Kubernetes ortamlarında olay güdümlü otomatik ölçeklendirme (event-driven autoscaling) için tasarlanmış, açık kaynaklı bir projedir. Temel amacı, Kubernetes’teki uygulamaların, gelen olaylara (events) veya metrik değerlerine göre otomatik olarak ölçeklenmesini sağlamaktır. Geleneksel Kubernetes Horizontal Pod Autoscaler (HPA) çözümlerinden farklı olarak KEDA, CPU veya bellek kullanımına ek olarak, Kafka kuyruklarındaki mesaj sayısı, Redis listelerindeki öğe sayısı veya CloudWatch metrikleri gibi çeşitli harici metrikleri de dikkate alabilir.

KEDA, Kubernetes üzerinde çalışan mevcut uygulamalara kolayca entegre edilebilir ve herhangi bir kod değişikliği gerektirmez. Bu, KEDA’yı mevcut altyapılarına minimal bir çabayla otomatik ölçeklendirme yetenekleri eklemek isteyen kuruluşlar için cazip bir seçenek haline getirir. Ayrıca, KEDA’nın açık kaynaklı olması, topluluk desteği ve sürekli geliştirme avantajlarını da beraberinde getirir.

KEDA Nasıl Çalışır?

KEDA’nın çalışma prensibi oldukça basittir. KEDA, Kubernetes kümenizde bir dizi özel kaynak tanımı (Custom Resource Definitions – CRDs) ve operatörler aracılığıyla çalışır. Temel olarak iki ana bileşenden oluşur:

  • KEDA Operator: KEDA operatörü, Kubernetes kümenizdeki özel kaynak tanımlarını (ScaledObject veya ScaledJob) izler ve bunlara göre ölçeklendirme işlemlerini gerçekleştirir.
  • KEDA Metrics Adapter: KEDA metrik adaptörü, harici sistemlerden (Kafka, Redis, vb.) metrikleri toplar ve Kubernetes HPA’ya sunar. HPA daha sonra bu metrikleri kullanarak uygulamalarınızın ölçeklendirme kararlarını verir.

Ölçeklendirme işlemi şu şekilde gerçekleşir:

  1. Bir kullanıcı, bir uygulamayı otomatik olarak ölçeklendirmek için bir `ScaledObject` veya `ScaledJob` kaynağı oluşturur. Bu kaynak, uygulamanın hangi metrik değerlerine göre ölçekleneceğini (örneğin, Kafka kuyruğundaki mesaj sayısı) ve ölçeklendirme davranışını (örneğin, minimum ve maksimum kopya sayısı) belirtir.
  2. KEDA operatörü, `ScaledObject` veya `ScaledJob` kaynağını algılar ve metrik adaptörünü yapılandırır.
  3. Metrik adaptörü, belirtilen harici sistemden metrikleri toplamaya başlar.
  4. HPA, metrik adaptöründen metrikleri alır ve uygulamanın mevcut yükünü değerlendirir.
  5. HPA, uygulamanın yüküne göre kopya sayısını artırır veya azaltır.

Bu süreç, uygulamalarınızın gelen olaylara veya metrik değerlerine göre otomatik olarak ölçeklenmesini sağlar. KEDA, uygulamanızın trafiği düşük olduğunda kopya sayısını sıfıra indirebilir (scale to zero), böylece kaynak kullanımını optimize eder ve maliyetleri düşürür.

KEDA’nın Avantajları

KEDA’nın Kubernetes ortamlarında olay güdümlü otomatik ölçeklendirme için sunduğu birçok avantaj bulunmaktadır:

  • Olay Odaklı Ölçeklendirme: KEDA, CPU ve bellek kullanımının ötesinde, çeşitli harici metrikleri dikkate alarak daha akıllı ve verimli ölçeklendirme kararları verir.
  • Scale to Zero: KEDA, uygulamanızın trafiği düşük olduğunda kopya sayısını sıfıra indirebilir, bu da kaynak kullanımını önemli ölçüde azaltır ve maliyetleri düşürür.
  • Kolay Entegrasyon: KEDA, mevcut Kubernetes uygulamalarına kolayca entegre edilebilir ve herhangi bir kod değişikliği gerektirmez.
  • Geniş Ölçekleyici Desteği: KEDA, Kafka, Redis, RabbitMQ, Azure Queues, AWS SQS ve daha birçok popüler olay kaynağı için yerleşik ölçekleyici desteği sunar.
  • Açık Kaynak: KEDA, açık kaynaklı bir proje olduğu için topluluk desteği ve sürekli geliştirme avantajlarına sahiptir.
  • Maliyet Tasarrufu: Kaynak kullanımını optimize ederek ve gereksiz kaynak tüketimini engelleyerek maliyetleri düşürür.

KEDA, bulut tabanlı uygulamalarınızın verimliliğini ve performansını artırmak için güçlü bir araçtır. Bulut Native uygulamalar için Cilium Service Mesh ve eBPF ile sıfır güven yaklaşımını da inceleyebilirsiniz.

Kullanım Senaryoları

KEDA, çeşitli kullanım senaryolarında etkili bir şekilde kullanılabilir:

  • Mesaj Kuyruğu İşleme: Kafka, RabbitMQ veya Azure Queues gibi mesaj kuyruklarından gelen mesajları işleyen uygulamaları otomatik olarak ölçeklendirmek için idealdir.
  • Zamanlanmış Görevler: Belirli zamanlarda veya aralıklarla çalışan görevleri (cron jobs) otomatik olarak ölçeklendirmek için kullanılabilir.
  • Veri İşleme: Veri akışlarını işleyen uygulamaları (örneğin, Apache Spark veya Apache Flink) otomatik olarak ölçeklendirmek için uygundur.
  • Web Uygulamaları: Yüksek trafik dönemlerinde web uygulamalarını otomatik olarak ölçeklendirmek için kullanılabilir (ancak bu senaryoda geleneksel HPA daha uygun olabilir).
  • IoT Uygulamaları: IoT cihazlarından gelen verileri işleyen uygulamaları otomatik olarak ölçeklendirmek için idealdir.

Örneğin, bir e-ticaret platformunda, siparişleri işleyen bir mikroservis KEDA ile Kafka kuyruğundaki sipariş sayısına göre otomatik olarak ölçeklendirilebilir. Bu, yoğun kampanya dönemlerinde siparişlerin hızlı ve verimli bir şekilde işlenmesini sağlar.

Kurulum ve Başlangıç Rehberi

KEDA’yı Kubernetes kümenize kurmak oldukça basittir. Aşağıdaki adımları takip ederek 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ı tek bir komutla kurmanızı sağlar.
  2. helm repo add kedacore https://kedacore.github.io/charts
    helm repo update
    helm install keda kedacore/keda --namespace keda --create-namespace

  3. YAML ile Kurulum: Alternatif olarak, KEDA’yı YAML dosyaları aracılığıyla da kurabilirsiniz. KEDA’nın resmi web sitesinden YAML dosyalarını indirebilir ve `kubectl apply -f .yaml` komutuyla kurabilirsiniz.

Kurulum tamamlandıktan sonra, bir `ScaledObject` veya `ScaledJob` kaynağı oluşturarak uygulamanızı otomatik olarak ölçeklendirmeye başlayabilirsiniz. Örneğin, aşağıdaki YAML dosyası bir Kafka kuyruğundaki mesaj sayısına göre bir uygulamayı otomatik olarak ölçeklendirmek için kullanılabilir:

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
 name: kafka-scaledobject
 namespace: default
spec:
 scaleTargetRef:
 name: my-app
 replicas:
 min: 0
 max: 10
 scaledObjectPollingInterval: 5
 cooldownPeriod: 300
 triggers:
 - type: kafka
 metadata:
 bootstrapServers: my-kafka-brokers:9092
 topic: my-topic
 consumerGroup: my-group
 lagThreshold: '5'

Bu örnekte, `my-app` adlı bir uygulama, `my-topic` adlı Kafka kuyruğundaki gecikme (lag) değeri 5’i aştığında otomatik olarak ölçeklenecektir. Uygulamanın minimum kopya sayısı 0, maksimum kopya sayısı ise 10 olarak belirlenmiştir.

KEDA ile Kubernetes üzerinde olay güdümlü uygulama ölçeklendirme konusunda daha fazla bilgi edinmek için BirCloud’un uzmanlığıyla hazırlanan makaleyi inceleyebilirsiniz.

BirCloud Perspektifi

BirCloud olarak, müşterilerimize en iyi bulut çözümlerini sunmaya odaklanıyoruz. KEDA, Kubernetes ortamlarında otomatik ölçeklendirme için sunduğu esneklik, verimlilik ve maliyet tasarrufu avantajlarıyla, müşterilerimizin bulut altyapılarını optimize etmelerine yardımcı olan önemli bir araçtır. KEDA’nın sunduğu olanakları kullanarak, müşterilerimizin uygulamalarını daha dinamik, ölçeklenebilir ve güvenilir hale getirmelerine yardımcı oluyoruz.

Uzman ekibimiz, KEDA’nın kurulumu, yapılandırılması ve yönetimi konusunda derinlemesine bilgi ve deneyime sahiptir. Müşterilerimize, KEDA’yı kendi özel ihtiyaçlarına göre uyarlamalarına ve en iyi sonuçları elde etmelerine yardımcı oluyoruz. Ayrıca, KEDA ile entegre olabilen diğer bulut teknolojileri (örneğin, Prometheus ile proaktif izleme ve anomali tespiti – Prometheus ile Proaktif İzleme ve Anomali Tespiti) konusunda da uzmanlığımızı sunuyoruz.

Sonuç

KEDA, Kubernetes ortamlarında olay güdümlü otomatik ölçeklendirme için güçlü ve esnek bir çözümdür. Uygulamalarınızın performansını optimize etmek, kaynak kullanımını en üst düzeye çıkarmak ve maliyetleri düşürmek istiyorsanız, KEDA’yı mutlaka değerlendirmelisiniz. BirCloud olarak, KEDA konusundaki uzmanlığımızla size yardımcı olmaktan memnuniyet duyarız. Uygulamalarınızı dinamik hale getirin ve bulut bilişimin gücünden en iyi şekilde yararlanın!

❓ Sık Sorulan Sorular

KEDA nedir?

KEDA, Kubernetes'te olay güdümlü otomatik ölçeklendirme sağlayan, açık kaynaklı bir projedir.

KEDA'nın avantajları nelerdir?

Olay odaklı ölçeklendirme, scale to zero, kolay entegrasyon, geniş ölçekleyici desteği, açık kaynak ve maliyet tasarrufu gibi avantajlar sunar.

KEDA hangi kullanım senaryolarında kullanılabilir?

Mesaj kuyruğu işleme, zamanlanmış görevler, veri işleme, web uygulamaları ve IoT uygulamaları gibi çeşitli senaryolarda kullanılabilir.

KEDA nasıl kurulur?

Helm veya YAML dosyaları aracılığıyla Kubernetes kümenize kolayca kurabilirsiniz.

KEDA ile hangi metrikler kullanılarak ölçeklendirme yapılabilir?

Kafka kuyruklarındaki mesaj sayısı, Redis listelerindeki öğe sayısı, Azure Queues uzunluğu gibi birçok metrik kullanılabilir.