KEDA ile Kubernetes Etkinlik Tabanlı Uygulama Ölçeklendirme: Derinlemesine İnceleme ve En İyi Uygulamalar - BirCloud Blog
Bulut Bilişim

KEDA ile Kubernetes Etkinlik Tabanlı Uygulama Ölçeklendirme: Derinlemesine İnceleme ve En İyi Uygulamalar

📖 7 dakika okuma süresi

Giriş

Günümüzün dinamik ve talepkar uygulama ortamlarında, kaynak kullanımını optimize etmek ve performansı en üst düzeye çıkarmak kritik öneme sahiptir. Kubernetes, container orkestrasyonu için endüstri standardı haline gelirken, uygulamaların otomatik olarak ölçeklenmesi ihtiyacı da artmaktadır. İşte burada KEDA (Kubernetes Event-driven Autoscaling) devreye giriyor. Bu yazımızda, KEDA’nın ne olduğunu, nasıl çalıştığını, avantajlarını ve kullanım senaryolarını detaylı bir şekilde inceleyeceğiz. Ayrıca, KEDA’yı kurma ve yapılandırma adımlarını da adım adım anlatarak, bu güçlü aracı kendi Kubernetes ortamınızda nasıl kullanabileceğinizi göstereceğiz.

KEDA Nedir?

KEDA, Kubernetes’te olay güdümlü otomatik ölçeklendirme (event-driven autoscaling) sağlayan açık kaynaklı bir projedir. Temel amacı, Kubernetes uygulamalarının, gelen olaylara (events) tepki olarak otomatik olarak ölçeklenmesini sağlamaktır. Bu, geleneksel CPU veya bellek kullanımına dayalı ölçeklendirme yöntemlerinden farklıdır. KEDA, uygulamaların gerçek iş yüküne göre ölçeklenmesini sağlayarak kaynak kullanımını optimize eder ve maliyetleri düşürür.

KEDA, Kubernetes’in Horizontal Pod Autoscaler (HPA) mekanizmasını genişletir. HPA, CPU veya bellek kullanımına göre pod sayısını otomatik olarak ayarlar. KEDA ise, bu ölçeklendirme sürecini, mesaj kuyrukları, veritabanları, bulut hizmetleri ve diğer olay kaynaklarından gelen metriklerle entegre ederek daha akıllı ve verimli hale getirir. Bu sayede, uygulamalar sadece ihtiyaç duyulduğunda ölçeklenir, gereksiz kaynak tüketimi önlenir.

KEDA’nın Avantajları

  • Verimlilik: KEDA, uygulamaların sadece ihtiyaç duyulduğunda ölçeklenmesini sağlayarak kaynak kullanımını optimize eder. Uygulamalar, olay olmadığında sıfıra kadar ölçeklenebilir, bu da önemli ölçüde maliyet tasarrufu sağlar.
  • Performans: KEDA, uygulamaların gelen olaylara hızlı bir şekilde tepki vermesini sağlar. Bu, özellikle yoğun trafik dönemlerinde uygulamanın performansını artırır ve kullanıcı deneyimini iyileştirir.
  • Esneklik: KEDA, çok çeşitli olay kaynaklarını destekler. Mesaj kuyrukları (Kafka, RabbitMQ, Azure Service Bus), veritabanları (MySQL, PostgreSQL, Redis), bulut hizmetleri (Azure Monitor, AWS CloudWatch) ve daha birçok farklı kaynaktan gelen metriklerle entegre olabilir.
  • Kolay Kullanım: KEDA, Kubernetes ile sorunsuz bir şekilde entegre olur ve kullanımı kolaydır. YAML tabanlı yapılandırma dosyalarıyla ölçeklendirme kurallarını tanımlamak basittir.
  • Açık Kaynak: KEDA, açık kaynaklı bir projedir ve geniş bir topluluk tarafından desteklenmektedir. Bu, sürekli gelişen bir ekosistem ve bol miktarda kaynak anlamına gelir.

Kullanım Senaryoları

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

  • Mesaj Kuyruğu İşleme: Bir uygulama, bir mesaj kuyruğundan gelen mesajları işliyorsa, KEDA kuyruktaki mesaj sayısına göre uygulamayı otomatik olarak ölçeklendirebilir. Örneğin, Apache Kafka Streams ile gerçek zamanlı veri işleme uygulamalarında KEDA, Kafka topic’lerindeki mesaj sayısına göre tüketici pod’larını ölçeklendirebilir.
  • Veritabanı İşlemleri: Bir uygulama, bir veritabanına yapılan sorgu sayısına göre ölçeklenmesi gerekiyorsa, KEDA veritabanı metriklerini izleyerek uygulamayı otomatik olarak ölçeklendirebilir. Örneğin, bir e-ticaret sitesi, yoğun sipariş dönemlerinde veritabanına yapılan sorgu sayısını artırabilir. KEDA, bu artışı algılayarak veritabanı uygulamasını otomatik olarak ölçeklendirebilir. TiDB: Dağıtık ve Ölçeklenebilir HTAP Veritabanı gibi çözümlerle entegre çalışarak veri yönetimi performansını artırabilir.
  • Bulut Hizmeti Etkinlikleri: Bir uygulama, bir bulut hizmetinden gelen etkinliklere (örneğin, bir blob depolama alanına yüklenen dosyalar) tepki veriyorsa, KEDA bu etkinlikleri izleyerek uygulamayı otomatik olarak ölçeklendirebilir.
  • Arka Plan İşlemleri: Periyodik olarak çalışan ve belirli olaylara bağlı olarak tetiklenen arka plan işlemleri için KEDA kullanılabilir. Bu tür işlemler genellikle kaynak yoğun olabilir ve KEDA, bu işlemlerin ihtiyaç duyduğu kaynakları dinamik olarak sağlayarak maliyetleri optimize eder.

