Kubernetes, açık kaynaklı bir konteyner yönetim platformudur ve işletmelerin uygulamalarını daha hızlı, daha güvenli ve daha tutarlı bir şekilde dağıtmalarına yardımcı olur. Keda ise, Kubernetes’teki otomatik ölçeklendirme özelliklerini genişleten bir araçtır. Bu makalede, Keda’nın ne olduğunu, nasıl çalıştığını ve örneklerle neler yapabileceğimizi inceleyeceğiz.
Keda Nedir?
Keda (Kubernetes-based Event-Driven Autoscaling), etkinlik odaklı ölçeklendirmeyi mümkün kılan bir ölçeklendirme çözümüdür. Keda, Kubernetes’in otomatik ölçeklendirme mekanizmalarını kullanarak, işlemci kullanımı, kuyruk boyutu, özel metrikler ve diğer ölçütler gibi farklı koşullara göre Kubernetes pod’larının sayısını otomatik olarak artırabilir veya azaltabilir.
Keda, birden fazla kaynaktan gelen olaylar için ölçeklendirme yapabilir; bu kaynaklar arasında Apache Kafka, RabbitMQ, AWS Kinesis, Azure Event Hubs ve benzerleri vardır. Keda, Kubernetes’e entegre olarak çalışır ve Kubernetes Cluster Resource API’sini kullanarak ölçeklendirme işlemlerini yapar.
Keda Nasıl Çalışır?
Keda, Kubernetes’te kaynak takibi yaparak etkinlikleri izler ve bunları olaylar olarak sunar. Bu olayları izleyerek, belirli bir eşiği aşan olaylar için ölçeklendirme kararları verir ve pod’ların sayısını artırır veya azaltır. Bir etkinliği izlemek için, Keda bir ScaledObject
oluşturur ve bu objeye hangi kaynağı izleyeceğini ve hangi ölçeklendirme türünü kullanacağını söyler.
Örneğin, bir RabbitMQ kuyruğu için bir ScaledObject
oluşturarak, Keda’nın bu kuyruktaki mesaj sayısına bakmasını ve pod’ların sayısını artırıp azaltmasını sağlayabiliriz. Keda, bunu yaparken, pod’lardaki yük dengelemesini de sağlar ve böylece performans ve kullanılabilirlik açısından en iyi sonucu elde ederiz.
Keda, ölçeklendirme kararı vermeden önce ölçümleri işlemek için bir “metrik kaynağı” kullanır. Örneğin, CPU kullanımı veya hafıza kullanımı gibi standart Kubernetes metrikleri kullanabiliriz. Ayrıca, özelleştirilmiş metrikler de tanımlayabiliriz. Bu metrikleri kullanarak, Keda, ölçeklendirme kararı vermek için bir eşiği belirler.
Keda ile Neler Yapılabilir?
Keda, çeşitli senaryolarda kullanılabilen bir ölçeklendirme çözümüdür. Aşağıda, Keda ile yapılabilecek bazı örnekler bulunmaktadır:
1. Mesaj Kuyruklarındaki Otomatik Ölçeklendirme
Bir kuyrukta bekleyen mesaj sayısı, Keda tarafından izlenebilir ve pod’ların sayısı bu sayıya göre otomatik olarak ayarlanabilir. Örneğin, bir uygulamanın yoğun saatlerinde daha fazla mesaj işlemesi gerekiyorsa, Keda otomatik olarak pod’ların sayısını artırarak uygulamanın performansını artırabilir. Daha düşük trafik saatlerinde, pod’ların sayısı otomatik olarak azaltılır ve kaynaklar boşa harcanmaz.
2. Özel Metriklerde Otomatik Ölçeklendirme
Bir uygulama, özel bir metriği izleyerek ölçeklendirilebilir. Örneğin, bir uygulama belirli bir API çağrısı sayısında yoğunlaşırsa, Keda, bu metrikleri izleyerek pod’ların sayısını otomatik olarak ayarlar ve kaynakları verimli bir şekilde kullanır.
3. Etkinlik Tabanlı Otomatik Ölçeklendirme
Bir etkinlik tabanlı uygulama, Keda tarafından otomatik olarak ölçeklendirilebilir. Örneğin, bir web sitesindeki ziyaretçi sayısı arttığında, Keda otomatik olarak pod’ların sayısını artırarak sitenin performansını korur.
4. Kaynak Havuzu Yönetimi
Keda, Kubernetes Cluster Resource API’sini kullanarak, kaynak havuzunu otomatik olarak yönetebilir. Bu sayede, verimli bir şekilde kaynak kullanımı sağlanabilir ve maliyetler düşürülebilir.
Keda’nın Avantajları Nelerdir?
Keda, Kubernetes’teki otomatik ölçeklendirme mekanizmalarını genişleterek, daha akıllı ve verimli bir ölçeklendirme deneyimi sunar. Ayrıca, Keda’nın diğer avantajları şunlardır:
1. Kolay Kurulum ve Kullanım
Kubernetes’e entegre olan Keda, kurulumu kolay ve kullanımı basittir. Birkaç adımda ölçeklendirmeyi yapılandırabilir ve etkinlik kaynağına bağlayabilirsiniz.
2. Birden Fazla Etkinlik Kaynağı Desteği
Keda, birçok farklı etkinlik kaynağını destekler. Apache Kafka, RabbitMQ, AWS Kinesis, Azure Event Hubs gibi popüler etkinlik kaynaklarının yanı sıra, özelleştirilmiş etkinlik kaynaklarını da destekler.
3. Kaynakları Verimli Kullanma
Keda, kaynakları verimli bir şekilde kullanarak, maliyetleri düşürür. Pod’ların sayısını gereksiz yere artırmaz ve iş yüküne göre dinamik olarak ayarlar.
4. Performans ve Kullanılabilirlik
Keda, otomatik ölçeklendirme sayesinde, yüksek performans ve yüksek kullanılabilirlik sağlar. Pod’ların sayısı, iş yüküne göre otomatik olarak ayarlanır ve böylece hızlı ve tutarlı bir performans elde edilir.
Sonuç
Keda, Kubernetes’in otomatik ölçeklendirme mekanizmalarını genişleterek, daha akıllı ve verimli bir ölçeklendirme deneyimi sunar. Keda, birden fazla etkinlik kaynağını destekler ve kaynakları verimli bir şekilde kullanarak, maliyeti düşürür. Ayrıca, performans ve kullanılabilirlik açısından da avantajlar sağlar.
Bu makalede, Keda’nın ne olduğunu, nasıl çalıştığını ve örneklerle neler yapabileceğimizi inceledik. Keda’nın faydalarını ve avantajlarını da tartıştık. Keda’nın kullanımı, özellikle etkinlik odaklı uygulamalar için büyük bir avantaj sağlar ve Kubernetes kullanıcıları için değerli bir araçtır.
Keda Nasıl Kurulur?
Keda’nın kurulumu oldukça basittir ve Kubernetes üzerinde çalışır. Kurulum için öncelikle bir Kubernetes Cluster’a ihtiyacınız vardır. Daha sonra, Keda’yı yüklemek için aşağıdaki adımları izleyebilirsiniz:
kubectl apply -f https://raw.githubusercontent.com/kedacore/keda/v2.3.0/deploy/crds/keda.k8s.io_scaledobjects_crd.yaml
komutunu kullanarak Keda CRD’lerini yükleyin.helm repo add kedacore https://kedacore.github.io/charts
komutunu kullanarak Keda Helm repo’sunu ekleyin.helm repo update
komutuyla Helm repo’sunu güncelleyin.helm install keda kedacore/keda --version 2.3.0
komutuyla Keda’yı yükleyin.
Bu adımları takip ederek Keda’yı Kubernetes Cluster’inize yükleyebilirsiniz.
Keda Nasıl Yapılandırılır?
Keda yapılandırması, ScaledObject
olarak adlandırılan Kubernetes öğeleriyle yapılır. Bu nesneler, etkinlik kaynaklarını tanımlar ve bunların nasıl ölçeklendirileceğini belirler. Bir ScaledObject
, aşağıdaki özellikleri içerir:
scaleTargetRef
: Ölçeklendirilecek Kubernetes Kaynağıtriggers
: Ölçeklendirme tetikleyicileriminReplicaCount
: Pod’ların minimum sayısımaxReplicaCount
: Pod’ların maksimum sayısı
Bir ScaledObject
oluşturmak için, öncelikle ScaledObject YAML
dosyası oluşturmanız gerekir. Daha sonra, bu dosyayı kubectl
ile Kubernetes cluster’ınıza göndererek ScaledObject
oluşturabilirsiniz.
Örneğin, RabbitMQ kuyruğu için bir ScaledObject
oluşturmak için aşağıdaki YAML dosyasını kullanabilirsiniz:
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: rabbitmq-scaledobject
spec:
scaleTargetRef:
kind: Deployment
name: rabbitmq-deployment
triggers:
- type: rabbitmq-queue
metadata:
queueName: example-queue
host: rabbitmq.hostname.com
port: "5672"
username: rabbitmquser
password: yourpassword
connectionName: rabbitmq-connection
authenticationRef:
name: rabbitmq-auth-secret
minReplicaCount: 1
maxReplicaCount: 10
Bu YAML dosyasında, scaleTargetRef
bölümünde RabbitMQ kuyruğu için bir Deployment
belirtilir. triggers
bölümünde, RabbitMQ kuyruğu için bir tetikleyici tanımlanır. Burada queueName
, host
, port
, username
, password
ve connectionName
gibi parametreler belirtilir.
Keda ile Ölçeklendirme Test Etme
Keda ile ölçeklendirmeyi test etmek için, öncelikle bir test senaryosu oluşturmanız gerekir. Örneğin, RabbitMQ kuyruğuna bazı mesajlar ekleyebilir ve Keda’nın bunları algılayarak pod’ların sayısını artırmasını sağlayabilirsiniz.
Bu senaryoyu gerçekleştirmek için, öncelikle bir RabbitMQ kuyruğu oluşturmanız gerekiyor. Daha sonra, bir ScaledObject
oluşturarak RabbitMQ kuyruğunu Keda’ya bağlayabilirsiniz. Son olarak, kuyruğa bazı mesajlarÖrneğin, RabbitMQ kuyruğuna bazı mesajlar ekleyebilir ve Keda’nın bunları algılayarak pod’ların sayısını artırmasını sağlayabilirsiniz. Bu senaryoyu gerçekleştirmek için öncelikle bir RabbitMQ kuyruğu oluşturmanız gerekiyor. Daha sonra, bir ScaledObject
oluşturarak RabbitMQ kuyruğunu Keda’ya bağlayabilirsiniz. Son olarak, kuyruğa bazı mesajlar ekleyerek Keda’nın ölçeklendirmeyi başarılı bir şekilde gerçekleştirdiğini gözlemleyebilirsiniz.
Keda, Kubernetes’in otomatik ölçeklendirme mekanizmalarını genişleterek daha akıllı ve verimli bir ölçeklendirme deneyimi sunar. Keda, birden fazla etkinlik kaynağını destekler ve kaynakları verimli bir şekilde kullanarak maliyeti düşürür. Ayrıca, performans ve kullanılabilirlik açısından da avantajlar sağlar. Keda’yı kurmak ve yapılandırmak oldukça basittir ve etkinlik odaklı uygulamalar için büyük bir avantaj sağlar.