Kubernetes Apache Kafka Kurulumu
Merhabalar,
Bu yazımda Kubernetes Clusterımıza Apache kafka kurulumu inceliycez. İlk olarak Apache Kafka ve bileşenlerine bakalım.
Apache Kafka: Verilerin bir sistemden hızlı bir şekilde toplanıp diğer sistemlere hatasız bir şekilde transferini sağlamak için geliştirilen dağıtık bir veri akış mekanizmasıdır. Apache Kafka, LinkedIn tarafından geliştirilmiş,Apache yönetiminde açık kaynak olarak çoğunlukla Confluent şirketi tarafından bakımı ve geliştirimi yapılan bir projedir. Dağıtık (distrubuted) bir veri akış (streaming) platformudur.
Topic,Partitions,Offsets: Mesajların tutulduğu yerdir. Veritabınındaki tabloya benzer. Kafka içerisinde birçok topic olabilir. Bir veya birden fazla bölümden(partitions) meydana gelirler. Mesajlar partition’lara sıralı olarak ve değiştirilemez olarak eklenirler ve artan şekilde bir kimlik değeri alırlar. Bu değere offset denir.
Brokers: Broker, topic ve partition’ları tutan sunuculardır. Birden fazla broker birlikte kafka cluster’ı oluşturur.
Topic Replication: Kafka dağıtık(distrubuted) bir sistemdir, bir broker çökse bile veri kaybı olmaması ve işlemlerin devam ediyor olması gereklidir. Topic replikasyon bu işi yapar.
Producer: Topic’lere veriyi yazarlar. Hangi broker ve partitiona yazacağını bilirler, cluster içerisindeki bir broker’a bağlanması yeterlidir.
Consumer: Topic’lerden veriyi okurlar. Hangi broker’dan okuyacağını bilir, broker çökse bile otomatik recover olur. Ayni Partition içerisindeki mesajları sıralı bir şekilde okur. Birden fazla partition’dan okuyabilir.
Uygulamamızı minikube cluster üzerinde gerçekleştircez. Eğer localinizde minikube yüklü değil ise diğer yazımdan minikube kurulumunu gerçekleştirebilirsiniz. Minikube aktifleştirmek için,
minikube start --memory=8000 --cpus=4
ik olarak bir tane kafka-k8s isminde terminal’den bir tane namespace oluşturalım.
kubectl create ns kafka-k8skubectl get ns
Ilk olarak zookeeper kurulumunu yaparım. Zookeeper için persistent volume ve persistent volume claims oluşturalım.
kubectl apply -f zookeeper-pv-pvc.yamlkubectl get pvkubectl get pvc -n kafka-k8s
Şimdide zookeeper için service ve deployment objelerini oluşturalım.
kubectl apply -f zookeeper-svc-dep.yamlkubectl get svc -n kafka-k8skubectl get deployments.apps -n kafka-k8skubectl get pods -n kafka-k8s
Yaklasık pod’un statüsü running state geçtikten 4–5 dk içerisinde zookeeper server’a bağlantı sağlayacaktır. Bunun için ilgili pod’un log’una baktığımızda;
kubectl logs -f -n kafka-k8s pod_name
Evet !!! Zookeeper’a bağlantı sağladığımıza göre sıra geldi kafka yı kubernetes deploy etmeye geldi. ilk olarak persistent volume ve persistent volume claims objelerimizi oluşturalım.
kubectl apply -f kafka-pv-pvc.yamlkubectl get pvkubectl get pvc -n kafka-k8s
Şimdide kafka için service ve deployment objelerini oluşturalım.
kubectl apply -f kafka-svc-dep.yamlkubectl get deployments.apps -n kafka-k8skubectl get pods -n kafka-k8s
Son olarakda kafka pod’ubun loglarına bakalm.
kubectl logs -f -n kafka-k8s pod_name
Görüldüğü gibi başarılı şekilde zookeeper’a bağlantı sağlandı.
Bu yazımızın da sonuna gelmiş bulunmaktayız. Araştırmalarım ve sektörde karşılaştığım senaryolar üzerine yazılarımı yazmaya devam edeceğim. Umarım faydalı bir yazı olmuştur. Yazımı okuduğunuz için Teşekkürler :)