Değerli THT Ailesi, Bu Konumuzda Container Networking Nedir? Sorusunun cevabını öğrenerek bilgi kütüphanemize yeni bir kitap ekleyeceğiz. Container Networking sistemine değinmeden önce Container yani Konteyner nedir bu sorunun cevabını hep birlikte öğrenelim?

Konteyner dediğimiz zaman aklımıza ilk gelen devasa gemilerin limanlarda yüklediği ya da boşalttığı aynı boyutlardaki kapalı demir yığınları gelir. Konuya giriş olarak daha iyi anlaşılması için konteyner üzerinden örneklendirmeye devam edelim.

Her bir konteyner içerisinde farklı farklı ürünler malzemeler ve yiyecekler bulunmakta. Birinin içerisinde gıda, diğerinde teknolojik ürünler bir başkasında ise kıyafet olabilir. Her farklı ürün için özel bir gönderim yöntemi yok. Bu konteynerler her biri birbirinden bağımsız ve her biri aynı ebatlarda. Bulundukları yerden başka bir yere ortam kısıtlaması olmadan kolaylıkla taşına bilirler. Bu sayede taşıma işlemleri standart kurallara göre yapıla bilir.



Şimdi ne oluyor ben neredeyim gemicilik dersinde miyim diye düşünmenize gerek yok, doğru yerdesiniz 😊 Aslında bugünkü konumuz ise bu teknolojiyle çok benzerlik gösterdiğinden ve isim olarak alıntı yapıldığından bu örneklendirme mantığı ile yola çıkılarak konuyu daha iyi anlamanızı sağlayacak.

Arkadaşlar geleneksel mimaride, yani eski mimaride fiziksel sunucu üzerinde tek bir işletim sistemi çalışırdı. Tüm kaynakları tek bir işletim sistemi kilitlerdi. İhtiyaç duyduğumuz tüm uygulamaları bu sunucu üzerine yüklerdik. Fakat aynı uygulamanın farklı sürümlerini aynı sistem üzerinde çalıştırmak mümkün değildi. Sonrasında hayatımıza sanallaştırma HYPERVİSOR diye bir kavram girdi. Sunucu üzerinde birden fazla ve birbirinden bağımsız sanal sunucular oluşturup kullanmaya başladık.

Sanal işletim sistemi üzerine uygulamaları yükledik. Sanal mimariyi çok sevdik oldukça işimizi kolaylaştırdı. Buraya kadar her şey tamam fakat sanal platformda bizi kesmedi ve şimdide konteyner mimarisi diye yeni bir mimariden bahsetmeye başladık.



Konteyner tanımına geçmeden önce farklı örnekler ile konunun hafızamızda daha iyi canlanmasını sağlayalım.

X kişi boş konteyner içerisinde bir süre yaşamak istiyor. Bu kişinin yaşamsal faaliyetlerine devam ettirebilmesi için yani hayatta kalabilmesi için konteynere girmeden önce konteynere alacağı malzemeler neler olmalıdır. Yani x kişinin konteynerde ayakta durabilmesi için hava, su ve temel gıdalar şeklinde ihtiyaçları sıralaya biliriz. Bunları sağladığımızda konteyner içerisinde herhangi bir hata vermeden yaşayabilecektir.]

Şimdi bu örneği teknik tarafa uygulayarak devam edelim.
Elimizde bir USB Bellek var ve bunun içerisinde de uygulamamız mevcut. Bu uygulamayı çalıştıra bilmemiz için neye ihtiyaç duyarız. Şimdi bunları sıralayalım




Bunların ilk başında Kernel dediğimiz işletim sistemine ihtiyacımız var akaidinde bu uygulamanın kullandığı SSL Kütüphaneleri ihtiyaç duyacağız ve son olarak bu uygulamanın kullandığı tüm spesifik bağımlılıklara ihtiyacımız var akabinde bu uygulamayı çalıştıra bilir duruma geleceğiz. Bir uygulanın yaşamsal döngülerini devam ettire bilmesi için yani uygulamanın sorunsuz çalışa bilmesi için neye ihtiyaç duyulur bu kısmı biraz daha detaylandıralım.

