Kubernetes'i Keşfedin

Konteynerli uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştiren açık kaynaklı platformu interaktif bir şekilde öğrenin.

Kubernetes (genellikle "Kube" veya "k8s" olarak da bilinir), Google tarafından Go dilinde geliştirilmiş ve 2015 yılında açık kaynak olarak yayınlanmış, konteyner tabanlı uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştirmek için kullanılan açık kaynaklı bir konteyner orkestrasyon platformudur. "Kubernetes" kelimesi Yunanca kökenli olup "dümenci" veya "pilot" anlamına gelir, bu da platformun konteynerli iş yüklerini yönetme ve yönlendirme rolünü sembolize eder.

Modern uygulamalar genellikle mikroservis mimarisinde geliştirilir ve Docker gibi araçlarla konteynerize edilir. Konteynerler, uygulama kodunu ve bağımlılıklarını izole edilmiş, taşınabilir birimler halinde paketler. Konteynerler, Sanal Makinelerden (VM'ler) daha hafif, kaynak açısından daha verimli ve daha taşınabilirdir; saniyeler içinde başlatılabilirler ve daha az CPU ve bellek kaynağı gerektirirler. Bu özellikler, onları modern bulut yerel uygulamaların fiili bilgi işlem birimleri haline getirmiştir.

Hemen Başla

Mimariyi Keşfet

Kubernetes kümesinin temel yapı taşlarını ve bileşenlerini tıklayarak öğrenin. Her bir bileşen, sistemin nasıl çalıştığını anlamanız için kilit bir rol oynar.

Kubernetes Kümesi

Kontrol Düzlemi (Master Node)

etcd
kube-apiserver
kube-scheduler
kube-controller-manager
cloud-controller-manager

Çalışan Düğüm 1 (Worker Node)

kubelet
kube-proxy
Container Runtime

Çalışan Düğüm N (Worker Node)

kubelet
kube-proxy
Container Runtime

Bileşen Detayları

Bir bileşenin görevini ve önemini görmek için üzerine tıklayın.

Genel Küme Yapısı: Master ve Worker Düğümler

Bir Kubernetes kümesi, bir ana sunucu (Master Node) ve bir dizi çalışan düğümden (Worker Node) oluşur. Bu makineler, her sunucu arasında iletişim kurabilmek için bir ağ kurarak tek bir küme haline getirilir. Bu küme, tüm Kubernetes bileşenlerinin, işlevlerinin ve iş yüklerinin yapılandırıldığı fiziksel platformdur.

Ana Sunucu (Master Node):

Kümenin beyni olarak işlev görür. Tüm küme için yönetim, yapılandırma ve orkestrasyon kararlarını alır. Diğer sunucuların sağlık durumunu kontrol eder ve iş yüklerinin en iyi nasıl dağıtılacağına karar verir. Kullanıcılar ve yönetim araçları (örneğin `kubectl`) küme ile ilk olarak Master Node üzerindeki API aracılığıyla etkileşim kurar.

Çalışan Düğüm (Worker Node):

Uygulama ve hizmetleri çalıştıran makinelerdir. Her bir çalışan düğüm, konteyner çalıştırabilecek durumda olmalıdır (örneğin Docker Engine, rkt veya runc gibi bir konteyner motoru yüklü olmalıdır). Düğümler, ana sunucudan aldığı talimatlarla uygun şekilde konteynerleri oluşturur veya yok eder.

Kontrol Düzlemi (Master Node) Bileşenleri Detaylı

Kontrol düzlemi, kümenin genel durumunu yönetir ve yeni bir Pod oluşturulması isteğine karşılık uygun Worker Node üzerinde yeni Pod'un başlatılmasını tetikler. Kubernetes mimarisi, `etcd`'nin tek doğruluk kaynağı, `kube-apiserver`'ın merkezi iletişim noktası ve çeşitli denetleyicilerin (`kube-scheduler`, `kube-controller-manager`) sürekli olarak API sunucusunu izleyerek ve `etcd`'yi güncelleyerek kümenin istenen duruma doğru ilerlemesini sağladığı güçlü bir kontrol döngüsü üzerine kuruludur. Bu bildirimsel (declarative) yaklaşım, Kubernetes'in kendi kendini iyileştirme, otomatik ölçekleme ve dayanıklılık gibi temel yeteneklerinin temelini oluşturur.

Bileşen Adı Görevi
etcd Kümenin tüm yapılandırma verilerini, durumunu ve kalıcı bilgilerini depolayan dağıtılmış anahtar-değer deposu.
kube-apiserver Tüm küme için merkezi yönetim noktası; gelen istekleri işler, doğrular ve etcd ile tek bağlantı kurar.
kube-scheduler Yeni Pod'ları izler ve iş yükü gereksinimlerine göre uygun çalışan düğümlere yerleştirir.
kube-controller-manager Kümenin istenen durumunu korumak için çeşitli denetleyicileri yönetir (örn. ReplicaSet).
cloud-controller-manager Kubernetes'in bulut sağlayıcılarıyla entegrasyonunu sağlar, buluta özgü özellikleri yönetir.

Çalışan Düğüm (Worker Node) Bileşenleri Detaylı

Çalışan düğümler, Master Node'dan aldıkları talimatlarla konteynerli uygulamaları çalıştıran ve yöneten makinelerdir. Bu düğümler, iş yüklerini sorunsuz bir şekilde yürütmek için belirli bileşenlere ihtiyaç duyar.

  • Konteyner Çalışma Zamanı (Container Runtime): Her çalışan düğümde bir konteyner çalışma zamanı (örneğin Docker Engine, rkt veya runc) yüklü olmalıdır. Bu bileşen, konteynerleri başlatır, durdurur ve yönetir. Kubernetes, Docker konteynerlerinin yaşam döngüsünü otomatik hale getirerek altyapıyı daha ölçeklenebilir ve dayanıklı bir yapıya kavuşturur.
  • kubelet: Her bir çalışan düğüm için ana iletişim noktasıdır. Master Node'dan gelen komutları alır, Pod özelliklerini (YAML veya JSON dosyaları) işler ve çalışması gereken konteynerlerin gerçekten çalıştığından emin olmak için konteyner motoruyla etkileşime girer. Ayrıca, Pod'ların depolama, sır (secrets) veya yapılandırma haritaları (configMaps) gibi kaynaklara erişimini sağlar.
  • kube-proxy: Her düğüm sunucusunda çalışan küçük bir proxy hizmetidir. Konteynerlerin ağ bağlantısını yönetmekten, ana bilgisayar alt ağlarını korumaktan ve diğer bileşenlere hizmet sağlamaktan sorumludur. Bu işlemi genellikle `iptables` üzerinden yapar, talepleri doğru konteynerlere iletir ve ilkel bir yük dengelemesi gerçekleştirebilir.

Temel Kavramlar

Kubernetes'i oluşturan temel nesneleri ve soyutlamaları öğrenin. Bu kavramlar, uygulamalarınızın nasıl yönetildiğini anlamanın anahtarıdır.

Neden Kubernetes?

Kubernetes'in modern altyapılar için neden vazgeçilmez olduğunu temel avantajlarıyla anlayın.

🚀

Otomatik Ölçekleme

Uygulamaları talebe göre yatay olarak otomatik ölçeklendirerek performansı ve verimliliği artırır. CPU çıktıları ve diğer kaynak ölçümlerine göre örnekler ekler veya kaldırır. Bu, uygulamanın performansını korurken kaynak kullanımını optimize eder.

❤️‍🩹

Kendi Kendini İyileştirme

Hata veren konteynerleri otomatik olarak yeniden başlatır veya değiştirir, sistemin dayanıklılığını sağlar. Eğer konteynerler arızalanırsa veya hiç çalışmazsa, Kubernetes bunları istenen duruma uyacak şekilde değiştirir veya yeniden başlatır. Bu, sistemin arıza durumunda otomatik olarak kendini kurtarmasını ve kesinti süresini en aza indirmesini sağlar.

⚙️

Kesintisiz Dağıtım

Uygulama güncellemelerini sıfır kesintiyle yapar ve gerektiğinde hızlıca geri almanızı sağlar. Otomatik kullanıma sunma (rolling update) özelliği sayesinde, uygulama güncellemeleri kesinti olmadan gerçekleştirilebilir. Bu süreçte Kubernetes, önce yeni Pod'ları ayağa kaldırır, sorunsuz çalıştıklarından emin olduktan sonra eski Pod'ları devre dışı bırakır. Yanlışlıkla veya hatalı bir şekilde dağıtılan uygulama sürümleri durumunda, Kubernetes hızlı bir şekilde geri alma (rollback) yeteneği sunar.

☁️

Hibrit & Çoklu Bulut

İş yüklerini şirket içi ve farklı bulut sağlayıcıları arasında tutarlı bir şekilde yönetme esnekliği sunar. Kubernetes, şirket içi (on-premises), genel bulut, özel bulut ve hibrit bulut ortamlarında çalışabilen taşınabilir bir platformdur. Bu, uygulamaların veya altyapının değiştirilmesini gerektirmeden iş yüklerinin farklı platformlar arasında taşınabilirliğini sağlar. Kubernetes'in açık kaynak doğası ve taşınabilirliği, satıcı kilitlenmesini (vendor lock-in) azaltmada güçlü bir araç görevi görür.

📊

Kaynak Optimizasyonu

Konteynerlerin hafif yapısı ve Kubernetes'in akıllı zamanlama yetenekleri sayesinde, kaynaklar çok daha verimli kullanılır. Kubernetes, kaynak kullanımını optimize ederek operasyonel yükü ve maliyetleri azaltır. Uygulama başına daha az CPU ve bellek kaynağı gerektiren konteynerler, hipervizörler ve VM'lere göre daha iyi kaynak kullanımı sağlar.

🔒

Güvenlik & Konfigürasyon

Kubernetes, şifreler, tokenlar ve SSH anahtarları gibi hassas bilgileri güvenli bir şekilde yönetmek için `Secret` gibi yerleşik mekanizmalar sunar. Kimlik yönetimi sağlamasa da, Kubernetes yetkilendirmeler için Rol Tabanlı Erişim Kontrolü (RBAC) modelini sunar. Bu sayede, farklı ekipler veya projeler için kaynak erişimi üzerinde ayrıntılı kontrol sağlanır.

Genişleyen Ekosistem

Kubernetes tek başına değildir. Gücünü, etrafında gelişen zengin araç ve proje ekosisteminden alır. En popüler araçları ve rollerini keşfedin.

Docker, Kubernetes'in temelinde yer alan en yaygın konteyner çalışma zamanıdır. Kubernetes, Docker konteynerlerinin yaşam döngüsünü otomatik hale getirir ve altyapının çok daha ölçeklenebilir ve dayanıklı bir yapıya kavuşmasını sağlar. Docker, uygulamaları ve bağımlılıklarını taşınabilir birimler halinde paketleyerek, Kubernetes'in bu birimleri verimli bir şekilde orkestre etmesini mümkün kılar. Docker'ın yanı sıra rkt ve runc gibi alternatif konteyner çalışma zamanları da kullanılabilir.

Helm, Kubernetes için bir paket yöneticisidir. Kubernetes uygulamalarının dağıtımını ve yönetimini basitleştirir. Helm, şablon tanımlarını `values.yaml` dosyasındaki yapılandırmalarla birleştirerek "release" adı verilen bir kurulum oluşturur. Her kurulum tekrarlandığında, release'in yeni bir sürümü oluşturulur, bu da gerektiğinde geri alma (rollback) konseptini destekler. Helm, karmaşık Kubernetes manifest dosyalarını yönetme yükünü azaltır ve uygulamaların tutarlı bir şekilde dağıtılmasını sağlar.

Kubernetes ortamlarında izleme ve günlükleme, dağıtımlar ölçeklendikçe daha karmaşık hale gelir. Bu noktada Prometheus ve Grafana gibi araçlar kritik bir rol oynar. Prometheus, Kubernetes izlemesi için popüler bir seçimdir çünkü çok boyutlu veri modeli ve çeşitli otomatik keşif mekanizmalarına sahiptir. Grafana ise Prometheus'tan toplanan metrikleri görselleştirmek ve uyarılar oluşturmak için kullanılan isteğe bağlı bir araçtır. Bu entegrasyon, operatörlerin uygulama performansını ve sağlığını anlık olarak takip etmesini, olası sorunları önceden tespit etmesini ve sistem güvenilirliğini artırmasını sağlar.

Istio, Kubernetes cluster'larına kurulan açık kaynaklı bir servis ağı (service mesh) ürünüdür. Mevcut uygulamaların üzerine ekstra kod değişikliği yapmaya gerek kalmadan güvenlik, trafik yönetimi ve gözlemlenebilirlik gibi altyapı yetenekleri ekler. Istio, mikroservisler arası iletişimi mTLS şifrelemesi ile güvenli hale getirir, otomatik yük dengeleme yapar, trafik davranışını ince ayar yapabilir ve tüm trafik için otomatik metrikler, loglar ve izler sağlar. Mimarisinde bir Kontrol Düzlemi ve her mikroservisin yanına yerleştirilen Envoy Proxy'lerden oluşan bir Veri Düzlemi bulunur.

Kubernetes ekosistemi, çeşitli ihtiyaçları karşılamak üzere tasarlanmış çok sayıda başka araç ve eklentiye sahiptir. Bunlar arasında Pod'ların küme içinde ağa erişimini sağlayan Network Plugin'ler (Calico, Flannel, Weave), kalıcı veri depolamak için kullanılan Storage Plugin'ler, logları filtrelemek, arabelleğe almak ve yönlendirmek için Fluentd gibi birleşik loglama çözümleri ve Custom Resource Definitions (CRD'ler) yönetimini otomatikleştiren Operatörler bulunur.

