KEDA ile Kubernetes'te Olay Odaklı Otomatik Ölçeklendirme: Derinlemesine İnceleme ve Uygulama Rehberi - BirCloud Blog
Bulut Bilişim

KEDA ile Kubernetes’te Olay Odaklı Otomatik Ölçeklendirme: Derinlemesine İnceleme ve Uygulama Rehberi

📖 8 dakika okuma süresi

Giriş

Kubernetes, modern uygulama geliştirme ve dağıtımının temel taşı haline geldi. Ancak, kaynak kullanımını optimize etmek ve uygulamaların talebe göre ölçeklenmesini sağlamak karmaşık bir süreç olabilir. İşte burada Kubernetes Event-driven Autoscaling (KEDA), yani Kubernetes Olay Odaklı Otomatik Ölçeklendirme devreye giriyor. KEDA, Kubernetes’teki uygulama dağıtımlarını, olay kaynaklarına (event sources) göre otomatik olarak ölçeklendiren açık kaynaklı bir projedir. Bu blog yazısında, 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 KEDA’yı kullanarak Kubernetes ortamınızı nasıl optimize edebileceğinizi de ele alacağız.

KEDA Nedir?

KEDA, Kubernetes kümelerinde çalışan uygulamaların ölçeklendirilmesini basitleştiren bir Kubernetes Operator’üdür. Geleneksel Horizontal Pod Autoscaler (HPA) yönteminden farklı olarak, KEDA, CPU veya bellek kullanımına ek olarak, dış olay kaynaklarından (örneğin, mesaj kuyrukları, veritabanları, bulut hizmetleri) gelen metrikleri de dikkate alır. Bu sayede, uygulamalarınız gerçek zamanlı talebe göre ölçeklenerek kaynak israfını önler ve performansı optimize eder.

KEDA, iki ana bileşenden oluşur:

  • Operator: Kubernetes kümenizde çalışan ve ScaledObject veya ScaledJob tanımlarını izleyen bir denetleyicidir. Bu tanımlar, hangi olay kaynağının izleneceğini ve ölçeklendirme davranışının nasıl olacağını belirtir.
  • Metrics Adapter: Olay kaynaklarından metrikleri toplayan ve Kubernetes Metrics API aracılığıyla HPA’ya sunan bir bileşendir. HPA, bu metrikleri kullanarak uygulama dağıtımlarını otomatik olarak ölçeklendirir.

KEDA’nın Avantajları

KEDA’nın sunduğu başlıca avantajlar şunlardır:

  • Olay Odaklı Ölçeklendirme: Uygulamalarınız, gerçek zamanlı olaylara tepki vererek otomatik olarak ölçeklenir. Bu, ani trafik artışlarında bile uygulamanızın performansını korur ve kullanıcı deneyimini iyileştirir.
  • Kaynak Optimizasyonu: KEDA, uygulamalarınızın yalnızca ihtiyaç duyduğu kadar kaynak kullanmasını sağlar. Bu sayede, altyapı maliyetlerinizi düşürebilir ve kaynaklarınızı daha verimli kullanabilirsiniz.
  • Basit Yapılandırma: KEDA, Kubernetes’e kolayca entegre edilebilir ve yapılandırılabilir. ScaledObject veya ScaledJob tanımları aracılığıyla ölçeklendirme davranışını basit bir şekilde belirleyebilirsiniz.
  • Geniş Olay Kaynağı Desteği: KEDA, çok çeşitli olay kaynaklarını destekler. Apache Kafka, RabbitMQ, Azure Service Bus, AWS SQS ve daha birçok olay kaynağından gelen metrikleri kullanarak uygulamalarınızı ölçeklendirebilirsiniz.
  • Sunucusuz (Serverless) İş Yükleri için İdeal: KEDA, sunucusuz iş yüklerini (örneğin, Azure Functions, Knative) Kubernetes üzerinde çalıştırmak için ideal bir çözümdür. Olay odaklı ölçeklendirme yetenekleri sayesinde, sunucusuz iş yüklerinizin talebe göre otomatik olarak ölçeklenmesini sağlar.

Kullanım Senaryoları