Bunların ilk başında uygulama kodu gelmektedir arkadaşlar. Uygulama kodu olmadan uygulama çalışmayacaktır. Akabinde uygulama konfigürasyon dosyalarına ihtiyaç duyacağız sonrasında SSL kütüphanesi, çalışma zamanlayıcısı ve diğer tüm bağımlılıklar olmazsa olmaz seçenek arasında yer almaktadır. Tüm bu seçenekleri bir araya getirdiğimizde var olan uygulamalar çalışa bilir duruma gelecektir. İşte bunu gören kişiler demiş ki; Bir uygulamanın ihtiyaç duyduğu tüm Komponentleri bir araya getirelim ve bu Komponentleri bir kutu içerisine yerleştirelim bu kuyu içerisine uygulamanın yaşamsal döngülerini devam ettire bilmesi için yani yukarıdaki örnekte x kişinin konteyner içerisinde yaşaya bilmesi için konteyner içerisine aldığı malzemeler gibi gerekli olmazsa olmaz tüm dosyaları bu kutu içerisine yerleştirelim demişler. Ve bu kutuyu fiziksel bilgisayara yüklenen işletim sistemi üzerinde konteyner yöneticisi aracılığı (Docer vb.) ile çalıştıralım demişler. Bu kutu içerisinde ki uygulamayı dış dünyadan tamamen bağımsız izole olacak şekilde sunucu üzerinde çalıştırmayı hedeflemişlerdir. Ve bu kutu nereye taşınırsa taşınsın bu kutu içerisindeki uygulama ve uygulama bağımlılıkları da beraberinden gideceği için herhangidir sorun olmadan çalıştıra bilsin demişler, işte bu kutunun adına konteyner demişler.

Şimdi konteyner nedir sorusunun cevabını verebiliriz.

Konteyner, bir uygulamanın ihtiyaç duyulan tüm bağımlılıklar, kütüphaneler ve diğer tüm nesnelerle paketlenerek standart hale getirilmesidir.

Konteyner mimarisinde en alt katmanda donanım bir üst katmanda Linux veya Windows tarzı biri işletim sistemi, işletim sistemi üzerinden konteyner yöneticisi (docker vb.) bunun üzerinden birbirinden tamamen izole olarak çalışan konteynerler çalışmaktadır.



- Hangi konteyner içerisinde ne olduğunu diğer konteynerler bilemez.
- Yazılım gereksinimlerinin standart olmasını sağlar
- Yazılımlar birbirinden ayırır, izole çalıştırır. Böylelikle aynı yazılımın birden fazla farklı sürümlerini sorunsuz şekilde çalıştırmamıza olanak sağlar.
- Tek OS ile çalıştığından donanımsal veri tüketimini minimuma indirger.
- Her Konteyner birbirinden tamamen izole bir şekilde sadece içerisinde ki uygulamaları çalıştırmaktadır.
- Orta katmanda bulunan konteyner yöneticisi sayesinde (Docer vb.) konteynerler oluşturmakta, çalıştıra bilmekte ve yönetile bilmektedir.



Konteyner Mimarisini anladığımızı varsayarak şimdide de konteyner ağ mimarisinden bahsedelim.

Teknik olarak konteynerler birbirinden izole durumdadır. Ancak konteynerleri birbirine bağlaya biliriz.




Container mimarisinde ağların temel gereksinimi olarak içinde bulunan IP,IPAM,NAT veya Route üzerinden dış ağlara bağlantı kuracak bileşenleri sayabiliriz. Konteynerler bir birleri ile IP üzerinden haberleşe bilirler fakat aynı host üzerinden bağlanmaları gerekmektedir. Bu imkan sağlandıktan sonra port yönlendirme gerekmektedir. Flannel teknolojisi ile IP ve Port ikilisinin yayınlamasına engel olabiliriz. Bu çözümler ile birden fazla konteynerler ile iletişim kurmamızı sağlayabiliriz.

Yazımı okuduğunuz için Teşekkür eder iyi Forumlar dilerim.