Bulut teknolojilerinin günümüzde yaygın kullanımı, kapsayıcı (container) kavramını ortaya çıkarmış ve kapsayıcı teknolojilerinin önemi artmıştır. Bu yazımda Kubernetes teknolojisine kısa bir giriş yapacağız. Yunanca dümenci veya pilot anlamına gelen Kubernetes kelimesi bazı kaynaklarda “k8s” şeklinde kendine yer bulur. 8 rakamı “K” ve “s” harflerinin arasında sekiz harf bulunmasını temsil etmektedir. Büyük, hızla büyüyen bir ekosisteme sahip olan Kubernetes, Google tarafından 2014 yılında açık kaynaklı hale getirilmiştir.
Uygulamaları paketlemek ve çalıştırmak için kapsayıcı teknolojileri oldukça yaygın bir biçimde kullanılmaktadır. Bu kapsayıcıların, organizasyonu kesintisiz ve sorunsuz bir şekilde çalışmasını sağlaması gerekir. Yani bir kapsayıcı ile sıkıntı oluştuğunda diğer kapsayıcılar devreye girmelidir. Bunun organizasyonunu yapmak için bir sisteme ihtiyaç duyulur. Bu ihtiyacı karşılayan Kubernetes, dağıtılmış sistemlerin esnek bir şekilde çalıştırılması için kullanıcılara bir çerçeve sağlar. Uygulama için kapsayıcıların çalışma şeklini ve yerini organize etmeye yönelik bir API sunar. Bir sunucunuz ve bu sunucunun üzerinde birden fazla kapsayıcınız olduğunu düşünelim. Sunucunuzla ilgili bir sıkıntı yaşadığınız zaman kapsayıcılar üzerinden verdiğiniz hizmetler çalışmayacaktır. Kubernetes bu gibi durumlarda size iyi bir çözüm olacaktır. Kubernetes, böyle bir durumda bu kapsayıcıların kopyalarını çalıştırarak hizmetin devam etmesini sağlar. Kısacası, birden fazla kapsayıcınız olduğunda bu kapsayıcıların ölçeklendirilmesi sırasında yaşanan sıkıntıların üstesinden gelmenizde yardımcı olur.
Kubernetes’in yapısına baktığımızda Hadoop mantığına benzer şekilde Kubernetes yapısında da master ve worker denilen node’lar bulunmaktadır. Aşağıdaki şekilde de görülebildiği üzere worker ve master node’ları içerisinde farklı bileşenler bulunmaktadır.
Kubernetes bölmesi olarak da karşılaşabileceğiniz bu bölmeler, Kubernetes'te oluşturabileceğiniz ve yönetebileceğiniz en küçük konuşlandırılabilir bilgi işlem birimleridir. Bir pod içerisinde birden fazla kapsayıcı bulunabilir.
Kümedeki (cluster) her düğümde çalışan bir aracıdır. Kapsayıcıların bir Pod'da çalışmasını sağlar. Kubelet, çeşitli mekanizmalar aracılığıyla sağlanan istekleri alır ve bu isteklerde açıklanan kapsayıcıların çalışır ve sağlıklı olmasını sağlar. Kubelet, Kubernetes tarafından oluşturulmamış kapsayıcıları yönetmez.
Kümenizdeki her düğümde çalışan ve Kubernetes hizmeti konseptinin bir parçasını uygulayan bir ağ proxy'sidir. Kısaca Kubernetes network’üdür. Kube-proxy, düğümlerde ağ kurallarını korur. Bu ağ kuralları, kümenizin içindeki veya dışındaki ağ oturumlarından Pod'larınızla ağ iletişimine izin verir.
Söz konusu düğümde çalışan bölmeler hakkında ölçümler toplar.
Kapsayıcı görüntülerini yönetmekten ve bu düğümde kapsayıcıları çalıştırmaktan sorumludur.
Kubernetes kümesini yönetmekten sorumludurlar. Bir Kubernetes kümesi içindeki bir dağıtımın temel birimi olan bölmelerin (Pod) yaşam döngüsünü yönetirler. Ana sunucular aşağıdaki bileşenleri çalıştırır.
Kubernetes API sunucusunun en önemli bileşeni ve giriş noktasıdır. Diğer tüm komponentlerin ve node bileşenlerinin direkt iletişim kurabildiği tek bileşendir.
Kubernetes'in tüm küme bilgilerinin kalıcı olarak depolanması için kullandığı dağıtılmış anahtar/değer deposu veya veritabanıdır.
Atanmış düğümü olmayan yeni oluşturulan Pod'ları izleyen ve üzerinde çalışacakları bir düğüm seçen kontrol düzlemi bileşenidir. Bireysel ve toplu kaynak gereksinimleri, donanım/yazılım kısıtlamaları ve veri konumu gibi faktörleri dikkate alarak zamanlamayı yapar.
Node yönetiminden (bir Node’nin başarısız olup olmadığını algılama), pod çoğaltmadan ve uç nokta oluşturmadan sorumludur.
API'ler ve farklı bulut sağlayıcıların araçları (depolama hacimleri, yük dengeleyiciler vb.) arasında bir soyutlama katmanı gibi davranan arka plan programıdır.
Bu yazımda Kubernetes hakkında fikir edinmeniz açısından genel hatlarıyla Kubernetes’e kısa bir giriş yaptık. Kısaca Kubernetes’in yapısından ve avantajlarından bahsettik. Kubernetes ile ilgili daha fazla bilgiye erişmek ve oluşturduğunuz kapsayıcılarınızı Kubernetes ile dağıtımının yapılmasını uygulamalı olarak öğrenmek isterseniz Miuul’un size sunduğu Data Engineer Path veya Production Level Data Science programlarını inceleyebilirsiniz.