Kubernetes Nedir? Pod, Deployment ve Cluster Yapısı
Kubernetes, konteynerlerde çalışan uygulamaların birden fazla sunucuda çalışmasını ve istenen durumda kalmasını sağlar. Pod, node, deployment ve service kavramları, platformun temel çalışma modelini oluşturur.

Bu yazıda neler var?
Kubernetes, konteynerlerde çalışan uygulamaları sunucular arasında dağıtan, yöneten ve ölçeklendiren açık kaynaklı bir platformdur. Örneğin uygulamanızın 3 kopyasını istediğinizde Kubernetes bu kopyaları çalıştırır, çöken bir kopyanın yerine yenisini başlatır ve trafiği uygun hedeflere yönlendirir.
Kubernetes Ne İşe Yarar?
Kubernetes, uygulamanın nasıl çalışması gerektiğini tanımlamanızı sağlar. Siz hedef durumu belirtirsiniz; platform da bu durumu korumak için gerekli işlemleri yürütür. Bu model, tek tek sunuculara bağlanıp komut çalıştırma ihtiyacını azaltır.
Bir web uygulaması için 3 pod, her pod için 512 MiB bellek ve 250 millicore işlemci isteyebilirsiniz. Podlardan biri durduğunda Kubernetes yeni bir pod başlatır. Trafik alan uygulamalarda replica sayısını artırarak kapasiteyi yükseltebilirsiniz.
- Uygulamaları bir veya daha fazla sunucuya dağıtır.
- Çalışmayan podları yeniden oluşturur.
- İstenen replica sayısını korur.
- Servisler için sabit ağ erişimi sağlar.
- Depolama birimlerini podlarla ilişkilendirir.
- Yeni sürümlerde kademeli güncelleme yapar.
Kubernetes otomasyonu, uygulama çalıştırma sürecinin tamamını kendiliğinden çözmez. Konteyner imajı, kaynak sınırları, ağ kuralları ve kalıcı depolama gibi ayrıntıları sizin tanımlamanız gerekir. Bu nedenle yapılandırma dosyalarının sürüm kontrolünde tutulması işletim sürecini kolaylaştırır.
Kubernetes Nasıl Çalışır?
Kubernetes, bildirime dayalı bir çalışma modeli kullanır. YAML dosyasında uygulamanın hedef durumunu tanımlarsınız. Kubernetes API'si bu tanımı alır ve cluster içindeki mevcut durumla karşılaştırır.
Mevcut durum hedef durumdan farklıysa ilgili denetleyiciler işlem başlatır. 3 replica istenirken 2 pod çalışıyorsa yeni bir pod oluşturulur. 4 pod çalışıyorsa fazlalık pod sonlandırılır. Bu kontrol döngüleri, cluster çalıştığı sürece durumu takip eder.
- Uygulama imajını bir container registry'ye gönderin.
- Deployment içinde imajı ve replica sayısını tanımlayın.
- Yapılandırmayı Kubernetes API'sine uygulayın.
- Scheduler, pod için uygun node'u seçsin.
- Kubelet, container runtime üzerinden container'ı başlatsın.
- Service ve ilgili ağ bileşenleri trafiği podlara iletsin.
Bir podun IP adresi değişebileceği için doğrudan pod adresine bağlanmayın. Bunun yerine Service kullanın. Service, pod grubuna sabit bir erişim noktası sağlar ve uygun podlara trafik yönlendirir.
Cluster, Control Plane ve Node Yapısı
Cluster, Kubernetes tarafından birlikte yönetilen kaynak grubudur. İki ana bölümden oluşur: control plane ve worker node'lar. Control plane kararları yönetir; node'lar ise uygulama podlarını çalıştırır.
| Bileşen | Görevi | Pratik örnek |
|---|---|---|
| API server | Kubernetes isteklerini kabul eder. | Deployment tanımını alır. |
| etcd | Cluster durumunu saklar. | Replica sayısını ve ayarları tutar. |
| Scheduler | Pod için uygun node'u seçer. | Kaynakları yeterli node'u belirler. |
| Controller manager | Hedef ve mevcut durumu eşleştirir. | Eksik podu yeniden oluşturur. |
| Kubelet | Node üzerindeki podları çalıştırır. | Container runtime'a komut verir. |
| Container runtime | Container yaşam döngüsünü yönetir. | containerd veya CRI-O kullanır. |
Control plane bileşenleri tek bir node üzerinde bulunabilir. Üretim ortamlarında yüksek erişilebilirlik için birden fazla control plane örneği kullanılabilir. Node üzerindeki kubelet, pod tanımını izler ve beklenen container'ların çalışmasını sağlar.
Node seçimi yalnızca boş işlemci miktarına göre yapılmaz. Taints, tolerations, node selector ve affinity kuralları da yerleştirmeyi etkiler. Örneğin yalnızca SSD depolama bulunan node'lara pod yerleştirmek için etiket ve seçim kuralları tanımlayabilirsiniz.
Pod Nedir ve Nasıl Kullanılır?
Pod, Kubernetes'in çalıştırılabilir en küçük birimidir. Bir pod içinde 1 veya daha fazla container bulunabilir. Aynı poddaki container'lar ağ alanını ve tanımlanan depolama birimlerini paylaşır.

