Kubernetes sayesinde iyi bir fikri hızlı ve kolay bir şekilde yeni iş ve çalışma modellerine dönüştüren konteyner uygulamaları oluşturabilir ve bunun orkestrasyonunu sağlayabilirsiniz. Red Hat sponsorluğundaki yazı dizimizde bu kez Kubernetes’i ele alıyoruz.
Kubernetes (k8s veya “kube” olarak da bilinir), konteynere alınmış uygulamaların dağıtılması, yönetilmesi ve ölçeklendirilmesinde yer alan birçok işlemi otomatize eden açık kaynaklı bir konteyner düzenleme platformudur. Örneğin Kubernetes, Linux konteynerleri çalıştıran sunucuları bir arada kümelemenize ve bu kümeleri kolay ve verimli bir şekilde yönetmenize yardımcı olur.
Kubernetes kümeleri şirket içi, genel, özel veya hibrit bulutlar arasında dağılabilir. Bu sayede farklı ortamlar veya platformlar üzerinde benzer deneyimin yaşanmasını ve bulut tabanlı yeni nesil uygulamaların çalıştırılmasını mümkün hale getirir.
Kubernetes ilk olarak Google mühendisleri tarafından tasarlandı ve geliştirildi. Google, Linux konteyner teknolojisine ilk katkıda bulunan şirketlerden biriydi ve Google’daki her şeyin konteyner üzerinde nasıl çalıştığını herkese açık bir şekilde anlatıyordu. Bu, aynı zamanda Google’ın bulut hizmetlerinin arkasında yatan teknolojiydi.
Google, bugün her biri Kubernetes’in öncüsü olarak kabul edilen şirket içindeki Borg platformundan güç alan haftada 2 milyardan fazla konteyner dağıtımına imza atıyor. Borg’un geliştirilmesi sırasında öğrenilen dersler ve edinilen tecrübeler, Kubernetes teknolojisinin başlangıç noktasını ve ilham kaynağını oluşturdu. Kubernetes’in logosunda yer alan 7 kollu dümen de projenin ‘Project Seven of Nine’ olan orijinal adına atfen yapılmış bir tasarım.
Red Hat, lansmanından önce bile Kubernetes üzerinde Google ile çalışan öncü şirketlerden biriydi ve Kubernetes upstream projesine en çok katkıda bulunan Google’dan sonraki 2. şirket oldu. Google, Kubernetes projesini 2015 yılında kurulan Cloud Native Computing Foundation’a (CNCF) bağışladı.
Kubernetes ile Neler Yapabilirsiniz?
Kubernetes’i ortamınızda kullanmanın birinci avantajı, özellikle de bulut için uygulama geliştirme sürecini optimize etmek istiyorsanız, size fiziksel veya sanal makinelerden (VM’ler) oluşan kümelerde konteynerleri çalıştırmak için platform sağlamasıdır.
Daha genel bir bakış açısıyla, üretim ortamlarında konteyner tabanlı bir altyapıyı tam anlamıyla oturtmanıza ve uygulamanıza yardımcı olur. Kubernetes tamamen operasyonel görevlerin otomasyonuyla ilgili olduğundan, diğer uygulama platformlarının veya yönetim sistemlerinin izin verdiği şeylerin çoğunu konteynerler için de yapabilirsiniz.
Geliştiriciler ayrıca Kubernetes kalıplarını (pattern) runtime platformu olarak kullanarak Kubernetes sayesinde doğal bulut uygulamaları oluşturabilirler. Kalıplar Kubernetes geliştiricisinin konteyner tabanlı uygulamalar ve hizmetler oluşturmak için ihtiyaç duyduğu araçlara verilen isimdir.
Kubernetes ile şunları yapabilirsiniz:
- Konteynerleri birden çok ortamda çalıştırabilirsiniz.
- Kurumsal uygulamalarınızı çalıştırmak için gereken kaynakları en üst düzeye çıkarmak üzere donanımı daha iyi kullanabilirsiniz.
- Uygulama dağıtımlarını ve güncellemelerini kontrol ederek otomatize edebilirsiniz.
- Uygulamaların ihtiyaç duyabileceği veri depolama alanlarını otomatik oluşturup ekleyebilir ve ihtiyaç halinde büyütülebilirsiniz.
- Konteynerlere alınmış uygulamaları ve kaynakları işleyişi kesintiye uğratmadan ölçekleyebilirsiniz.
- Dağıtılan uygulamaların her zaman çalıştırmayı planladığınız şekilde çalışmasını garanti altına alabilirsiniz.
- Otomatik değiştirme, otomatik yeniden başlatma, otomatik replikasyon ve otomatik ölçeklendirmeyle uygulamalarınızın durumunu kontrol edebilir ve kendi kendilerini iyileştirmelerini sağlayabilirsiniz.
Bununla birlikte Kubernetes, orkestrasyona dayalı bu hizmetleri tam anlamıyla sunabilmek için diğer projelere ihtiyaç duyar. Diğer açık kaynaklı projelerin formüle eklenmesiyle Kubernetes’in gücünü tam olarak açığa çıkarabilirsiniz. Bu parçaların bazıları şunları içerir:
- Registry (Container Registry)
- Ağ oluşturma (OpenvSwitch ve akıllı uç yönlendirme)
- Telemetri (Kibana, Prometheus ve Elastic)
- Güvenlik (LDAP, SELinux, RBAC ve OAUTH)
- Otomasyon (Ansible kütüphanelerinin eklenmesiyle kurulum ve küme yönetimi)
- Hizmetler (Popüler uygulama modellerinden oluşan zengin katalog)
Kubernetes’in Dilini Konuşmayı Öğrenin
Çoğu teknolojide olduğu gibi, Kubernetes’in kendine özgü dili de giriş için bir engel oluşturabilir. Kubernetes’i daha iyi anlamanıza yardımcı olacak yaygın terimlerden bazıları şöyle:
- Control Plane (Kontrol düzlemi): Kubernetes sunucularını kontrol eden süreçler koleksiyonudur. Burası tüm görev atamalarının başladığı yerdir.
- Sunucular (Nodes): Bu makineler, kontrol düzlemi tarafından atanan görevleri gerçekleştirir.
- Pod: Tek bir sunucuda yer alan bir veya daha fazla konteyner grubuna karşılık gelir. Poddaki tüm konteynerler IP adresini, IPC’yi, ana bilgisayar adını ve diğer kaynakları paylaşır. Bu yapı konteynerleri küme içinde daha kolay hareket ettirmenizi sağlar.
- Replikasyon kontrolörü (Replication controller): Küme üzerinde bir podun kaç özdeş kopyasının çalıştırılması gerektiğini kontrol eder.
- Hizmet (Service): İş tanımlarını podlardan ayırmaya yarar. Kubernetes hizmet proxy’leri, küme içinde başka bir yere taşınmış veya değiştirilmiş olsa bile, hizmet isteklerini otomatik olarak doğru podlara alır.
- Kubelet: Bu hizmet sunucular üzerinde çalışır, konteyner bildirimlerini okur, tanımlanan konteynerlerin başlatılmasını ve çalışmasını sağlar.
- Kubectl: Kubernetes için hazırlanmış komut satırı yapılandırma aracıdır.
Kubernetes nasıl çalışır?
- Çalışan bir Kubernetes dağıtımına cluster (küme) adı verilir. Bir Kubernetes kümesini iki parça olarak görselleştirebilirsiniz: Kontrol düzlemi ve konteyner sunucuları.
- Üzerinde Linux tabanlı bir işletim sistemi çalışan her bir sunucu fiziksel veya sanal bir makine olabilir. Sunucular konteynerlerden oluşan podları çalıştırır.
- Kontrol düzlemi, hangi uygulamaların çalıştığını ve hangi konteyner imajlarının kullanıldığını kontrol ederek kümenin istenen durumunu korumaktan sorumludur. Konteyner sunucuları uygulamaları ve iş yüklerini çalıştırır.
- Kubernetes, Linux tabanlı bir işletim sistemi (örneğin Red Hat Enterprise Linux) üzerinde çalışır ve sunucular üzerinde çalışan konteyner podlarıyla etkileşime girer. Kubernetes kontrol düzlemi, yöneticiden (veya DevOps ekibinden) komutları alır ve bu talimatları sunuculara aktarır.
- Bu devir, hangi sunucunun görev için en uygun olduğuna otomatik olarak karar vermek üzere çok sayıda hizmetle çalışır. Daha sonra gerekli kaynakları tahsis eder ve istenen işi yerine getirmek için sunucudaki podlara atama yapar.
- Bir Kubernetes kümesinin istenen durumu, hangi uygulamaların veya iş yüklerinin çalıştırılması gerektiğini, hangi imajların kullanıldığını, hangi kaynakların sunulacağını ve benzer diğer yapılandırma ayrıntılarını tanımlar.
- Altyapı açısından olaya bakıldığında, konteynerleri yönetme şekli çok az değişir. Sadece konteynerler üzerindeki kontrolünüz daha yüksek bir seviyede gerçekleşir ve her bir ayrı konteyneri veya sunucuyu mikro ölçekte yönetmenize gerek kalmaz. Bu da daha iyi kontrol sağlar.
- İşiniz Kubernetes’i yapılandırmanın yanı sıra sunucuları, podları ve bunların içindeki konteynerleri tanımlamayı içerir. Kubernetes, kapsayıcıların orkestrasyonuyla ilgilenir.
- Kubernetes’i nerede çalıştıracağınız tamamen size bağlıdır. Fiziksel sunucularda, sanal makinelerde, genel bulut sağlayıcılarında, özel bulutlarda ve hibrit bulut ortamlarında çalıştırabilirsiniz. Kubernetes’in en önemli avantajlarından biri, birçok farklı altyapı üzerinde çalışabilmesidir.
Kubernetes’e Neden İhtiyacınız Var?
- Kubernetes konteynere alınmış, eski ve bulut yerlisi uygulamaların yanı sıra mikro hizmetlerle yeniden düzenlenen uygulamaları teslim etmenize ve yönetmenize yardımcı olur.
- Değişen iş ihtiyaçlarını karşılamak için geliştirme ekibinizin yeni uygulamaları ve hizmetleri hızla hayata geçirebilmesi gerekir. Buluta özgü geliştirme konteynerlerdeki mikro hizmetlerle başlar. Bu geliştirme sürecini hızlandırır, mevcut uygulamaların dönüşümünü ve optimizasyonunu kolaylaştırır.
- Üretim uygulamaları birden çok konteynerden oluşur ve bu konteynerlerin birden çok sunucu ana bilgisayarına dağıtılması gerekir. Kubernetes tüm bu iş yükleri için konteynerleri uygun ölçekte dağıtmak için ihtiyaç duyduğunuz orkestrasyon ve yönetim yeteneklerini sunar.
- Kubernetes orkestrasyonu birden çok konteyneri içine alan uygulama hizmetleri oluşturmanıza, konteynerleri bir küme genelinde planlamanıza, ölçeklendirmenize ve durumlarını yönetmenize olanak tanır. Kubernetes sayesinde BT güvenliğine yönelik daha iyi ve etkili adımlar atabilirsiniz.
- Kubernetes’in kapsamlı bir konteyner altyapısı sağlaması için ağ iletişimi, depolama, güvenlik, telemetri ve diğer hizmetlerle entegre olması gerekir. Bunu bir üretim ortamına ve birden çok uygulamaya ölçeklendirdiğinizde, tek tek hizmetleri sunmak için birlikte çalışan birden çok, ortak yerleştirilmiş konteynere ihtiyacınız olduğu ortaya çıkar.
- Kubernetes, konteynerleri bir araya getirip podlar halinde sıralayarak konteyner çoğalmasıyla ilgili birçok yaygın sorunu düzeltir. Podlar gruplanmış konteynerlere, iş yüklerini planlamanıza ve konteynerler için ağ ve depolama gibi gerekli hizmetleri sağlamanıza yardımcı olan bir soyutlama katmanı ekler.
- Kubernetes’in diğer parçaları, bu podlardaki yükleri dengelemenize yardımcı olur ve iş yüklerinizi desteklemek için doğru sayıda konteynerin çalıştığından emin olmanızı sağlar. Kubernetes’i doğru uygulayarak – ve Open vSwitch, OAuth ve SELinux gibi diğer açık kaynak projelerinin de yardımıyla – konteyner altyapınızın tüm parçalarını düzenleyebilirsiniz.
Örnek Kullanım Senaryosu:
Yenilikçi Bankacılık Hizmetleri Sunmak Üzere Bulut Platformu Oluşturmak
Birleşik Arap Emirlikleri’nin (BAE) en büyük bankalarından biri olan Emirates NBD’nin dijital inovasyon için ölçeklenebilir ve dayanıklı bir temele ihtiyacı vardı. Banka, yavaş tedarikle ve karmaşık BT ortamıyla mücadele halindeydi. Bir sunucunun kurulması 2 ay sürerken, büyük, monolitik uygulamalarda değişiklik yapmak 6 aydan fazla zaman alıyordu.
Red Hat OpenShift Container Platform‘u konteyner düzenleme, entegrasyon ve yönetim için kullanan banka, Orta Doğu’daki bir banka tarafından büyük ölçekte çalıştırılan ilk özel bulut olan Sahab’ı yarattı. Sahab, hizmet olarak sunulan model aracılığıyla tedarikten üretime kadar uçtan uca geliştirme için ihtiyaç duyulan uygulamaları, sistemleri ve diğer kaynakları sağladı.
Emirates NBD, yeni platformuyla, uygulama programlama arayüzlerini (API’ler) ve mikro hizmetleri kullanarak dahili ekipler ve iş ortakları arasındaki işbirliğini geliştirdi. Çevik süreçleri ve DevOps geliştirme uygulamalarını benimseyen banka, uygulama başlatma ve güncelleme döngülerini kısalttı.
Kubernetes ile DevOps Yaklaşımını Destekleyin
Modern uygulamalar geliştirmek, geçmişteki yaklaşımlardan farklı süreçler gerektirir. DevOps, bir fikrin geliştirmeden uygulamaya geçiş sürecini hızlandırır. DevOps, özünde rutin operasyonel görevleri otomatize etmeye ve uygulama yaşam döngüsü boyunca ortamların standardizasyonuna dayanır. Konteynerler, geliştirme, teslimat ve otomasyon için birleşik bir ortamı destekler ve uygulamaların geliştirme, test ve üretim ortamları arasında taşınmasını kolaylaştırır.
DevOps uygulamasının önemli bir sonucu, sürekli bir entegrasyon ve dağıtım işlem hattı sağlamasıdır (CI/CD). CI/CD, uygulamaları müşterilere teslim etmenizi hızlandırır ve minimum insan müdahalesiyle yazılım kalitesini doğrulamanızı sağlar. DevOps yaklaşımının yanı sıra Kubernetes ile konteynerlerin yaşam döngüsünü yönetmek, bir CI/CD ardışık düzenini desteklemek için yazılım geliştirme ve BT işlemlerini uyumlu hale getirmeye yardımcı olur.
Kubernetes’in Üretimde Kullanılması
Kubernetes açık kaynaklıdır. Bu nedenle bu teknoloji etrafında resmileştirilmiş bir destek yapısı yoktur. Üretimde Kubernetes uygulamanızla ilgili bir sorun yaşarsanız, büyük olasılıkla hayal kırıklığına uğrayacaksınız. Bu da müşterilerinize yansıyacak.
Kubernetes’i bir araba motoru gibi düşünün. Motor kendi kendine de çalışabilir. Ancak bir şanzımana, akslara ve tekerleklere bağlandığında asıl işini yapabilecek hale gelir. Sadece Kubernetes’i kurmak, üretim düzeyinde bir platforma sahip olmak için yeterli değildir. İşlevsel hale gelebilmesi için ek bileşenlere ihtiyacı vardır. Kimlik doğrulama, ağ oluşturma, güvenlik, izleme, günlük yönetimi ve diğer araçları eklemeniz gerekir.
Red Hat OpenShift size her yönüyle eksiksiz, hareket etmeye hazır bir araç sunmak için tam da burada devreye giriyor.
Red Hat OpenShift, kurumlar için Kubernetes’e karşılık gelir. Kayıt, ağ iletişimi, telemetri, güvenlik, otomasyon ve hizmetler dahil olmak üzere Kubernetes’i kuruluş için güçlü ve uygulanabilir kılan tüm ek teknoloji bileşenlerini içerir.
Red Hat OpenShift, platformun merkezi bileşeni olarak Kubernetes’i içerir ve CNCF tarafından onaylı bir Kubernetes ürünüdür. Red Hat OpenShift Container Platform ile geliştiricileriniz, iyi bir fikri hızlı ve kolay bir şekilde yeni iş ve çalışma modellerine dönüştüren konteyner uygulamaları oluşturabilir ve bunun orkestrasyonunu yapabilir.
Red Hat OpenShift’i 60 gün ücretsiz deneyebilirsiniz. Daha fazla bilgi almak ve deneme sürümünü başlatmak için bu bağlantıya tıklamanız yeterli.