input-textNamespaces

Teknik olarak bir Pod, aynı Network Namespace'i (Ağ Ad Alanını) paylaşan konteynerler grubudur.

  • İşleyiş: Pod içindeki ana uygulama (örneğin Java) ve yan uygulamalar (örneğin Log agent), Linux çekirdeğinde aynı ağ namespace'i kullanır.

  • Pod içindeki herhangi bir konteynerde ip addr çalıştırıldığında aynı IP ve MAC adresi görülür. Bu nedenle localhost iletişimi mümkündür.

2. "Pause" Konteyneri

  • Görevi: Bu konteynerin tek işi, bir Network Namespace oluşturmak ve onu "açık tutmaktır".

  • Neden Gerekli? Eğer ana uygulamanız (örneğin Nginx) çökerse, Namespace'in de yok olmaması gerekir. "Pause" konteyneri, Pod yeniden başlatılana kadar ağ kimliğini (IP adresini) korur.

  • Node üzerinde lsns -t pid komutuyla bakıldığında, network namespaceleri tutan süreçlerin aslında bu "Pause" konteynerleri olduğu görülür.

3. Veth Çiftleri

İzole edilmiş bir Namespace'in (Pod) dış dünyayla konuşabilmesi için bir kabloya ihtiyacı vardır.

  • Sanal Kablolama: CNI eklentisi, Veth Pair (Sanal Ethernet Çifti) oluşturur.

    • Bir uç Pod'un Namespace'ine takılır (eth0).

    • Diğer uç Host'un (Node) Namespace'ine takılır (veth...).

  • Pod'dan çıkan veri, bu sanal tünelden geçerek Node'un ana ağına ulaşır ve oradan yönlendirilir.

4. Sorun Giderme Araçları

  1. lsns: Sistemdeki tüm izole alanları listeler. Hangi Pod'un hangi ID'ye sahip olduğunu bulmak için kullanılır.

  2. ip netns identify <PID>: Bir sürecin (Process) hangi CNI ağına ait olduğunu doğrular. İsimlerin cni- ile başlaması, yönetimin CNI eklentisinde olduğunu gösterir.

  3. ip netns exec <ns-adı> ip addr: "Dışarıdan içeriye bakmak" için kullanılır. Node üzerindeyken, sanki Pod'un içindeymiş gibi komut çalıştırmanızı sağlar.

Last updated