Basit bir web uygulamasında çoğu zaman bir pod içinde tek container bulunur. Yardımcı bir log veya proxy container'ı ana uygulamayla aynı yaşam döngüsünü paylaşacaksa ikinci container eklenebilir. Birbirinden bağımsız çalışan iki uygulamayı aynı podda toplamak doğru yerleşim değildir.
- Ağ: Aynı poddaki container'lar localhost üzerinden iletişim kurabilir.
- Depolama: Ortak volume tanımıyla aynı dosya alanına erişebilirler.
- Yaşam döngüsü: Pod içindeki container'lar aynı node üzerinde başlar.
- Ölçekleme: Uygulama kapasitesi pod kopyaları artırılarak yükseltilir.
Pod IP'si kalıcı bir adres değildir. Pod silinip yeniden oluşturulduğunda yeni bir IP alabilir. Bu nedenle dış istemcileri pod IP'sine bağlamayın; Service, Ingress veya uygun bir Gateway katmanı kullanın.
İpucu: Pod kaynaklarını tanımlarken requests ve limits değerlerini birlikte yazın. Örneğin 250 millicore CPU isteği ve 512 MiB bellek limiti, scheduler ile çalışma zamanının farklı beklentiler oluşturmasını önler.
Deployment Ne Yapar?
Deployment, stateless uygulamalar için pod kopyalarını ve sürüm geçişlerini yönetir. Siz imajı, replica sayısını ve güncelleme stratejisini tanımlarsınız. Deployment, bu hedefi korumak için ReplicaSet oluşturur.
Deployment içinde 3 replica tanımlandığında ReplicaSet üç podun çalışmasını sağlar. İmaj etiketini yeni sürüme çevirdiğinizde Kubernetes podları kontrollü biçimde yeniler. Güncelleme sırasında eski ve yeni podların birlikte çalışacağı süreyi rolling update ayarlarıyla belirleyebilirsiniz.
- Deployment YAML dosyasında mevcut imajı belirtin.
- Replica sayısını ve kaynak taleplerini tanımlayın.
- Yeni imaj etiketini yayınlayın.
- Deployment durumunu ve pod sağlığını izleyin.
- Sorun varsa önceki revision'a geri dönün.
Deployment, kalıcı verisi olmayan web sunucuları ve API'ler için uygundur. Veritabanı gibi kimlik ve depolama düzeni gerektiren uygulamalarda StatefulSet daha doğru bir model olabilir. DaemonSet ise her uygun node üzerinde bir pod çalıştırmak için kullanılır.
Docker ve Kubernetes Arasındaki Fark
Docker, container imajı oluşturma ve container çalıştırma araçlarını sunar. Kubernetes ise çok sayıda container'ı, podu ve bunların çalıştığı node'ları bir cluster içinde yönetir. Bu iki teknoloji aynı katmanda yer almaz.

