blog posts

Kubernetes nedir?

Kubernetes (k8s veya Kube olarak da bilinir), kapsayıcılı uygulamaları dağıtma, yönetme ve ölçeklendirme ile ilgili manuel işlemleri otomatikleştiren açık kaynaklı bir kapsayıcı düzenleme platformudur.

 

Kubernetes nedir | Sistaş

 

Kubernetes kümesi nedir?

Kubernet’leri kullanarak, bir dizi Linux kapsayıcı ana bilgisayarını kümeleyebilir ve bunları kolay ve verimli bir şekilde yönetebilirsiniz. Kubernetes kümeleri, dahili bulut, genel bulut, özel bulut ve hibrit bulut ortamlarındaki ana bilgisayarları kapsar.
Bu nedenle Kubernetes, hızlı ölçeklenebilirlik gerektiren Apache Kafka aracılığıyla eşzamanlı veri akışı gibi gerçek bulut uygulamalarını barındırmak için ideal bir platformdur.

 

 

Kubernetes’in arka planı

Kubernet’ler orijinal olarak Google mühendisleri tarafından tasarlanmış ve geliştirilmiştir. Google, Linux kapsayıcı teknolojisini ilk benimseyenlerden biriydi ve Google’daki her şeyin kapsayıcılarda (Google’ın bulut hizmetlerinin arkasındaki teknoloji) nasıl çalıştığını herkese açık bir şekilde duyurdu.
Google, tümü şirket içi platformu Borg tarafından desteklenen, haftada iki milyardan fazla kapsayıcı dağıtır. Borg, Kubernetes’in önceki nesliydi ve Borg’un yıllar içinde geliştirilmesinden çıkarılan dersler, Kubernetes teknolojisinin büyümesinin arkasındaki ana faktördü.

İlginç nokta: Kubernetes logosundaki yedi kaldıraç, projenin orijinal adı olan “Project Seven of Nine”a atıfta bulunur. 2015 yılında Google, yeni kurulan Cloud Native Computing Foundation’a (CNCF) Kubernetes bağışladı.

 

 

Kubernetes kullanmanın faydaları nelerdir?

Kubernetes’i özellikle bulutta kullanmanın avantajı, size Kubernetes kümelerinde kapsayıcılar çalıştırmak için bir platform sağlamasıdır.

Kubernet’leri kullanarak, üretim ortamlarında kapsayıcı tabanlı bir altyapıyı tam olarak devreye alabilir ve bu altyapıya güvenebilirsiniz. Kubernetes’in ana uygulaması, BT operasyonları ekibinin görevlerinin otomasyonunda olduğundan, Kubernetes ayrıca size operasyon ekibinin kapsayıcılarla çalışmak için yazılım platformlarının ve yönetim sistemlerinin birçok yeteneğini sağlar. Geliştiriciler, bir platform olarak Kubernetes modellerini kullanarak Cloud Native uygulamaları derleyip çalıştırabilir. Kalıplar, bir Kubernetes geliştiricisinin konteyner tabanlı uygulamalar ve hizmetler oluşturmak için ihtiyaç duyduğu araçlardır.

 

 

Kısacası, Kubernet’leri kullanarak şunları yapabilirsiniz:

 

  • • Birden çok ana bilgisayarda kapsayıcıları düzenleyin.
  • • Kurumsal uygulama yürütme kaynaklarının kapasitesini artırmak için donanım kullanımını optimize edin.
  • • Uygulama dağıtımını ve güncellemelerini kontrol edin ve otomatikleştirin.
  • • Durum bilgisi olan uygulamaları çalıştırmak için gereken depolama alanını artırın.
  • • Kapsayıcılı uygulamaların ve bunların gerekli kaynaklarının yürütme hızını artırın.
  • • Uygulamaların istediğiniz gibi çalışmasını sağlamak için hizmetleri bildirimli olarak yönetin.
  • • Dağıtım, çoğaltma veya dağıtım süreçlerini otomatikleştirerek uygulama ölçeklemesini, sistem durumunu izlemeyi ve uygulama kendi kendini iyileştirmeyi iyileştirin.

 

Ancak Kubernetes, tam düzenleme hizmetleri sağlamak için diğer projelere güvenir. Diğer açık kaynak projelerinin eklenmesiyle Kubernetes’in gücü daha belirgin hale geliyor. Bu temel hizmetler şunlardır:

 

  • • Docker Registry gibi projeler aracılığıyla kayıt
  • • OpenSwitch ve akıllı uç yönlendirme gibi projeler aracılığıyla ağ oluşturma
  • • Kibana, Hawkular ve Elastic gibi projeler aracılığıyla telemetri
  • • Birden çok çoklu kiralama katmanına sahip LDAP, SELinux, RBAC ve OAUTH gibi projeler aracılığıyla güvenlik
  • • Küme yaşam döngüsünü yüklemek ve yönetmek için Ansible çalışma kitapları ekleyerek otomasyon
  • • Popüler uygulama geliştirme modellerini içeren bir katalog aracılığıyla çeşitli hizmetler

 

 