Kurulum ve Başlangıç

KEDA’yı Kubernetes ortamınıza kurmak oldukça basittir. Aşağıdaki adımları izleyerek KEDA’yı kurabilir ve kullanmaya başlayabilirsiniz:

Adım 1: KEDA’yı Kurun

KEDA’yı kurmak için Helm kullanabilirsiniz. Helm, Kubernetes için bir paket yöneticisidir ve uygulamaların dağıtımını kolaylaştırır. Eğer Helm kurulu değilse, öncelikle Helm’i kurmanız gerekmektedir.


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 pod’larının çalıştığını doğrulayabilirsiniz:


kubectl get pods -n keda

Adım 2: ScaledObject Tanımlayın

KEDA’yı kullanmak için, bir `ScaledObject` tanımlamanız gerekmektedir. `ScaledObject`, KEDA’ya hangi uygulamayı ölçeklendireceğini ve hangi metrikleri izleyeceğini belirtir. Aşağıda, bir Kafka topic’indeki mesaj sayısına göre 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: kafka-consumer
  minReplicaCount: 0
  maxReplicaCount: 10
  triggers:
  - type: kafka
    metadata:
      topic: my-topic
      bootstrapServers: my-kafka-bootstrap.example.com:9092
      consumerGroup: my-group
      lagThreshold: "50"

Bu `ScaledObject`, `kafka-consumer` adlı deployment’ı ölçeklendirecektir. `minReplicaCount` 0 olarak ayarlandığı için, topic’te mesaj olmadığında uygulama sıfıra kadar ölçeklenebilir. `maxReplicaCount` 10 olarak ayarlandığı için, uygulama en fazla 10 pod’a kadar ölçeklenebilir. `lagThreshold` 50 olarak ayarlandığı için, consumer group’un topic’teki en son mesajdan 50 mesaj geride olması durumunda ölçeklendirme tetiklenir.

Adım 3: Uygulamayı Dağıtın

`ScaledObject`’ı tanımladıktan sonra, uygulamayı Kubernetes’e dağıtabilirsiniz. Uygulama, `ScaledObject` tarafından belirtilen deployment olmalıdır. Örneğin:


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

Bu deployment, `my-kafka-consumer-image` adlı container imajını çalıştıracaktır. `replicas` 1 olarak ayarlandığı için, başlangıçta sadece bir pod çalışacaktır. KEDA, `ScaledObject` tarafından belirtilen metrikleri izleyerek pod sayısını otomatik olarak ayarlayacaktır.

BirCloud Perspektifi

BirCloud olarak, bulut bilişim çözümleri konusunda uzmanız ve müşterilerimize en iyi teknolojileri sunmayı hedefliyoruz. KEDA, Kubernetes ortamlarında uygulama ölçeklendirmesi için güçlü bir araçtır ve müşterilerimizin kaynak kullanımını optimize etmelerine, maliyetleri düşürmelerine ve performansı artırmalarına yardımcı olabilir. KEDA’nın esnekliği ve kolay kullanımı, farklı sektörlerdeki ve farklı büyüklükteki işletmeler için ideal bir çözümdür. Ayrıca, Terraform ile Bulut Altyapınızı Otomatikleştirme gibi çözümlerimizle KEDA entegrasyonunu kolaylaştırarak müşterilerimize uçtan uca bir çözüm sunuyoruz.

KEDA’nın Kubernetes ekosistemine getirdiği yenilikler, BirCloud’un Bulut Teknolojisi: İşletmeler İçin Dönüşüm ve İnovasyonun Anahtarı vizyonuyla örtüşmektedir. Etkinlik tabanlı mimarilere geçiş, modern uygulamaların gereksinimlerini karşılamak için kritik öneme sahiptir ve KEDA, bu geçişi kolaylaştıran önemli bir araçtır.

Sonuç

KEDA, Kubernetes ortamlarında uygulama ölçeklendirmesi için güçlü ve esnek bir çözümdür. Olay güdümlü ölçeklendirme sayesinde, uygulamalar sadece ihtiyaç duyulduğunda ölçeklenir, kaynak kullanımını optimize eder ve maliyetleri düşürür. KEDA’nın kolay kurulumu ve kullanımı, farklı sektörlerdeki ve farklı büyüklükteki işletmeler için ideal bir çözümdür. BirCloud olarak, müşterilerimize KEDA’yı kullanarak Kubernetes ortamlarını optimize etmelerine yardımcı olmaktan mutluluk duyarız. Daha fazla bilgi için bizimle iletişime geçebilirsiniz.

❓ Sık Sorulan Sorular

KEDA nedir?

KEDA (Kubernetes Event-driven Autoscaling), Kubernetes üzerinde olay güdümlü otomatik ölçeklendirme sağlayan açık kaynaklı bir projedir.

KEDA'nın avantajları nelerdir?

Verimlilik, performans, esneklik, kolay kullanım ve açık kaynak olması KEDA'nın başlıca avantajlarıdır.

KEDA hangi olay kaynaklarını destekler?

KEDA, mesaj kuyrukları (Kafka, RabbitMQ), veritabanları (MySQL, PostgreSQL), bulut hizmetleri (Azure Monitor, AWS CloudWatch) gibi çeşitli olay kaynaklarını destekler.

KEDA nasıl kurulur?

KEDA, Helm kullanılarak kolayca kurulabilir. Helm repo'su eklenerek ve ardından Helm install komutu çalıştırılarak kurulum tamamlanır.

ScaledObject nedir?

ScaledObject, KEDA'ya hangi uygulamayı ölçeklendireceğini ve hangi metrikleri izleyeceğini belirten bir Kubernetes kaynağıdır.