Kubernetes Nedir?

Kubernetes, uygulamaların dağıtımını, yönetimini ve ölçeklendirmesini planlamak ve otomatikleştirmek için kullanılan bir container düzenleme platformudur. “Kube” ya da “k8n” olarak da bilinmektedir. Günümüzde geniş containerized ekosistemleri, genel amaçlı bir bilgi işlem platformuna ve ekosistemine dönüşüyor. Bu ekosistem, kurumların bulutta geliştirmeyle ilgili birden fazla altyapı ve operasyonla ilgili görevi ve sorunu ele alan yüksek verimliliğe sahip bir Platform-as-a-Service (PaaS) sunmasını sağlar, böylece geliştirme ekipleri yalnızca kodlama ve inovasyona odaklanabilir.

Kubernetes-Logo-1-1024x576-1

Container’lar, uygulama kodunun, OS kütüphane ve bağımlılıklarıyla birlikte, masaüstünde, geleneksel BT’de veya bulutta herhangi bir yerde çalıştırılabilmesi için ortak yollarla paketlendiği yürütülebilir yazılım birimleridir.

Container Nedir ?

Container’lar, işlemleri izole ederek ve bu işlemlerin erişebileceği CPU, bellek ve disk miktarını kontrol ederek birden çok uygulamanın bir işletim sisteminin tek bir örneğini paylaşmasına izin veren bir işletim sistemi (OS) sanallaştırma biçiminden yararlanır. Sanal makinelerden (VM’ler) daha küçük, kaynak açısından daha verimli ve daha taşınabilir olduklarından, modern cloud native uygulamaların fiili bilgi işlem birimleri haline geldi.

Container’lar, Sanal Makineler ve Geleneksel Altyapı

BT altyapısı otomasyonu ve soyutlamasının sürekliliğindeki en son nokta olarak container’ları anlamak daha kolay veya daha yararlı olabilir.

Geleneksel altyapıda, uygulamalar fiziksel bir sunucu üzerinde çalışır ve alabildikleri tüm kaynakları alır. Bu size, tek bir sunucuda birden fazla uygulama çalıştırma ve birinin diğerlerinin kaynaklarını tüketmemesini veya kaynakları israf eden ve ölçeklenemeyen uygulama başına bir sunucu ayırmamayı umut etmeyi öğretir 🙂

Sanal makineler (VM’ler), gerçek bilgisayar donanımından soyutlanmış sunuculardır ve tek bir fiziksel sunucuda veya birden fazla fiziksel sunucuya yayılan birden çok VM çalıştırmanıza olanak tanır. Her sanal makine kendi işletim sistemini çalıştırır ve her uygulamayı kendi sanal makinesinde izole ederek aynı temel fiziksel donanım üzerinde çalışan uygulamaların birbirini etkilemesi olasılığını azaltabilirsiniz. Sanal makineler kaynakları daha iyi kullanır ve ölçeklendirmesi geleneksel altyapıya göre çok daha kolay ve daha uygun maliyetlidir. Artık uygulamayı çalıştırmanız gerekmediğinde sanal makineyi kapatırsınız.

Container yapılar, bu soyutlamayı daha yüksek bir düzeye taşır; özellikle, temeldeki sanallaştırılmış donanımı paylaşmanın yanı sıra, altta yatan, sanallaştırılmış bir OS kernel’i de paylaşırlar. Container’lar, sanal makinelerle aynı yalıtımı, ölçeklenebilirliği ve kullanılabilirliği sunar ancak kendi işletim sistemi instance’larının yükünü taşımadıkları için sanal makinelerden daha az alan kullanırlar. Kaynak açısından daha verimlidirler; daha az OS instance’ı ile daha az makinede (sanal ve fiziksel) daha fazla uygulama çalıştırmanıza izin verirler. Container’lar, masaüstü, veri merkezi ve bulut ortamlarında daha kolay taşınabilir. Ayrıca Agile ve DevOps geliştirme uygulamaları için mükemmel bir seçimdir.

Docker Nedir?

Docker, Linux® container’ları oluşturmak ve çalıştırmak için en popüler araçtır. İlk container türleri onlarca yıl önce FreeBSD Jails ve AIX Workload Partitions gibi teknolojilerle piyasaya sürülürken, container’lar 2013’te Docker’ın developer dostu yeni bir uygulama kullanıma sunmasıyla özgürleşti.

