Container Teknolojisi Neden Önemli?
Container'lar, uygulamaları ve tüm bağımlılıklarını izole bir ortamda paketleyerek "benim bilgisayarımda çalışıyor" sorununu ortadan kaldırır. Docker'ın 2013'te popülerleştirdiği container teknolojisi, yazılım dağıtımını devrim niteliğinde değiştirdi. Ancak onlarca veya yüzlerce container'ı yönetmek, ölçeklendirmek ve izlemek manuel olarak mümkün değildir. İşte burada Kubernetes devreye giriyor.
Kubernetes Nedir?
Kubernetes (K8s), Google tarafından geliştirilen ve 2014'te açık kaynak olarak yayımlanan bir container orkestrasyon platformudur. Container'ların otomatik dağıtımını, ölçeklendirmesini ve yönetimini sağlar. Bugün Cloud Native Computing Foundation (CNCF) bünyesinde geliştirilmekte olup bulut bilişimin de facto standardı haline gelmiştir.
Temel Kubernetes Kavramları
Pod
Kubernetes'in en küçük dağıtım birimi Pod'dur. Bir Pod, bir veya daha fazla container'ı içerir ve aynı ağ alanını ve depolama birimlerini paylaşır. Genellikle bir Pod tek bir container çalıştırır; ancak sidecar pattern gibi durumda birden fazla container bir Pod'da yer alabilir.
Node
Node, Pod'ların çalıştığı fiziksel veya sanal makinedir. Bir Kubernetes kümesi en az bir master (control plane) ve bir veya daha fazla worker node'dan oluşur.
Deployment
Deployment, Pod'ların istenen durumunu (desired state) tanımlar. Kaç replika çalışacağını, hangi container imajının kullanılacağını ve güncelleme stratejisini belirtir. Kubernetes, mevcut durumu istenen durumla sürekli karşılaştırarak otomatik iyileşme (self-healing) sağlar.
Service
Service, Pod'lara sabit bir ağ adresi ve yük dengeleme sağlar. Pod'lar gelip gitse de Service adresi değişmez. ClusterIP, NodePort ve LoadBalancer olmak üzere üç ana tipi vardır.
Namespace
Namespace, bir küme içinde mantıksal izolasyon sağlar. Farklı ortamları (dev, staging, prod) veya ekipleri ayırmak için kullanılır.
Kubernetes Mimarisi
Kubernetes kümesi iki ana bileşenden oluşur:
- Control Plane: API Server, etcd (dağıtık key-value deposu), Scheduler ve Controller Manager bileşenlerini içerir. Kümenin "beyni" olarak istenen durumu yönetir.
- Worker Node: kubelet, kube-proxy ve container runtime (containerd/CRI-O) bileşenlerini çalıştırır. Gerçek iş yüklerini barındırır.
Kubernetes'in Kurumsal Faydaları
- Otomatik ölçeklendirme: Horizontal Pod Autoscaler (HPA) ile CPU/bellek kullanımına göre otomatik ölçekleme
- Self-healing: Başarısız container'ların otomatik yeniden başlatılması
- Sıfır kesinti güncelleme: Rolling update stratejisi ile kesintisiz dağıtım
- Kaynak optimizasyonu: Bin packing ile sunucu kaynaklarının verimli kullanımı
- Çoklu bulut: AWS, Azure, GCP veya on-premise altyapılarda tutarlı çalışma
- Deklaratif yapılandırma: YAML dosyalarıyla altyapı kodlama (Infrastructure as Code)
Başlarken: İlk Adımlar
Kubernetes öğrenimine başlamak için aşağıdaki yol haritasını öneriyoruz:
- Docker temellerini öğrenin ve basit container'lar oluşturun
- Minikube veya kind ile yerel Kubernetes kümesi kurun
- kubectl CLI aracını tanıyın ve temel komutları pratik edin
- İlk Deployment ve Service nesnelerinizi oluşturun
- ConfigMap, Secret ve PersistentVolume kavramlarını öğrenin
- Helm chart'larını inceleyerek paket yönetimini anlayın
Sonuç
Kubernetes, modern yazılım altyapısının temel taşıdır. Doğru planlanmış bir Kubernetes stratejisi, uygulamalarınızın ölçeklenebilirliğini, güvenilirliğini ve taşınabilirliğini dramatik şekilde artırır. Marta Teknoloji olarak Kubernetes küme kurulumu, yönetimi ve DevOps süreçlerinizin otomasyon hizmetleriyle yanınızdayız.