Kubernetes ile ilgili terimler

Diğer tüm teknolojiler gibi Kubernetes’in özel dili de kullanımını bir şekilde engelliyor. Aşağıda, Kubernetes’i daha iyi anlamak için genel terimleri inceleyeceğiz.

Kontrol Düzlemi: Kubernetes düğümlerini kontrol eden bir dizi işlem. Görev ataması kontrol merkezinde yapılır.
Düğümler: Düğümler, kontrol merkezi tarafından belirlenen talep edilen görevleri yerine getiren makinelerdir.
Bölme: Bir düğümde dağıtılan bir veya daha fazla kapsayıcı koleksiyonu. Bir bölmedeki tüm kapsayıcılar aynı IP adresini, IPC’yi, ana bilgisayar adını ve depolama alanını paylaşır. Kapsüller, kapsayıcılarından ağ bağlantılarını ve depolamayı alır. Bu şekilde, kümedeki kapları taşımak daha kolay hale gelir.
Çoğaltma denetleyicisi: Bu özellik ile bir bölmenin kopya sayısı kontrol edilir. Aslında çoğaltma denetleyicisi, kümede belirli bir konumda bir bölmenin birbirinin aynı kopyalarından kaç tanesinin çalıştırılması gerektiğini belirler.
Hizmet: Bu özellik, iş tanımlarını bölmelerden ayırır. Kubernetes hizmet proxy’leri, bu hizmet proxy’leri kümede taşınsa veya değiştirilse bile hizmet isteklerini otomatik olarak uygun bölmeye iletir.
Kubelet: Bu hizmet, düğümler üzerinde çalışır, kap bildirimlerini okur ve tanımlı kapların başlatılmasını ve çalışmasını sağlar.
Kubectl: Kubectl, Kubernetes’te bir komut satırı yapılandırma aracıdır.

 

Kubernet’ler nasıl çalışır?

Çalışan bir Kubernetes dağıtımına küme denir. Bir Kubernetes kümesi iki bölüme ayrılır: kontrol merkezi ve bilgi işlem makineleri veya düğümleri.

 

Her düğüm ayrı bir Linux ortamı olarak kabul edilir ve fiziksel veya sanal bir makine olabilir. Her düğüm, birkaç kapsayıcıdan oluşan bölmeleri çalıştırır. Kontrol merkezi, hangi uygulamaların çalıştığı ve hangi kapsayıcı görüntülerini kullandıkları gibi kümenin optimum durumunu korumaktan sorumludur. Bilgi işlem makineleri aslında programları ve iş yüklerini yürütür. Kubernetes, işletim sistemini izler ve düğümlerde çalışan kapsayıcı bölmeleriyle etkileşime girer. Kubernetes kontrol merkezi, yöneticiden (veya DevOps ekibinden) komutlar alır ve bu komutları bilgi işlem makinelerine gönderir.

Bu aktarım birden fazla servisle yapılır ve hangi düğümün istenen göreve uygun olduğunu otomatik olarak belirler, ardından kaynakları tahsis eder ve istenen görev için o düğümdeki bölmeleri belirler.
Bir Kubernetes kümesinin en uygun durumu, hangi uygulamaların veya iş yüklerinin, kullandıkları görüntülerle birlikte çalıştırılacağını, hangi kaynakların onlara sağlanacağını ve diğer yapılandırma ayrıntılarını belirtir.
Altyapı açısından, konteynerlerin nasıl yönetildiği konusunda çok az fark vardır. Container’lar üzerindeki kontrolünüz sadece üst seviye ile ilgilidir ve her bir container’ı veya düğümü ayrı ayrı yönetmenize gerek kalmaz.

İşiniz, Kubernet’leri yapılandırmayı ve bunların içindeki düğümleri, bölmeleri ve kapları tanımlamayı içerir. Kubernet’ler kapsayıcıları düzenler.
Kubernetes’i nerede çalıştıracağınız size kalmış. Kubernet’ler fiziksel sunucularda, sanal makinelerde, genel ve özel bulut hizmet sağlayıcılarında ve hibrit bulut ortamlarında çalıştırılabilir. Aslında Kubernetes’in en önemli avantajlarından biri farklı altyapılarda çalıştırılabilmesidir.

 

Docker’ın rolü nedir?

Docker, Kubernet’ler tarafından yönetilen konteynerleri çalıştırmak için bir platform olabilir. Kubernetes, belirli bir düğüme bir bölme atadığında, bu düğümdeki cublet, Docker’a belirtilen kapsayıcıları başlatması talimatını verir. Coblet daha sonra konteynerlerin durumunu Docker’dan sürekli olarak toplar ve elde edilen bilgileri kontrol merkezinde entegre eder. Docker, istenen düğümdeki kapları çeker ve ardından bu kapları başlatır ve durdurur.
Bu nedenle, Docker kullanmanın avantajı, tüm bu görevleri tek tek kaplarda manuel olarak yapmak yerine, sistemin tüm bu işlemleri otomatik olarak Docker’a bırakmasıdır.

 

