Kubernetes teknolojisine kısa bir giriş

Kubernetes teknolojisine kısa bir giriş

K8s olarak da bilinen; yazılım dağıtımını, ölçeklendirmeyi ve yönetimini otomatikleştirmek için açık kaynaklı bir yerleştirme düzenleme sistemi olan Kubernetes teknolojisini inceliyoruz.
Merve Özdeş09 Ara 2022

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. 

Worker node bileşenleri: 

  • Pod (bölme): 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.
  • Kubelet: 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.
  • Kube-proxy: 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.
  • cAdvisor: Söz konusu düğümde çalışan bölmeler hakkında ölçümler toplar. 
  • Container runtime: Kapsayıcı görüntülerini yönetmekten ve bu düğümde kapsayıcıları çalıştırmaktan sorumludur.


 

Master node bileşenleri: 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:

  • Kube-apiserver: 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.
  • Etcd: 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.
  • Kube-scheduler: 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.
  • Kube-controller manager: Node yönetiminden (bir Node’nin başarısız olup olmadığını algılama), pod çoğaltmadan ve uç nokta oluşturmadan sorumludur.
  • Cloud-controller-manager: 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.
     

Kubernetes’e kısa bir giriş yaptık ve Kubernetes yapısından ve bileşenlerinden bahsettik. Peki, neden Kubernetes kullanmalıyız? Kubernetes kullanımı ne gibi avantajlar sağlıyor?

  • Kubernetes, geliştirme ve dağıtım süreçlerini büyük ölçüde basitleştirir: Örneğin, kapsayıcı entegrasyonunu sağlar veya farklı sağlayıcılardan depolama kaynaklarına erişimin yönetimini kolaylaştırır. Ayrıca, mimarinin microservices’e dayalı olduğu senaryolarda uygulama, API'ler aracılığıyla birbirleriyle iletişim kuran işlevsel birimlere bölünür. Böylece geliştirme ekibi, her biri tek bir özellikte uzmanlaşan daha küçük gruplara bölünebilir. Bu da ekiplerin daha fazla odak ve verimlilikle çalışmasına imkan sağladığı için hız konusunda avantaj sağlar.
  • Dinamik ve akıllı kapsayıcı yönetimi aracılığıyla kuruluşların ekosistem yönetiminden tasarruf etmesine yardımcı olarak birden çok ortamda ölçeklenebilirlik sağlar. Otomasyon sayesinde, BT ekiplerinin sistem yönetimiyle ilgili çok sayıda operasyonel görevi yerine getirmesi gerekmez, bu nedenle katma değerli görevleri gerçekleştirmek için daha fazla imkanları olur. Uygulamalar herhangi bir ortamda ayrım gözetmeksizin çalıştığı için işletmeler her bir özel iş yükü için hangi kaynaklara (şirket içi, özel bulut veya genel bulut) güveneceklerine karar vermekte daha özgür olurlar.
  • En büyük faydalardan biri olan kapsayıcılaştırma ve Kubernetes çözümü, yeni hibrit ve çoklu bulut ortamlarının vaatlerini gerçekleştirmeyi mümkün kılar ve uygulamaların herhangi bir kamu ve özel ortamda, işlevsel veya performans kaybı olmadan çalışmasını garanti eder. Kısacası çoklu bulut ortamlarında esneklik sağlar.
  • Olağanüstü durum kurtarma özelliği, Kubernetes’i kapsayıcı alanında farklı kılar. Fiziksel veya bulut tabanlı altyapınıza talihsiz bir şey olması halinde uygulamanızın her zaman en son verilere ve uygulama durumlarına sahip olmasını sağlar.


 

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.


 

Kaynaklar

Miuul topluluğunun bir parçası ol!

Abone ol butonuna tıklayarak Miuul'dan pazarlama ve haber içerikleri almayı onaylıyorum.