- Pod, node ve cluster nedir?
- Pod nedir ve neden konteynerin kendisi değildir?
- Node nedir ve üzerinde neler çalışır?
- Cluster nedir ve kontrol katmanı ne yapar?
- Küçük bir örnek: web uygulamasını cluster'a koymak
- Sık karıştırılan noktalar ve yaygın hatalar
- Bu kavramları Mindset programlarında nerede çalışırsınız?
- Sık sorulan sorular
Kubernetes'te Pod, Node ve Cluster Arasındaki Fark
Pod konteynerleri taşıyan en küçük birim, node onları çalıştıran makine, cluster ise tüm makinelerin oluşturduğu yapıdır. Farkları burada.
Pod, node ve cluster nedir?
Kubernetes'te temel kavramlar birbirinin içinde yer alır. Pod, Kubernetes'in çalıştırabileceği en küçük dağıtım birimidir ve bir ya da birkaç konteyneri birlikte taşır. Node (düğüm), pod'ların fiilen çalıştığı makinedir; fiziksel sunucu olabileceği gibi sanal makine de olabilir. Cluster (küme) ise bu makinelerin ve onları yöneten kontrol katmanının oluşturduğu bütündür.
Basit bir benzetmeyle: cluster bir liman işletmesi, node limandaki rıhtımlar, pod ise rıhtımda duran ve içinde bir ya da birkaç konteyner bulunan yük birimidir. Uygulamanız pod'lar halinde node'lara dağıtılır, bütün bunu cluster yönetir.
Pod nedir ve neden konteynerin kendisi değildir?
Konteyner uygulamanızı yalıtılmış biçimde çalıştırır; pod ise bir veya birkaç konteyneri saran Kubernetes nesnesidir. Aynı pod içindeki konteynerler aynı ağ adresini ve portlarını paylaşır, aynı depolama birimlerine erişebilir ve birlikte zamanlanır. Bu yüzden birbirine sıkı bağlı yardımcı süreçler, örneğin ana uygulama ile günlük toplayan yardımcı konteyner aynı pod'a konabilir.
Pod'un önemli bir özelliği geçici olmasıdır. Bir pod silinirse ya da çalıştığı node arızalanırsa aynı pod geri gelmez; yerine yeni bir pod oluşturulur ve yeni bir ağ adresi alır. Bu yüzden kalıcı veri pod içinde değil, ayrı depolama birimlerinde tutulur ve pod'lara erişim doğrudan adresle değil Service nesnesi üzerinden verilir.
Node nedir ve üzerinde neler çalışır?
Node, Kubernetes iş yüklerini çalıştıran işçi makinedir. Her node üzerinde kubelet adlı bir ajan, konteyner çalışma zamanı ve ağ trafiğini yönlendiren bir bileşen bulunur. Kubelet, kontrol katmanından gelen pod tanımlarını alır, ilgili konteynerlerin çalıştığından emin olur ve durumu raporlar.
Bir node'un bir işlemci ve bellek kapasitesi vardır. Zamanlayıcı (scheduler), yeni bir pod için hangi node'un uygun olduğuna kaynak talepleri, etiketler ve kısıtlar üzerinden karar verir. Node dolarsa yeni pod başka bir node'a gider ya da bekler. Bu yüzden pod tanımlarında kaynak istekleri ve sınırları belirtmek, kümenin dengeli çalışması için önemlidir.
Cluster nedir ve kontrol katmanı ne yapar?
Cluster, en az bir kontrol katmanı (control plane) ile bir veya birden çok node'dan oluşur. Kontrol katmanı kümenin beynidir ve şu bileşenleri içerir: API sunucusu kümeyle konuşulan kapıdır, etcd kümenin durum bilgisini saklayan anahtar-değer deposudur, zamanlayıcı pod'ları node'lara atar, kontrolcüler ise istenen durum ile gerçek durumu karşılaştırıp aradaki farkı kapatır.
Kubernetes'in temel mantığı budur: siz istenen durumu bildirirsiniz, örneğin 'bu uygulamanın birkaç kopyası çalışsın'. Kontrol katmanı gerçekte ne olduğunu sürekli izler ve fark varsa düzeltir. Bir pod çökerse yenisi başlatılır, bir node kaybolursa o node'daki pod'lar başka node'larda yeniden oluşturulur.
Küçük bir örnek: web uygulamasını cluster'a koymak
Örneğin bir web uygulamasının imajını hazırladınız ve kümenin çok sayıda kopya çalıştırmasını istiyorsunuz. Bunu doğrudan pod olarak değil, Deployment nesnesi ile tanımlarsınız. Deployment, istenen kopya sayısını korur ve pod'lar üzerinde sürüm güncellemesini kademeli yapar.
Zamanlayıcı pod'ları farklı node'lara dağıtır; böylece tek bir makine arızalansa bile uygulama çalışmaya devam eder. Service nesnesi bu pod'ların önünde sabit bir adres ve yük dengeleme sağlar. Pod'lar öldürülüp yenilense bile kullanıcılar aynı adrese bağlanmaya devam eder. Bu akışta pod, node ve cluster rollerini ayrı ayrı görebilirsiniz: pod uygulamanın kopyasıdır, node onu barındıran makinedir, cluster hepsini düzenleyen yapıdır.
Sık karıştırılan noktalar ve yaygın hatalar
- Pod'u konteynerle özdeş saymak: bir pod birden çok konteyner taşıyabilir ve ağ ile depolamayı paylaşır
- Pod'u kalıcı sanmak: pod yeniden oluşturulduğunda içindeki yerel veri kaybolur, kalıcı veri için depolama birimi gerekir
- Pod'u elle çalıştırmak: tek başına oluşturulan pod arızada geri gelmez, bu yüzden uygulamalar çoğunlukla Deployment gibi üst nesnelerle yönetilir
- Kaynak sınırı tanımlamamak: bir pod node'un belleğini tüketip komşu pod'ları etkileyebilir
- Cluster ile namespace'i karıştırmak: namespace aynı cluster içindeki mantıksal bölümlemedir, ayrı bir küme değildir
Bu kavramlar netleştiğinde sorun giderme de kolaylaşır: bir pod başlamıyorsa neden zamanlayıcıda, node'da, imajda ya da yapılandırmada olabilir; hangi katmana bakılacağı bu ayrımla belirlenir.
Bu kavramları Mindset programlarında nerede çalışırsınız?
Kubernetes ile Orkestrasyon programı 'Kubernetes Mimarisi ve Temel Kavramlar' modülünün yanında iş yükü kaynakları, servis ve ağ yönetimi ile depolama konularını içerir. Kubernetes Administrator (CKA) Hazırlık programı ise küme kurulum ve yapılandırma ile sorun giderme modüllerini barındırır.
Pod, node ve cluster ayrımı bu programlarda soyut tanım olarak değil, iş yükü kaynakları, servis ağı ve sorun giderme gibi uygulamalı başlıkların içinde yer bulur; kavramları bir kez oturttuktan sonra bu başlıklar daha anlaşılır hale gelir.
İlgili Mindset programı
Kubernetes ile Orkestrasyon
Sık sorulan sorular
Bir node'da birden fazla pod çalışabilir mi?
Evet. Bir node, kaynak kapasitesi elverdiği sürece birçok pod çalıştırabilir. Zamanlayıcı pod'ları node'lara kaynak taleplerine göre dağıtır. Aynı uygulamanın kopyalarının farklı node'lara yayılması hata toleransı sağlar, bu nedenle bu dağılım genellikle istenen bir durumdur.
Bir pod'da birden fazla konteyner olması normal mi?
Evet, ancak yaygın kullanım pod başına tek ana konteynerdir. Birden fazla konteyner, birbirine sıkı bağlı yardımcı süreçler gerektiğinde kullanılır; örneğin günlük toplayan veya trafik yönlendiren yardımcı konteyner. Birbirinden bağımsız ölçeklenecek uygulamaları aynı pod'a koymak ise önerilmez.
Kubernetes'te pod kendiliğinden yeniden başlar mı?
Bu pod'un nasıl oluşturulduğuna bağlıdır. Deployment gibi bir üst nesne tarafından yönetilen pod'lar çöktüğünde ya da node kaybolduğunda yenilenir. Doğrudan oluşturulmuş yalın pod'lar ise node arızasında geri gelmez. Konteyner çökmelerinde yeniden başlatma davranışı pod'un yeniden başlatma politikasıyla belirlenir.
Cluster ile node arasındaki fark nedir?
Node tek bir çalışan makinedir. Cluster ise kontrol katmanı ile bütün node'ların birlikte oluşturduğu yapıdır. Küme içinde node eklenip çıkarılabilir; uygulamanız ise tek tek node'lara değil, cluster'a dağıtılır ve zamanlayıcı yerleşimi sizin yerinize yapar.
İlgili rehberler
İlgili eğitimler
Kategori: DevOps ve Bulut Teknolojileri