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 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.