diagram-sankeyTemel 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 (eth0 olarak görünür), diğer ucu ise Node'un (Host) namespace'inde (veth... veya cali... 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.

  • lsns ve ip 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 addr komutunda görülen sanal arayüz eşleşiyorsa, CNI eklentisi görevini doğru yapmış demektir.


Last updated