Öğrenme Kaynakları ve İpuçları

Kubernetes gibi kapsamlı bir platformu öğrenmek, doğru kaynaklarla daha verimli hale getirilebilir. Özellikle uygulamalı öğrenme, teorik bilginin pekiştirilmesi için önemlidir.

Başlangıç Seviyesi Kaynaklar

  • Online Kurslar ve Uygulamalı Platformlar: KodeKloud gibi platformlar, tarayıcı tabanlı, birebir uygulamalı dersler sunarak Kubernetes'i öğrenmek için oldukça etkili bir yol sunar. BTK Akademi gibi yerel platformlar da Kubernetes'in temel kavramlarından orta seviyeye kadar bilgi sağlayan eğitimler sunmaktadır.
  • Resmi Dokümantasyon: Kubernetes'in resmi dokümantasyonu, platform hakkında en güncel ve doğru bilgiyi sağlar. Başlangıç seviyesindeki kullanıcılar için temel kavramları anlamak adına değerli bir referans noktasıdır.
  • Blog Yazıları ve Rehberler: Kubernetes'e giriş ve mimari gibi konularda detaylı açıklamalar sunan Türkçe blog yazıları ve rehberler bulunmaktadır.

İleri Seviye Kaynaklar ve Sertifikasyonlar

  • Kitaplar: "Cloud Native DevOps with Kubernetes" gibi kitaplar, bulut yerel DevOps yaklaşımlarını Kubernetes ile birleştirerek kapsamlı bir bakış açısı sunar.
  • Sertifikasyonlar: CKA (Certified Kubernetes Administrator) ve CKAD (Certified Kubernetes Application Developer) gibi sertifikasyonlar, Kubernetes yetkinliğini resmi olarak kanıtlamak için önemlidir. Bu sertifikalar, modern operasyonel roller için yüksek talep gören Kubernetes becerilerini pekiştirmeye yardımcı olur.
  • Topluluk Katkıları ve Geliştirici Belgeleri: Kubernetes ekosistemindeki çeşitli projelerin (Prometheus, Envoy, CoreDNS, Helm, Istio gibi CNCF projeleri) dokümantasyonları ve GitHub depoları, platformun farklı yönleri hakkında derinlemesine bilgi edinmek için kullanılabilir.

