Temel Kavramlar
1. Pod Mimarisi: Paylaşılan Namespace ve "Pause" Konteyneri
Kubernetes bir Pod oluştururken, önce "Pause Container" (veya Infra Container) adı verilen, çok az kaynak tüketen bir işlem başlatır. Bu konteynerin tek amacı, bir Network Namespace oluşturmak ve bu alanı açık tutmaktır.
Asıl uygulama konteynerleri (örneğin Java uygulaması veya Nginx), başlatıldığında bu mevcut namespace'e dahil olur.
Bu mimari sayesinde, bir Pod içindeki tüm süreçler aynı IP adresini ve port aralığını paylaşır.
localhostüzerinden yapılan iletişim, fiziksel ağ kartına hiç uğramadan çekirdek seviyesinde gerçekleştiği için ağ gecikmesi neredeyse sıfırdır.
2. Pod-to-Pod Bağlantı
Geleneksel Docker yapılarındaki gibi port mapping veya NAT işlemine gerek yoktur. Pod A'nın IP'si neyse, hedef Pod B bu paketi o IP adresinden geldiği şekliyle görür.
Bu durum, ağ paketlerinin başlıklarının değiştirilmesi işlemini ortadan kaldırarak CPU yükünü azaltır ve izlenebilirliği artırır.
3. CNI ve Sanal Kablolama
CNI (Container Network Interface), bu mantıksal yapıyı fiziksel (sanal) dünyaya bağlayan arayüzdür.
Veth Pair: CNI eklentisi, Pod oluşturulduğunda bir ucu Pod'un namespace'inde (
eth0olarak görünür), diğer ucu ise Node'un (Host) namespace'inde (veth...veyacali...gibi bir isimle) bulunan sanal bir kablo oluşturur.Pod'dan çıkan bir veri paketi,
eth0üzerinden bu sanal tünelden geçer ve Node'un ağ namespace'ine ulaşır. Buradan sonra yönlendirme (routing) kuralları devreye girer ve paket hedefe iletilir.
4. Tanılama ve İnceleme
Sistem yöneticileri, Kubernetes katmanında bir sorun olduğunda (örneğin kubectl yanıt vermediğinde), Linux araçlarıyla sorunu kök seviyede analiz edebilir.
lsnsveip netns: Linux çekirdeğindeki izole alanları listeler. Hangi işlemin hangi ağ alanında çalıştığını doğrulamak için kullanılır.Eğer Pod'un IP'si ile
ip addrkomutunda görülen sanal arayüz eşleşiyorsa, CNI eklentisi görevini doğru yapmış demektir.
Last updated