Mobil Menü

Kubernetes Nedir?

Giriş

Günümüz yazılım dünyasında, mikro hizmet mimarisi ve kapsayıcı (container) tabanlı uygulamalar hızla yaygınlaşmaktadır. Ancak, bu kapsayıcıların yönetimi, ölçeklenmesi ve otomasyonu karmaşık bir süreçtir. İşte bu noktada Kubernetes devreye girer. Google tarafından geliştirilmiş ve şu an Cloud Native Computing Foundation (CNCF) tarafından yönetilen Kubernetes, kapsayıcı tabanlı uygulamaların dağıtımını, yönetimini ve ölçeklenmesini kolaylaştıran açık kaynaklı bir platformdur.

Kubernetes Nedir?

Kubernetes, genellikle “K8s” olarak kısaltılan, kapsayıcılaştırılmış uygulamaların otomatikleştirilmiş dağıtımı, ölçeklendirilmesi ve yönetimini sağlayan bir orkestrasyon aracıdır. Docker ve benzeri konteyner teknolojileri ile oluşturulmuş uygulamaların daha verimli çalışmasını sağlar.

Kubernetes’in temel amacı, yazılım ekiplerinin büyük ölçekli uygulamaları yönetmesini kolaylaştırmak ve sürekli entegrasyon/sürekli dağıtım (CI/CD) süreçlerini hızlandırmaktır. Uygulamaları farklı ortamlarda çalıştırarak esneklik sağlar ve sistem kaynaklarının verimli kullanılmasını mümkün kılar.

Kubernetes’in Temel Bileşenleri

Birden fazla bileşenden oluşur. İşte temel bileşenleri:

1. Pod

Pod, Kubernetes’in en küçük dağıtım birimidir. Genellikle tek bir uygulama bileşeni içerir ve bir veya birden fazla konteyner barındırabilir.

2. Node

Kubernetes kümesinde (cluster) çalışan fiziksel veya sanal bir makinedir. İki tür node bulunur:

  • Master Node: Kubernetes kümesini yönetir.
  • Worker Node: Uygulamaların çalıştırıldığı sunuculardır.

3. Cluster

Birden fazla node’un bir araya gelerek oluşturduğu ortamdır.

4. Deployment

Uygulamaların yönetilmesini ve ölçeklenmesini sağlayan nesnedir. Yeni versiyonları yönetmek için kullanılır.

5. Service

Ağ üzerinden pod’lara erişimi sağlayan bileşendir.

6. Namespace

Kaynakların organizasyonu için kullanılan mantıksal bir ayrım mekanizmasıdır.

7. ConfigMap ve Secret

Uygulama yapılandırmalarını ve hassas bilgileri güvenli bir şekilde saklamak için kullanılır.

Kubernetes’in Avantajları

Kubernetes’in sağladığı başlıca avantajlar şunlardır:

1. Otomatik Ölçeklendirme

Trafik arttığında otomatik olarak yeni pod’lar başlatarak ölçeklendirme yapabilir.

2. Kendi Kendini İyileştirme

Eğer bir pod çökerse, otomatik olarak onu yeniden başlatır.

3. Kolay Güncelleme ve Rollback

Uygulamaları kesinti olmadan güncelleyebilir ve hatalı güncellemeleri geri alabilir.

4. Kaynak Verimliliği

Sistem kaynaklarını en iyi şekilde kullanarak maliyetleri düşürür.

5. Çoklu Bulut Desteği

AWS, Azure, Google Cloud gibi farklı bulut platformlarında çalışabilir.

Kubernetes Nasıl Çalışır?

Temel olarak aşağıdaki adımlarla çalışır:

  1. Uygulamanın Tanımlanması: YAML veya JSON dosyaları aracılığıyla uygulamaları tanımlar.
  2. Pod’ların Dağıtılması: Pod’ları worker node’lara yerleştirir.
  3. Servis Yönetimi: Pod’ların birbirleriyle ve dış dünyayla nasıl iletişim kuracağını belirler.
  4. Ölçeklendirme: Trafiğe bağlı olarak pod sayısını artırır veya azaltır.
  5. Güncelleme ve Geri Alma: Yeni sürümleri uygulamaya ve gerekirse eski sürüme dönmeye olanak tanır.

Kubernetes Kullanım Alanları

Kubernetes birçok sektörde ve kullanım senaryosunda tercih edilmektedir:

1. Mikro Hizmet Mimarisi

Mikro hizmetlerin yönetimi ve ölçeklenmesi için idealdir.

2. Sürekli Entegrasyon ve Dağıtım (CI/CD)

Otomatik kod dağıtımı ve test süreçlerinde kullanılır.

3. Makine Öğrenimi ve Büyük Veri

Veri analitiği ve yapay zeka modellerinin dağıtımı için kullanılır.

4. Hibrit ve Çoklu Bulut Stratejileri

Birden fazla bulut sağlayıcısında çalışan sistemler için uygundur.

Kubernetes ve Docker İlişkisi

Docker ve Kubernetes sık sık birlikte anılır. Docker, kapsayıcıları oluştururken kullanılırken, Kubernetes bu kapsayıcıları yönetir. Docker dışında başka kapsayıcı çalıştırma ortamlarını da destekler.

Kubernetes Kurulumu

Kubernetes’i kullanmaya başlamak için aşağıdaki yollar izlenebilir:

  • Minikube: Lokal ortam oluşturur.
  • Kubeadm: Manuel olarak Kubernetes kümesi kurmayı sağlar.
  • Bulut Tabanlı Çözümler: AWS EKS, Google GKE, Azure AKS gibi yönetilen hizmetleri tercih edilebilir.

Kubernetes Komutları

Yaygın olarak kullanılan komutlar:

  • kubectl get pods → Çalışan pod’ları listeler.
  • kubectl describe pod <pod_adı> → Pod hakkında detaylı bilgi verir.
  • kubectl delete pod <pod_adı> → Bir pod’u siler.
  • kubectl apply -f <dosya_adı>.yaml → YAML dosyasındaki değişiklikleri uygular.

Sonuç

Modern uygulama geliştirme süreçlerinde büyük bir devrim yaratmıştır. Otomatik ölçeklendirme, yüksek erişilebilirlik, kaynak verimliliği ve hata toleransı gibi avantajları sayesinde büyük ölçekli uygulamalar için vazgeçilmez hale gelmiştir. Eğer mikro hizmet mimarisi kullanıyorsanız ve konteynerlerinizi verimli bir şekilde yönetmek istiyorsanız, Kubernetes kullanımı sizin için büyük bir kolaylık sağlayacaktır.

Osman Bayrak
Osman Bayrak

Yazılım Mühendisiyim. Teknoloji ve yazılıma meraklıyım.

Articles: 278