Sonuç ve Gelecek Perspektifi

Kubernetes, Google'ın iç sistemlerinden ilham alarak ortaya çıkmış ve kısa sürede konteyner orkestrasyonunda fiili endüstri standardı haline gelmiş güçlü bir platformdur. Temel amacı, konteynerli uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştirmek, böylece uygulamaların öngörülebilirlik, yüksek kullanılabilirlik ve ölçeklenebilirlik ile çalışmasını sağlamaktır.

Kubernetes'in başarısının ardında, modüler mimarisi, bildirimsel yönetim yaklaşımı ve geniş, aktif açık kaynak ekosistemi yatmaktadır. Kontrol düzlemi bileşenleri ve çalışan düğüm bileşenleri arasındaki sıkı entegrasyon ve sürekli kontrol döngüsü, sistemin kendi kendini iyileştirme, otomatik ölçekleme ve dayanıklılık gibi temel yeteneklerini mümkün kılar.

Kubernetes'in geleceği, bulut yerel uygulama geliştirmenin ve DevOps pratiklerinin merkezinde yer almaya devam edeceğini göstermektedir. Sürekli gelişen ekosistemi, artan benimsenme oranları ve bulut sağlayıcılarının yönetilen hizmetler sunmasıyla, Kubernetes'in BT altyapılarında kritik bir rol oynamaya devam edeceği öngörülmektedir. Bu platformu öğrenmek ve ustalaşmak, modern yazılım geliştirme ve operasyon alanında kariyer yapmak isteyen profesyoneller için vazgeçilmez bir beceri haline gelmiştir.