Docker(Docker Inc.) bir açık kaynak projesi olarak başladı, ancak bugün aynı zamanda açık kaynak projesini temel alan (ve bu iyileştirmeleri açık kaynak topluluğuna geri getiren) ticari bir container toolkit’i haline geldi. Docker, geleneksel Linux container (LXC) teknolojisi üzerine inşa edilmiştir, ancak Linux kernel işlemlerinin daha parçalı sanallaştırılmasını sağlar ve geliştiricilerin container oluşturmasını, dağıtmasını, yönetmesini ve güvenliğini sağlamasını kolaylaştıran özellikler ekler.

Günümüzde Open Container Initiative (OCI), CoreOS ve Canonical (Ubuntu) LXD gibi alternatif container platformları mevcut olsa da Docker o kadar yaygın bir şekilde tercih ediliyor ki neredeyse container ile eşanlamlı ve bazen aşağıdakiler gibi tamamlayıcı teknolojilere rakip olmakla karıştırılıyor.

vertical-logo-monochromatic-1024x876-1

Kubernetes ile Container Orkestrasyonu

Container’lar çoğaldıkça operasyon ekiplerinin container dağıtımını, network oluşturmayı, ölçeklenebilirliği ve kullanılabilirliği programlaması ve otomatikleştirmesi gerekmektedir. Böylece container orkestrasyonuna ihtiyaç doğdu. Diğer container düzenleme opsiyonları ilk zamanlar ilgi görse de, Kubernetes hızla en yaygın benimsenen oldu. Kubernetes, açık kaynak yazılım tarihindeki en hızlı büyüyen projeydi.

Geliştiriciler, geniş işlevselliği, büyüyen açık kaynak destek araçları ekosistemi, bulut hizmeti sağlayıcıları genelinde desteği ve taşınabilirliği nedeniyle Kubernetes’i tercih etti ve etmeye de devam ediyor. Amazon Web Services (AWS), Google Cloud, IBM Cloud ve Microsoft Azure dahil olmak üzere tüm önde gelen genel bulut sağlayıcıları, tümüyle yönetilen Kubernetes hizmetleri sunmaktadır.

Peki Kubernetes Ne Yapar?

Aşağıda sıraladığımız maddeler de dahil olmak üzere, Kubernetes, uygulama yaşam döngüsü boyunca container’lar ile ilgili görevleri planlar ve otomatikleştirir.

Dağıtım

Belirli sayıdaki container’ları belirlenmiş bir host’a dağıtır ve istenen durumda çalışmasını sağlar.

Service discovery

Kubernetes bir container’ı, IP adresi veya DNS adını kullanarak internete veya diğer container’lara otomatik olarak  açabilir.

Storage provisioning

Kubernet’i container’larınızın ihtiyaç duyduğu şekilde lokal veya cloud storage atamak için kullanın.

Load balancing

CPU kullanımına veya özel ölçümlere dayalı olarak, Kubernetes yük dengeleme, performansı ve kararlılığı korumak için iş yükünü network genelinde dağıtabilir.

Autoscaling

Kubernetes otomatik ölçeklendirme, trafikte artış olduğunda, ek iş yükünün üstesinden gelmek için yeni workload’lar oluşturabilir.

Self-healing for high availability

Bir container fail olduğunda, Kubernetes kapalı kalma süresini önlemek için onu otomatik olarak yeniden başlatabilir veya değiştirebilir. Ayrıca sağlık kontrolü ile gereksinimlerinizi karşılamayan container’ları da kaldırabilir.

Kubernetes vs. Docker

Kubernetes Docker Swarm’a bir alternatif olsa da Docker’ın kendisine bir alternatif veya rakip değildir. Docker’ı benimsediyseniz ve büyük ölçekli Docker tabanlı container dağıtımları oluşturuyorsanız, Kubernetes düzenlemesi bu iş yüklerini yönetmek için mantıklı olan bir sonraki adımdır.

Kubernetes ile ilgili daha fazla bilgi için bizimle iletişime geçin!
Bu formu bitirebilmek için tarayıcınızda JavaScript'i etkinleştirin.
İsim - Soyisim
BT Hizmet Yönetimi NOC Sistemleri