Kubernetes, hem bildirim temelli yapılandırmayı hem de otomasyonu kolaylaştıran, konteyner platformu üzerine alınmış iş yüklerini ve hizmetleri yönetmek için taşınabilir ve genişletilebilir, açık kaynaklı bir platform.
Son dönemde adından fazlasıyla söz ettiren Kubernetes platformunun kullanım sayısı gün geçtikte artıyor. Buna bağlı olarak Kubernetes üzerinden sunulan hizmetlerin sayısı, desteği ve araçları da geniş çapta bulunabiliyor.
Kubernetes adı, dümenci veya pilot anlamına gelen Yunancadan geliyor. Google, Kubernetes projesini 2014’te açık kaynaklı hale getirdi. Bu sayede özellikle Konteyner platformu kullanan veya kullanmak isteyen kullanıcıların işini fazlasıyla kolaylaştırdı.
Kubernetes ile ne yapabilirsiniz?
Bu sorunun cevabına geçmeden önce isterseniz zamanda biraz geriye giderek Kubernetes’in neden bu kadar kullanışlı olduğuna bir göz atalım. Tabii ki çok da gerilere gitmeye gerek yok. Geleneksel BT döneminden başlayabiliriz. Bu dönemde kuruluşlar uygulamalarını fiziksel sunucularda çalıştırdılar. Fiziksel sunucudaki uygulamalar için kaynak sınırlarını tanımlamanın bir yolu yoktu. Bu olumsuz durum kaynak tahsisi sorunlarına neden oluyordu. Örneğin, bir fiziksel sunucuda birden fazla uygulama çalıştırılırsa, bir uygulamanın kaynakların çoğunu alacağı ve sonuç olarak diğer uygulamaların düşük performans gösterdiği durumlar olabiliyordu. Bunun için bir çözüm aradılar. Her uygulamayı farklı bir fiziksel sunucuda çalıştırmak bir çözüm olabilirdi. Ancak kaynaklar yetersiz kullanıldığından bu gerçekleşmedi. Ayrıca kuruluşların birçok fiziksel sunucuyu çalıştırması pahalı bir çözümdü.
Sonrasında sanallaştırma dönemi çıkageldi. Sanallaştırılan sunucular ile tek bir fiziksel sunucunun işlemcisinde birden çok Sanal Makine (VM) çalıştırılmasına izin verildi. Sanallaştırma, uygulamaların VM’ler arasında izole edilmesine izin verir ve bir uygulamanın bilgilerine başka bir uygulama tarafından serbestçe erişilemediği için güvenlik düzeyi de sağlar. Sanallaştırma, fiziksel bir sunucudaki kaynakların daha iyi kullanılmasına izin verir ve daha iyi ölçeklenebilirlik sağlar. Çünkü bir uygulama kolayca eklenebilir veya güncellenebilir, donanım maliyetleri de böylece azalmış olur.
Sanallaştırma ile, bir dizi fiziksel kaynağı tek kullanımlık sanal makinelerin bir kümesi olarak sunabilirsiniz. Her sanal makine, sanallaştırılmış donanımın üzerinde kendi işletim sistemi dahil tüm bileşenleri çalıştıran eksiksiz bir makinedir.
Geldik günümüze. Bugün ayrı bir dönem yaşanıyor ve biz ona Konteyner dönemi diyoruz. Konteyner platformu VM’lere yani sanal makinelere benziyor, ancak İşletim Sistemini (OS) uygulamalar arasında paylaşmak için rahat yalıtım özelliklerine sahip. Bu nedenle konteynerler daha hafif kabul ediliyor. Bir sanal makineye benzer şekilde, bir konteynerin kendi dosya sistemi, işlemci payı, bellek, işlem alanı gibi özellikleri var. Konteyner platformu altyapıdan bağımsız olduğu için, bulutlar ve işletim sistemi sürümleri arasında hızlıca taşınabiliyorlar.
Konteynerler, aşağıdakiler gibi ekstra faydalar sağladıkları için popüler hale geldi
Hızlı uygulama geliştirme ve devreye alma: Sanal makine kullanımına kıyasla, konteyner kullanımı hız ve verimliliği fazlasıyla artırıyor.
Geliştirme, entegrasyon ve dağıtım: Hızlı ve verimli platform sayesinde uygulama geliştirme veya geliştirilen bir uygulamanın platforma taşınması eski platformlara göre çok daha kolay gerçekleştirilebiliyor.
DevOps endişeleri ortadan kalkıyor: Geliştirilen uygulamalar altyapıdan bağımsız olduğu için yazılım tarafındaki endişelerin önüne geçiliyor.
Şeffaflık: Konteyner, yalnızca işletim sistemi düzeyinde bilgi ve ölçümleri değil, aynı zamanda uygulama sağlığı ve diğer verileri de ortaya koyarak uygulama geliştiricisine yardımcı olabiliyor.
Geliştirme, test ve üretimde çevresel tutarlılık: Platform bulutta olduğu gibi dizüstü bilgisayarda da aynı şekilde çalışıyor. Böylece mekandan bağımsız olarak aynı performansı alabiliyorsunuz.
Uygulama merkezli yönetim: Bir işletim sistemi çalıştırmadan mantıksal kaynakları kullanarak sanal donanım üzerinde uygulama çalıştırabilirsiniz. Bu durum soyutlama düzeyini yükseltir.
Kolay bir şekilde birleştirilmiş, dağıtılmış, esnek, serbestleştirilmiş mikro hizmetler: Uygulamalar daha küçük, bağımsız parçalara bölünüyor ve dinamik olarak konuşlandırılabilir ve yönetilebiliyor.
Kaynak yalıtımı: Konteyner platformu üzerinde çalıştırılan uygulama için öngörülebilir performans sunuyor.
Kaynak kullanımı: Konteyner platformu üzerinde çalıştırılan uygulama yüksek verimlilik ile hayat buluyor.
Neden Kubernetes’e ihtiyacınız var ve neler yapabilirsiniz?
Konteynerlar, uygulamalarınızı paketlemenin ve çalıştırmanın iyi bir yoludur. Bir üretim ortamında, uygulamaları çalıştıran konteynerleri yönetmeniz ve kesinti olmadığından emin olmanız gerekir. Örneğin, bir konteyner çalışmazsa, başka bir konteynerin onun yerine çalışması gerekir. Bu davranış bir sistem tarafından ele alınsaydı daha kolay olmaz mıydı?
İşte Kubernetes kurtarmaya böyle geliyor! Kubernetes, dağıtılmış sistemleri esnek bir şekilde çalıştırmanız için size bir çerçeve sağlıyor. Uygulamanız için ölçeklendirme ve yük devretme ile ilgileniyor, dağıtım kalıpları ve daha fazlasını sağlıyor.
Kubernetes ’in kullanıcısına sağladığı avantajlar
Hizmet ve yük dengeleme: Kubernetes, DNS adını veya kendi IP adreslerini kullanarak bir konteyneri açığa çıkarabiliyor. Bir konteynere giden trafik yüksekse, Kubernetes dağıtımın kararlı olması için ağ trafiğini düşürebiliyor veya dağıtabiliyor.
Depolama düzenleme: Kubernetes, yerel depolama alanları, genel bulut sağlayıcıları veya seçtiğiniz bir depolama sistemini otomatik olarak birbirine bağlamanıza olanak tanıyor.
Otomatik kullanıma sunma ve geri alma: Kubernetes kullanarak konuşlandırılmış konteynerleriniz için istenen durumu tanımlayabiliyor. Ve gerçek durumu kontrollü bir hızda istenen duruma çevirebilirsiniz. Örneğin, dağıtımınız için yeni konteynerler oluşturması, mevcut konteynerleri kaldırması ve tüm kaynaklarını yeni konteynere ayarlaması için Kubernetes’i otomatikleştirebilirsiniz.
Otomatik paketleme: Kubernetes’e, konteynere alınmış görevleri çalıştırmak için kullanabileceği bir düğüm (node) kümesi sağlarsınız. Kubernetes’e her konteynerin ne kadar işlemci (CPU) ve belleğe (RAM) ihtiyacı olduğunu söylersiniz. Kubernetes, kaynaklarınızdan en iyi şekilde yararlanmak için düğümlerinize (node) konteynerler sığdırabiliyor.
Kendi kendini onarmak: Kubernetes, başarısız olan konteynerleri yeniden başlatır, konteynerleri değiştirir, kullanıcı tanımlı durum kontrolünüze yanıt vermeyen konteynerleri sonlandırır ve hizmet vermeye hazır olana kadar istemcilere tanıtmaz.
Gizlilik ve yapılandırma yönetimi: Kubernetes, parolalar ve SSH anahtarları gibi hassas bilgileri depolamanıza ve yönetmenize olanak tanır. Gizli diziler ve uygulama yapılandırmasını konteyner görüntülerinizi yeniden oluşturmadan ve yığın yapılandırmanızdaki sırları açığa çıkarmadan dağıtabilir ve güncelleyebilirsiniz. Detaylı bilgi için buradaki makaleye göz atabilirsiniz.
Kubevirt’i Tanıyalım
Kubernetes üzerinde Linux konteyner iş yüklerini çalıştırmaya alıştığınızda, kendinizi Kubernetes kümenizde başka türden iş yükleri çalıştırabilmeyi dilerken bulabilirsiniz. Belki de konteynerler için tasarlanmış olmayan veya Linux çekirdeğinin farklı bir sürümünü (ya da konteyner ana makinenizde bulunandan tamamen farklı bir işletim sistemi) gerektiren bir uygulama çalıştırmanız gerekiyor. Bu tür iş yükleri genellikle sanal makinelerde (VM) çalışmak için çok uygundur. Kubernetes için bir sanal makine yönetimi eklentisi olan KubeVirt, kullanıcıların Kubernetes veya OpenShift kümelerindeki konteynerlerinin yanında sanal makineleri çalıştırmalarına izin vermeyi amaçlıyor.
KubeVirt, Kubernetes’in Özel Kaynak Tanımları API’si (CRD) aracılığıyla sanal makineler için kaynak türleri ve sanal makine setleri ekleyerek Kubernetes’i genişletir. KubeVirt sanal makineleri, standart ağa ve depolamaya erişime sahip oldukları normal Kubernetes bölmelerinde çalışır ve kubectl gibi standart Kubernetes araçları kullanılarak yönetilebilir.
Kubernetes ile sanal makineleri çalıştırmak, oVirt veya OpenStack gibi bir uygulama kullanmaya kıyasla biraz ayarlama gerektirir ve KubeVirt ‘ in temel mimarisini anlamak, başlamak için iyi bir yerdir.
Uygulamaları dağıtmanın birçok yolu vardır ve en iyi yol her uygulama için farklı olabilir. Bir uygulama ekibi olarak geçmişte sanallaştırma ve konteynerleştirme arasında seçim yapmak oldukça zor bir karardı. Kim, çoğu zaman birden çok platformda düzenleme yaparak zaman kaybetmek veya dağıtım kolaylığı ve hızı arasında ödün vermek ister? KubeVirt, her iki dünyayı birleştirerek Kubernetes’in konteynere alınmış iş yükleri gibi sanal makineleri planlamasına, dağıtmasına ve yönetmesine olanak tanıyor. Detaylı bilgi için buraya tıklayarak bilgi alabilirsiniz.
İlgili haberler
>> Açık Hibrit Bulut Nedir? Modern ve Çok Yönlü Bir Altyapı İçin Nelere İhtiyacınız Var?
>> Dijital Dönüşümde Yapay Zekanın ve Öğrenen Makinelerin Rolü
>> Bulut Yerlisi (Cloud Native) Nedir? Yazılım geliştirmenin modern yolu ve API Ekonomisi