Networking
Kubernetes kurulumunda pod'lara IP dağıtılması için, bir IP adres aralığı, yada Kubernetes terminolojisinde bilinen adıyla --pod-network-cidr belirlenir. Kubernetes de her pod, bu CIDR bloğundan atacanacak eşsiz IP adresine sahip olur. Aynı cluster içerisindeki tüm pod'lar, Varsayılan olarak, birbirleriyle herhangi bir kısıtlama olmadan ve NAT olmadan haberleşir.
CNI projesi Linux container 'larda, Ağ arabirimlerini yapılandırmak için, Eklentiler yazılabilmesini sağlayan kuralları belirler. CNI yalnızca container 'ların Ağ bağlantısıyla ve container 'lar silindiğinde ayrılan kaynakların kaldırılmasıyla ilgilenir. Bu odak nedeniyle CNI geniş bir desteğe sahiptir. CNI çözümlerine uygun, yapacağımız işe göre uygun bir plugin seçip, Kubernetes cluster 'ımızda kullanabiliriz. Bu, Worker node 'lar üzerinde bulunan pod 'ların birbirleriyle haberleşmesi ve Cluster network alt yapısının düzgün çalışabilmesi için zorunluluktur.
Bu driver (plugin)ler ortama uygun seçilmelidir. Özetle, Kubernetes ağ altyapımızın düzgün çalışabilmesi, pod 'ların ve diğer komponentlerin birbirleriyle sağlıklı haberleşebilmesi için CNI standartlarına uygun bir plugin seçmeliyiz. Kubernetes burada bize bir plugin sunmaz, sadece standartları belirler. CNI plugin 'i cluster 'da bulunan node'lara yükleyerek, Kubernetes 'in, bu network yönetimini yüklediğimiz plugin'e devretmesini sağlayabiliyoruz.
Örneğin Calico kullandığımızı düşünelim. Bu noktadan itibaren, Pod 'ların, IP adreslerinin atanmasını, IPtables kurallarının oluşturulması ve düzenlenmesi, Node 'lar arası POD cidr bloğunun nat 'siz çalışması için gereken, overlay tanımlarını yaparak, Kubernetes ağ alt yapısının düzgün çalışması için uygulanan tüm görevler calico driver tarafından halledilir.
Kubernetes 'de bir pod oluşturduğumuz zaman, scheduler bu pod'un çalışacağı node 'u seçer. Ve kubelet burada devreye girerek pod 'u oluşturur. Pod için atanacak IP adresinin belirlenmesi, bunun pod 'a atanması, ve alt yapı da ayarlanması gereken tüm işlerin halledilmesi işi ise, seçtiğimiz plugin olan calico tarafından sağlanır. Böylece pod 'lar farklı node üzerinde olsalar bile, birbirleriyle haberleşebilirler. Kubernetes de pod'ların birbirleriyle haberleşmeleri ve dış dünya ile haberleşmeleri , yani igress trafiği bu pluginler sayesinde gerçekleşir.
Last updated