KEDA, çeşitli kullanım senaryolarında etkili bir şekilde uygulanabilir. İşte bazı örnekler:

  • Mesaj Kuyruğu İşleme: Bir mesaj kuyruğuna (örneğin, RabbitMQ, Kafka) yeni mesajlar eklendiğinde, KEDA, bu mesajları işlemek için uygulama dağıtımlarını otomatik olarak ölçeklendirir. Mesaj kuyruğu boşaldığında ise, dağıtımları tekrar küçültür.
  • Veritabanı İşlemleri: Bir veritabanında (örneğin, PostgreSQL, MySQL) yeni veriler eklendiğinde veya sorgu yükü arttığında, KEDA, veritabanı işlemlerini gerçekleştirmek için uygulama dağıtımlarını otomatik olarak ölçeklendirir.
  • Zamanlanmış İşlemler: Belirli zamanlarda çalışması gereken iş yükleri için KEDA, ScaledJob tanımını kullanarak bu iş yüklerini otomatik olarak başlatır ve tamamlandığında durdurur.
  • Gerçek Zamanlı Veri İşleme: Apache Kafka Streams gibi araçlarla gerçek zamanlı veri işleme yaparken, KEDA, veri akışındaki değişikliklere göre uygulama dağıtımlarını otomatik olarak ölçeklendirerek performansı optimize eder. Apache Kafka Streams ile Gerçek Zamanlı Veri İşleme ve Analizi: BirCloud Uzmanlığı yazımızda bu konuya daha detaylı değinmiştik.
  • E-ticaret Uygulamaları: E-ticaret sitelerinde, kampanya dönemlerinde veya özel günlerde trafik artışı yaşanabilir. KEDA, bu tür durumlarda uygulama dağıtımlarını otomatik olarak ölçeklendirerek sitenin performansını korur ve kullanıcıların sorunsuz bir alışveriş deneyimi yaşamasını sağlar.
  • Finans Uygulamaları: Finans uygulamalarında, hisse senedi fiyatlarındaki değişiklikler veya işlem hacmindeki artışlar gibi olaylar, uygulama yükünü artırabilir. KEDA, bu tür olaylara tepki vererek uygulama dağıtımlarını otomatik olarak ölçeklendirir ve finansal verilerin doğru ve hızlı bir şekilde işlenmesini sağlar.

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ı kolayca kurabilirsiniz:

Adım 1: KEDA’yı Kurulumu

KEDA’yı kurmak için Helm paket yöneticisini kullanabilirsiniz. Eğer Helm kurulu değilse, öncelikle Helm’i kurmanız gerekmektedir. Helm’i kurduktan sonra, aşağıdaki komutları kullanarak KEDA’yı Kubernetes kümenize kurabilirsiniz:


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. Kurulum tamamlandıktan sonra, KEDA pod’larının çalıştığını doğrulamak için aşağıdaki komutu kullanabilirsiniz:


kubectl get pods -n keda

Adım 2: ScaledObject Tanımı Oluşturma

KEDA’yı kullanarak bir uygulamayı ölçeklendirmek için, öncelikle bir ScaledObject tanımı oluşturmanız gerekmektedir. ScaledObject tanımı, hangi olay kaynağının izleneceğini ve ölçeklendirme davranışının nasıl olacağını belirtir. Aşağıda, RabbitMQ kuyruğundaki mesaj sayısına göre bir uygulamayı ölçeklendiren örnek bir ScaledObject tanımı bulunmaktadır:


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

Bu tanımda:

  • scaleTargetRef.name, ölçeklendirilecek uygulamanın adını belirtir.
  • triggers bölümü, hangi olay kaynağının izleneceğini ve ölçeklendirme eşik değerlerini belirtir. Bu örnekte, RabbitMQ kuyruğundaki mesaj sayısı 5’i geçtiğinde uygulama ölçeklenecektir.

Bu ScaledObject tanımını Kubernetes kümenize uygulamak için aşağıdaki komutu kullanabilirsiniz:


kubectl apply -f rabbitmq-scaledobject.yaml

Adım 3: Uygulamayı İzleme

ScaledObject tanımını uyguladıktan sonra, KEDA otomatik olarak uygulamayı izlemeye başlayacak ve olay kaynağındaki değişikliklere göre ölçeklendirme yapacaktır. Uygulamanın ölçeklendirme davranışını izlemek için aşağıdaki komutu kullanabilirsiniz:


kubectl get deployments my-application

Bu komut, uygulamanın mevcut replika sayısını ve diğer bilgileri gösterecektir. KEDA’nın ölçeklendirme yaptığına dair olayları görmek için aşağıdaki komutu kullanabilirsiniz:


kubectl get events

Bu adımları takip ederek KEDA’yı Kubernetes kümenize kurabilir ve uygulamalarınızı olay odaklı bir şekilde ölçeklendirebilirsiniz.

BirCloud Perspektifi

BirCloud olarak, müşterilerimize bulut bilişim çözümleri sunarken, performans, maliyet optimizasyonu ve güvenlik gibi faktörleri göz önünde bulunduruyoruz. KEDA, Kubernetes ortamlarında çalışan uygulamaların ölçeklendirilmesini optimize etmek için güçlü bir araçtır. Müşterilerimize KEDA’yı önererek, uygulamalarının gerçek zamanlı talebe göre ölçeklenmesini, kaynak israfını önlemesini ve altyapı maliyetlerini düşürmesini sağlıyoruz.

BirCloud’un uzman ekibi, KEDA’nın kurulumu, yapılandırılması ve yönetimi konusunda deneyimlidir. Müşterilerimize KEDA’yı en iyi şekilde kullanmaları için danışmanlık, eğitim ve destek hizmetleri sunuyoruz. Ayrıca, Kubernetes Küme Performansını İzleme: Prometheus ve Grafana ile Derinlemesine Analiz yazımızda bahsettiğimiz gibi, Prometheus ve Grafana gibi araçlarla KEDA’nın performansını izleyerek, ölçeklendirme davranışını daha da optimize ediyoruz. Ayrıca, Argo CD ile GitOps Tabanlı Sürekli Dağıtım Stratejileri: Derinlemesine İnceleme ve En İyi Uygulamalar yazımızdaki gibi GitOps prensiplerini uygulayarak KEDA yapılandırmalarını yönetmek, altyapı yönetimini daha güvenilir ve tekrarlanabilir hale getirir.

Sonuç

KEDA, Kubernetes’te olay odaklı otomatik ölçeklendirme için güçlü ve esnek bir çözümdür. Uygulamalarınızın gerçek zamanlı talebe göre ölçeklenmesini sağlayarak performansı optimize eder, kaynak israfını önler ve altyapı maliyetlerini düşürür. BirCloud olarak, müşterilerimize KEDA’yı önererek, Kubernetes ortamlarını en iyi şekilde kullanmalarına yardımcı oluyoruz. KEDA’yı kullanarak Kubernetes kümelerinizde daha verimli, ölçeklenebilir ve maliyet-etkin uygulamalar çalıştırabilirsiniz.

❓ Sık Sorulan Sorular

KEDA nedir?

KEDA, Kubernetes'te olay odaklı otomatik ölçeklendirme sağlayan bir Kubernetes Operator'üdür. Uygulamaları, olay kaynaklarından gelen metrikleri kullanarak otomatik olarak ölçeklendirir.

KEDA'nın avantajları nelerdir?

KEDA'nın avantajları arasında olay odaklı ölçeklendirme, kaynak optimizasyonu, basit yapılandırma, geniş olay kaynağı desteği ve sunucusuz iş yükleri için ideal olması yer alır.

KEDA hangi olay kaynaklarını destekler?

KEDA, Apache Kafka, RabbitMQ, Azure Service Bus, AWS SQS gibi çok çeşitli olay kaynaklarını destekler.

KEDA nasıl kurulur?

KEDA, Helm paket yöneticisi kullanılarak kolayca kurulabilir. Helm repo eklenir, güncellenir ve ardından KEDA chart'ı kurulur.

BirCloud KEDA konusunda nasıl yardımcı olabilir?

BirCloud, KEDA'nın kurulumu, yapılandırılması ve yönetimi konusunda danışmanlık, eğitim ve destek hizmetleri sunar. Ayrıca, KEDA'nın performansını izlemek ve ölçeklendirme davranışını optimize etmek için çözümler sunar.