Namespaces
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 nedenlelocalhostiletiş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 pidkomutuyla 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ı
lsns: Sistemdeki tüm izole alanları listeler. Hangi Pod'un hangi ID'ye sahip olduğunu bulmak için kullanılır.ip netns identify <PID>: Bir sürecin (Process) hangi CNI ağına ait olduğunu doğrular. İsimlerincni-ile başlaması, yönetimin CNI eklentisinde olduğunu gösterir.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