Neden Kubernetes’e ihtiyacınız var?

Kubernetes, kapsayıcılı, eski, bulut yerel uygulamaları ve mikro hizmetler olarak yeniden düzenlenen uygulamaları sağlar ve yönetir.
Değişen iş ihtiyaçlarını karşılamak için geliştirme ekibinin yeni uygulamaları ve hizmetleri hızlı bir şekilde oluşturabilmesi gerekir. Bulutta yerel geliştirme, kapsayıcı mikro hizmetleriyle başlar; Bu sayede geliştirme süreci daha hızlı ilerler ve mevcut uygulamaları değiştirmek ve optimize etmek daha kolay hale gelir.

Üretim uygulamaları birden çok kapsayıcıyı desteklemeli ve kapsayıcılar birden çok sunucu ana bilgisayarına dağıtılmalıdır. Kubernetes, size bu ölçekte ve bu iş yükü için kapsayıcıları dağıtmak için ihtiyacınız olan yönetim ve düzenleme yeteneklerini sağlar.
Kubernetes orkestrasyonunu kullanarak, birden çok kapsayıcıyı destekleyen uygulama hizmetleri oluşturabilir, kapları bir kümede planlayıp ölçeklendirebilir ve zaman içindeki durumlarını izleyebilirsiniz.

Kapsamlı bir konteyner altyapısı sağlamak için Kubernetes’in ağ oluşturma, depolama, güvenlik, telemetri ve diğer birçok hizmetle entegre olması gerekir. Açıktır ki, istediğiniz ölçek üretim alanı kadar büyük olduğunda ve farklı uygulamalar içerdiğinde, aynı anda farklı servisleri çalıştırmak için aynı sunucu üzerinde birkaç konteynere ihtiyaç duyarsınız.

 

Linux kapsayıcıları, mikro hizmet tabanlı uygulamalarınıza ideal bir dağıtım birimi ve bağımsız bir yürütme alanı sağlar. Kapsayıcı mikro hizmetleri, depolama, ağ iletişimi ve güvenlik dahil olmak üzere hizmetlerin düzenlenmesini de kolaylaştırır. Bu özellik, kap sayısını önemli ölçüde artırır ve kapların artmasıyla ortamın karmaşıklığı artar. Kubernet’ler, konteynerleri “bölmeler” halinde gruplandırarak çoğaltmayla ilgili yaygın sorunların çoğunu çözer. Kapsüller, iş yüklerini zamanlamak ve kaplara gerekli hizmetleri (ağ ve depolama gibi) sağlamak için gruplandırılmış kaplara bir soyutlama katmanı ekler.

Kubernetes’in diğer bölümleri, iş yükünü bu bölmeler arasında dengelemenize ve iş yüklerini desteklemek için doğru sayıda kapsayıcının çalıştığından emin olmanıza yardımcı olur.
Kubernetes’i doğru şekilde uygulayarak ve Open vSwitch, OAuth ve SELinux gibi diğer açık kaynaklı projelerin yardımıyla konteyner altyapınızın tüm bölümlerini yönetebilirsiniz.

 

Kubernetes ile bir DevOps yaklaşımı uygulayın

Modern uygulama geliştirme, geçmiş yaklaşımlardan farklı süreçler gerektirir. DevOps, fikirden dağıtıma kadar geliştirme sürecini hızlandırır.
DevOps aslında rutin operasyonel görevleri otomatikleştirmeye ve uygulama yaşam döngüsü boyunca ortamları standartlaştırmaya dayanır. Konteynerler, geliştirme, teslim ve otomasyon için entegre bir ortamı destekleyerek, uygulamaların geliştirme, test ve üretim arasında taşınmasını kolaylaştırır.

DoApps uygulamasının ana faydalarından biri, sürekli bir entegrasyon ve dağıtım (CI/CD) boru hattı oluşturmaktır. CI/CD işlem hattı, uygulamaları müşterilerinize sürekli olarak sunmanıza ve minimum insan müdahalesi ile yazılım kalitesini ölçmenize yardımcı olur.
DevOps yaklaşımıyla birlikte kapsayıcıların yaşam döngüsünü Kubernetes ile yönetmek, CI/CD ardışık düzenini desteklemek için geliştirme ve BT süreçlerini koordine etmeye yardımcı olur.
Bu nedenle, hem kapsayıcıların içinde hem de dışında doğru platformlarla, kültür ve süreçlerdeki değişikliklerden en iyi şekilde yararlanabilirsiniz.