| Özellik | Docker | Kubernetes |
|---|---|---|
| Ana amaç | İmaj oluşturmak ve container çalıştırmak | Container tabanlı uygulamaları cluster genelinde yönetmek |
| Ölçekleme | Tek sunucuda manuel veya sınırlı otomasyon | Replica, node ve servis düzeyinde yönetim |
| İyileştirme | Container başlatma ve durdurma | Yeniden başlatma, yerleştirme ve sürüm geçişi |
| Ağ | Host ve Docker ağları | Pod, Service ve cluster ağı |
| Çalışma ortamı | Tek makine veya sınırlı grup | Birden fazla node'dan oluşan cluster |
Kubernetes podları çalıştırmak için doğrudan Docker Engine'e bağlı değildir. Kubernetes, container runtime olarak containerd veya CRI-O gibi CRI uyumlu araçları kullanabilir. Docker ile hazırladığınız imajlar, uyumlu bir registry üzerinden Kubernetes ortamında çalıştırılabilir.
Tek sunucuda birkaç container çalıştırmak için Docker Compose yeterli olabilir. Birden fazla node, otomatik iyileştirme, servis keşfi ve kontrollü sürüm geçişi gerekiyorsa Kubernetes daha uygun bir yönetim katmanı sunar.
Kubernetes Hangi Durumlarda Kullanılır?
Kubernetes, uygulamanın birden fazla makinede çalışması veya çalışma durumunun otomatik izlenmesi gerektiğinde anlam kazanır. Ekipler aynı dağıtım yöntemini geliştirme, test ve üretim ortamlarında kullanabilir.
- Bir API'nin 3 veya daha fazla replica ile çalışması gereken sistemler
- Trafiğin gün içinde değiştiği web uygulamaları
- Canary veya rolling update ile sürüm yayımlayan ekipler
- Birden fazla servis içeren mikroservis mimarileri
- Container tabanlı batch işlerini zamanlayan platformlar
- Bulut ve şirket içi sunucular arasında taşınabilirlik isteyen ekipler
Kaynak ihtiyacını planlarken pod sayısını, her podun CPU ve bellek taleplerini birlikte hesaplayın. Örneğin 4 podun her biri 500 millicore CPU ve 1 GiB bellek istiyorsa yalnızca uygulama talepleri 2 CPU ve 4 GiB bellektir. Sistem bileşenleri ve işletim sistemi için ayrıca pay bırakın.
Cluster'ı sanal sunucular üzerinde çalıştırmayı düşünüyorsanız VPS nedir? rehberindeki kaynak ve ağ kavramlarını inceleyin. Bulut sağlayıcısı seçerken AWS, Microsoft Azure ve Google Compute Engine seçeneklerini node, depolama ve ağ ihtiyaçlarıyla karşılaştırın.
Sık Yapılan Kubernetes Hataları ve Çözümleri
Kubernetes sorunlarının önemli bölümü uygulama imajından veya YAML tanımından kaynaklanır. Hata mesajını pod durumu, olay kayıtları ve container loglarıyla birlikte değerlendirin. Tek bir komut çıktısına bakarak karar vermek teşhisi zorlaştırır.
| Hata | Belirti | Çözüm |
|---|---|---|
| Yanlış image etiketi | ImagePullBackOff | Registry adresini ve imaj etiketini kontrol edin. |
| Eksik kaynak tanımı | Pod beklemede kalır. | requests değerlerini node kapasitesiyle karşılaştırın. |
| Yanlış Service selector'ı | Endpoint bulunmaz. | Pod etiketleriyle selector alanını eşleştirin. |
| Kalıcı volume tanımsızlığı | Veri pod silinince kaybolur. | Uygun PersistentVolumeClaim kullanın. |
| Readiness probe hatası | Trafik pod'a ulaşmaz. | Endpoint, port ve başlangıç süresini düzeltin. |
Bir Deployment'ın çalışması, uygulamanın trafiğe hazır olduğu anlamına gelmez. Readiness probe başarısızsa Service podu endpoint listesinden çıkarır. Liveness probe ise uygulama kilitlendiğinde container'ın yeniden başlatılmasına yardımcı olur.
İpucu: Sorun incelemek için önce kubectl get pods, ardından kubectl describe pod ve kubectl logs çıktısını sırayla kontrol edin. Böylece durum, olay ve uygulama logunu ayrı değerlendirebilirsiniz.
Kubernetes Sürümü ve Başlangıç Kararı
Resmî sürüm sayfasında 1.37.1, 15 Eylül 2026 tarihli en güncel Kubernetes sürümü olarak listeleniyor. Kurulumdan önce control plane, node ve kullandığınız eklentilerin desteklediği sürüm aralığını kontrol edin.
İlk cluster'ınızı kurarken küçük ve ölçülebilir bir uygulama seçin. Bir Deployment, bir Service ve bir readiness probe ile başlayın. Ardından 2 replica çalıştırıp bir podu silerek Kubernetes'in hedef durumu nasıl koruduğunu gözlemleyin.
Üretim ortamına geçmeden önce yedekleme, erişim yetkileri, secret yönetimi, ağ politikaları ve izleme planını tanımlayın. Cluster erişimini geniş yetkili tek bir kullanıcıya bırakmayın. Rol tabanlı erişim kontrolüyle ekiplerin ihtiyaç duyduğu kaynaklara sınır koyun.
Yapılandırmalarınızı Git deposunda tutun ve her değişikliği inceleme sürecinden geçirin. Böylece deployment, service ve kaynak ayarlarını gerektiğinde karşılaştırabilir, önceki çalışan tanıma dönebilirsiniz.