Kubernetes,e Giriş

Giriş

Kubernetes, kümelenmiş bir ortamda kapsayıcıya alınmış uygulamaları yönetmek için başlangıçta Google tarafından geliştirilen güçlü bir açık kaynaklı sistemdir. Çeşitli altyapılarda ilgili, dağıtılmış bileşenleri ve hizmetleri yönetmenin daha iyi yollarını sağlamayı amaçlamaktadır.

Bu kılavuzda, Kubernetes’in bazı temel kavramlarını tartışacağız. Sistemin mimarisi, çözdüğü sorunlar ve kapsayıcıya alınmış dağıtımları ve ölçeklendirmeyi ele almak için kullandığı model hakkında konuşacağız.

Kubernetes nedir?

Kubernetes , temel düzeyinde, bir makine kümesi genelinde kapsayıcıya alınmış uygulamaları çalıştırmak ve koordine etmek için bir sistemdir. Öngörülebilirlik, ölçeklenebilirlik ve yüksek kullanılabilirlik sağlayan yöntemler kullanarak konteynerli uygulamaların ve hizmetlerin yaşam döngüsünü tamamen yönetmek için tasarlanmış bir platformdur.

Bir Kubernetes kullanıcısı olarak, uygulamalarınızın nasıl çalışması gerektiğini ve diğer uygulamalarla veya dış dünyayla etkileşime girme yollarını tanımlayabilirsiniz. Hizmetlerinizi yukarı veya aşağı ölçeklendirebilir, sorunsuz değişen güncellemeler gerçekleştirebilir ve özellikleri test etmek veya sorunlu dağıtımları geri almak için uygulamalarınızın farklı sürümleri arasında trafik arasında geçiş yapabilirsiniz. Kubernetes, uygulamalarınızı yüksek derecede esneklik, güç ve güvenilirlikle tanımlamanıza ve yönetmenize olanak tanıyan arayüzler ve bir araya getirilebilir platform ilkelleri sağlar.

Kubernetes Mimarisi

Kubernetes’in bu yetenekleri nasıl sağladığını anlamak için, yüksek düzeyde nasıl tasarlandığını ve düzenlendiğini anlamak faydalı olacaktır. Kubernetes, katmanlar halinde yerleşik bir sistem olarak görselleştirilebilir ve her yüksek katman, alt düzeylerde bulunan karmaşıklığı soyutlar.

Kubernetes, temelde, her bir sunucu arasında iletişim kurmak için paylaşılan bir ağ kullanarak bireysel fiziksel veya sanal makineleri bir kümede bir araya getirir. Bu küme, tüm Kubernetes bileşenlerinin, yeteneklerinin ve iş yüklerinin yapılandırıldığı fiziksel platformdur.

Kümedeki makinelerin her birine Kubernetes ekosistemi içinde bir rol verilir. Bir sunucu (veya yüksek düzeyde kullanılabilir dağıtımlardaki küçük bir grup) ana sunucu olarak işlev görür . Bu sunucu, kullanıcılar ve istemciler için bir API açığa çıkararak, diğer sunucuların sağlığını kontrol ederek, işin en iyi nasıl ayrılacağına ve atanacağına (“planlama” olarak bilinir) karar vererek ve diğer bileşenler arasındaki iletişimi düzenleyerek küme için bir ağ geçidi ve beyin görevi görür. Ana sunucu, küme ile birincil temas noktası olarak hareket eder ve Kubernetes’in sağladığı merkezi mantığın çoğundan sorumludur.

Kümedeki diğer makineler düğümler olarak belirlenmiştir : yerel ve harici kaynakları kullanarak iş yüklerini kabul etmekten ve çalıştırmaktan sorumlu sunucular. İzolasyon, yönetim ve esnekliğe yardımcı olmak için Kubernetes, uygulamaları ve hizmetleri kapsayıcılarda çalıştırır , bu nedenle her düğümün bir kapsayıcı çalışma zamanıyla (Docker veya rkt gibi) donatılması gerekir. Düğüm, ana sunucudan iş talimatlarını alır ve buna göre kapsayıcıları oluşturur veya yok eder, ağ kurallarını trafiği uygun şekilde yönlendirmek ve iletmek için ayarlar.

Yukarıda belirtildiği gibi, uygulamaların ve hizmetlerin kendileri, kapsayıcılar içindeki küme üzerinde çalıştırılır. Temel bileşenler, uygulamaların istenen durumunun kümenin gerçek durumuyla eşleşmesini sağlar. Kullanıcılar, ana API sunucusuyla doğrudan veya istemciler ve kitaplıklarla iletişim kurarak kümeyle etkileşime girer. Bir uygulamayı veya hizmeti başlatmak için, JSON veya YAML’de neyin oluşturulacağını ve nasıl yönetilmesi gerektiğini tanımlayan bir bildirim planı gönderilir. Ana sunucu daha sonra planı alır ve sistemin gereksinimleri ve mevcut durumunu inceleyerek bunun altyapı üzerinde nasıl çalıştırılacağını belirler. Belirli bir plana göre çalışan bu kullanıcı tanımlı uygulamalar grubu, Kubernetes’in son katmanını temsil eder.

Ana Sunucu Bileşenleri

Yukarıda açıkladığımız gibi, ana sunucu Kubernetes kümeleri için birincil kontrol düzlemi görevi görür. Yöneticiler ve kullanıcılar için ana temas noktası olarak hizmet eder ve ayrıca nispeten karmaşık olmayan çalışan düğümler için küme çapında birçok sistem sağlar. Genel olarak, ana sunucudaki bileşenler, kullanıcı isteklerini kabul etmek, iş yükü kapsayıcılarını planlamanın en iyi yollarını belirlemek, istemcilerin ve düğümlerin kimliklerini doğrulamak, küme çapında ağ iletişimini ayarlamak ve ölçeklendirme ve durum denetimi sorumluluklarını yönetmek için birlikte çalışır.

Bu bileşenler tek bir makineye kurulabilir veya birden çok sunucuya dağıtılabilir. Bu bölümde ana sunucularla ilişkili her bir bileşene bir göz atacağız.

etcd

Kubernetes’in çalışması için ihtiyaç duyduğu temel bileşenlerden biri, küresel olarak kullanılabilen bir yapılandırma deposu. Etcd proje CoreOS ekibi tarafından geliştirilen, çoklu düğümler arasında yayılma şekilde yapılandırılabilir hafif, dağıtılmış anahtar-değer mağaza.

Kubernetes etcd, kümedeki her bir düğüm tarafından erişilebilen yapılandırma verilerini depolamak için kullanır . Bu, hizmet keşfi için kullanılabilir ve bileşenlerin kendilerini güncel bilgilere göre yapılandırmalarına veya yeniden yapılandırmalarına yardımcı olabilir. Ayrıca lider seçimi ve dağıtılmış kilitleme gibi özelliklerle küme durumunun korunmasına yardımcı olur. Basit bir HTTP / JSON API sağlayarak, değerleri ayarlama veya alma arayüzü çok basittir.

Kontrol düzlemindeki diğer bileşenlerin çoğu gibi, etcdtek bir ana sunucuda veya üretim senaryolarında bir dizi makineye dağıtılmış olarak yapılandırılabilir. Tek gereksinim, Kubernetes makinelerinin her biri için ağdan erişilebilir olmasıdır.

kube-apiserver

En önemli ana hizmetlerden biri bir API sunucusudur. Bu, bir kullanıcının Kubernetes’in iş yüklerini ve kuruluş birimlerini yapılandırmasına izin verdiği için tüm kümenin ana yönetim noktasıdır. Ayrıca, etcddeponun ve dağıtılan konteynerlerin hizmet ayrıntılarının anlaşmaya dahil olduğundan emin olmaktan sorumludur . Küme sağlığını korumak ve bilgi ve komutları yaymak için çeşitli bileşenler arasında köprü görevi görür.

API sunucusu bir RESTful arabirimi uygular; bu, birçok farklı aracın ve kitaplığın onunla kolayca iletişim kurabileceği anlamına gelir. Kubernetes kümesiyle yerel bir bilgisayardan etkileşim kurmanın varsayılan yöntemi olarak kubectl adlı bir istemci mevcuttur.

kube-kontrolör-yöneticisi

Kontrolör yöneticisi, birçok sorumluluğu olan genel bir hizmettir. Öncelikle, kümenin durumunu düzenleyen, iş yükü yaşam döngülerini yöneten ve rutin görevleri gerçekleştiren farklı denetleyicileri yönetir. Örneğin, bir çoğaltma denetleyicisi, bir bölme için tanımlanan eşlemelerin (özdeş kopyalar) sayısının kümede o anda dağıtılmış olan sayıyla eşleşmesini sağlar. Bu işlemlerin ayrıntıları etcd, denetleyici yöneticisinin API sunucusu aracılığıyla değişiklikleri izlediği yere yazılır .

Bir değişiklik görüldüğünde, kontrolör yeni bilgileri okur ve istenen durumu yerine getiren prosedürü uygular. Bu, bir uygulamayı yukarı veya aşağı ölçeklendirmeyi, uç noktaları ayarlamayı vb. İçerebilir.

kube planlayıcı

İş yüklerini kümedeki belirli düğümlere atayan süreç, planlayıcıdır. Bu hizmet, bir iş yükünün işletim gereksinimlerini okur, mevcut altyapı ortamını analiz eder ve işi kabul edilebilir bir düğüm veya düğümlere yerleştirir.

Planlayıcı, iş yüklerinin mevcut kaynakları aşan bir şekilde planlanmamasını sağlamak için her ana bilgisayardaki kullanılabilir kapasiteyi izlemekten sorumludur. Planlayıcı, toplam kapasitenin yanı sıra her sunucudaki mevcut iş yüklerine önceden tahsis edilmiş kaynakları da bilmelidir.

bulut denetleyici yöneticisi

Kubernetes birçok farklı ortamda konuşlandırılabilir ve kümedeki kaynakların durumunu anlamak ve yönetmek için çeşitli altyapı sağlayıcılarıyla etkileşime girebilir. Kubernetes, eklenebilir depolama ve yük dengeleyiciler gibi kaynakların genel temsilleriyle çalışırken, bunları homojen olmayan bulut sağlayıcıları tarafından sağlanan gerçek kaynaklarla eşlemek için bir yola ihtiyaç duyar.

Bulut denetleyici yöneticileri, Kubernetes’in sağlayıcılarla farklı yeteneklere, özelliklere ve API’lere sahip etkileşime girmesine izin verirken, diğer yandan da nispeten genel yapıları dahili olarak korurken bir tutkal görevi görür. Bu, Kubernetes’in bulut sağlayıcısından toplanan bilgilere göre durum bilgilerini güncellemesine, sistemde gerekli değişikliklere göre bulut kaynaklarını ayarlamasına ve kümeye gönderilen iş gereksinimlerini karşılamak için ek bulut hizmetleri oluşturup kullanmasına olanak tanır.

Düğüm Sunucusu Bileşenleri

Kubernetes’te, kapsayıcılar çalıştırarak iş yapan sunucular düğümler olarak bilinir . Düğüm sunucularının ana bileşenlerle iletişim kurmak, kapsayıcı ağını yapılandırmak ve kendilerine atanan gerçek iş yüklerini çalıştırmak için gerekli olan birkaç gereksinimi vardır.

Kapsayıcı Çalışma Zamanı

Her düğümün sahip olması gereken ilk bileşen, bir konteyner çalışma zamanıdır. Genellikle, bu gereklilik kurmak ve çalıştırmak tatmin edilir Docker gibi, ama alternatifleri RKT ve runc de mevcuttur.

Kapsayıcı çalışma zamanı, kapsayıcıları, nispeten izole edilmiş ancak hafif bir işletim ortamında kapsüllenmiş uygulamaları başlatmaktan ve yönetmekten sorumludur. Küme üzerindeki her çalışma birimi, temel düzeyinde, dağıtılması gereken bir veya daha fazla kapsayıcı olarak uygulanır. Her düğümdeki kapsayıcı çalışma zamanı, sonunda kümeye gönderilen iş yüklerinde tanımlanan kapsayıcıları çalıştıran bileşendir.

Kubelet

Küme grubuyla her düğüm için ana temas noktası, kubelet adı verilen küçük bir hizmettir . Bu hizmet, bilgilerin kontrol düzlemi hizmetlerine ve bu hizmetlerden aktarılmasının yanı sıra, etcdyapılandırma ayrıntılarını okumak veya yeni değerler yazmak için mağazayla etkileşimde bulunmaktan sorumludur .

kubeletUsta bileşenleri ile hizmet iletişim kurduğu kümeye kimlik doğrulaması ve komutları ve iş almak. İş, iş yükünü ve çalışma parametrelerini tanımlayan bir bildiri biçiminde alınır . kubeletİşlem daha sonra düğüm sunucu üzerinde çalışma durumunu korumak için sorumluluk kabul etmez. Gerektiğinde kapsayıcıları başlatmak veya yok etmek için kapsayıcı çalışma zamanını kontrol eder.

kube-proxy

Tek tek ana bilgisayar alt ağlarını yönetmek ve hizmetleri diğer bileşenlere sunmak için , her düğüm sunucusunda kube-proxy adı verilen küçük bir proxy hizmeti çalıştırılır. Bu süreç, istekleri doğru kapsayıcılara iletir, ilkel yük dengeleme yapabilir ve genellikle ağ ortamının öngörülebilir ve erişilebilir, ancak uygun olduğunda izole olmasını sağlamaktan sorumludur.

Kubernetes Nesneleri ve İş Yükleri

Kapsayıcılar, uygulamaları dağıtmak için kullanılan temel mekanizma olsa da, Kubernetes ölçeklendirme, esneklik ve yaşam döngüsü yönetimi özellikleri sağlamak için kapsayıcı arabirimi üzerinde ek soyutlama katmanları kullanır. Kapsayıcıları doğrudan yönetmek yerine, kullanıcılar Kubernetes nesne modeli tarafından sağlanan çeşitli temel öğelerden oluşan örnekleri tanımlar ve bunlarla etkileşime girer. Aşağıda bu iş yüklerini tanımlamak için kullanılabilecek farklı nesne türlerini inceleyeceğiz.

Kapsüller

Bir kapsül , Kubernetes’in uğraştığı en temel birimdir. Kapsayıcıların kendileri ana bilgisayarlara atanmaz. Bunun yerine, bir veya daha fazla sıkıca bağlanmış kap, kapsül adı verilen bir nesne içinde kapsüllenir.

Bir bölme genellikle tek bir uygulama olarak kontrol edilmesi gereken bir veya daha fazla kabı temsil eder. Kapsüller, birbirine yakın çalışan, bir yaşam döngüsünü paylaşan ve her zaman aynı düğümde programlanmalıdır. Tamamen bir birim olarak yönetilirler ve ortamlarını, birimlerini ve IP alanlarını paylaşırlar. Kapsayıcıya alınmış uygulamalarına rağmen, kümenin bölmenin kaynaklarını ve zamanlamasını nasıl yöneteceğini en iyi şekilde kavramsallaştırmak için genellikle bölmeleri tek, yekpare bir uygulama olarak düşünmelisiniz.

Genellikle bölmeler, iş yükünün genel amacını karşılayan bir ana kaptan ve isteğe bağlı olarak yakından ilişkili görevleri kolaylaştıran bazı yardımcı kaplardan oluşur. Bunlar, kendi kapsayıcılarında çalıştırılmaktan ve yönetilmekten yararlanan, ancak ana uygulamaya sıkı sıkıya bağlı programlardır. Örneğin, bir bölme, birincil uygulama sunucusunu çalıştıran bir konteynere ve harici bir depoda değişiklikler tespit edildiğinde dosyaları paylaşılan dosya sistemine çeken bir yardımcı konteynere sahip olabilir. Görev için daha uygun başka daha yüksek seviyeli nesneler olduğundan, yatay ölçekleme genellikle bölme düzeyinde önerilmez.

Genel olarak, uygulamalarda tipik olarak ihtiyaç duyulan bazı özellikleri (gelişmiş yaşam döngüsü yönetimi ve ölçeklendirme gibi) sağlamadıklarından, kullanıcılar bölmeleri kendileri yönetmemelidir. Bunun yerine, kullanıcıların temel bileşenler olarak bölmeleri veya bölme şablonlarını kullanan ancak ek işlevler uygulayan daha yüksek düzeyli nesnelerle çalışmaları önerilir.

Çoğaltma Denetleyicileri ve Çoğaltma Setleri

Genellikle tek bölmelerle çalışmak yerine Kubernetes ile çalışırken, bunun yerine aynı, çoğaltılmış bölmelerden oluşan grupları yönetiyor olacaksınız. Bunlar, bölme şablonlarından oluşturulur ve çoğaltma denetleyicileri ve çoğaltma kümeleri olarak bilinen denetleyiciler tarafından yatay olarak ölçeklenebilir.

Bir replikasyon kontrol yatay artan ya da çalışan kopya sayısını azaltarak bir bakla özdeş kopyaları Ölçekli bir kapsül şablonunun ve kontrol parametrelerini tanımlayan bir amacıdır. Bu, yükü dağıtmanın ve Kubernetes içinde yerel olarak kullanılabilirliği artırmanın kolay bir yoludur. Çoğaltma denetleyicisi, bir bölme tanımına çok benzeyen bir şablon çoğaltma denetleyicisi yapılandırmasına gömülü olduğundan, gerektiğinde yeni bölmelerin nasıl oluşturulacağını bilir.

Çoğaltma denetleyicisi, kümede dağıtılan bölme sayısının yapılandırmasındaki bölme sayısıyla eşleşmesini sağlamaktan sorumludur. Bir bölme veya temeldeki ana bilgisayar başarısız olursa, denetleyici bunu telafi etmek için yeni bölmeler başlatır. Bir denetleyicinin yapılandırmasındaki replikaların sayısı değişirse, denetleyici istenen sayıyla eşleşmek için kapsayıcıları başlatır veya öldürür. Çoğaltma denetleyicileri, uygulama kullanılabilirliği üzerindeki etkiyi en aza indirerek, bir dizi bölmeyi yeni bir sürüme döndürmek için sürekli güncellemeler gerçekleştirebilir.

Çoğaltma kümeleri , denetleyicinin yönetmesi gereken bölmeleri nasıl tanımlayacağı konusunda daha fazla esnekliğe sahip çoğaltma denetleyicisi tasarımında bir yinelemedir. Çoğaltma kümeleri, daha büyük çoğaltma seçim yetenekleri nedeniyle çoğaltma denetleyicilerinin yerini almaya başlıyor, ancak çoğaltma denetleyicilerinin yapabildiği gibi arka uçları yeni bir sürüme döndürmek için güncellemeleri sıralı olarak yapamıyorlar. Bunun yerine, çoğaltma kümelerinin, bu işlevi sağlayan ek, daha yüksek seviyeli birimlerin içinde kullanılması amaçlanmıştır.

Bölmeler gibi, hem çoğaltma denetleyicileri hem de çoğaltma kümeleri nadiren doğrudan birlikte çalışacağınız birimlerdir. Yatay ölçeklendirme ve güvenilirlik garantileri eklemek için bölme tasarımını geliştirirken, daha karmaşık nesnelerde bulunan ince taneli yaşam döngüsü yönetimi yeteneklerinden bazılarından yoksundurlar.

Dağıtımlar

Dağıtımlar , doğrudan oluşturmak ve yönetmek için en yaygın iş yüklerinden biridir. Dağıtımlar, çoğaltma kümelerini bir yapı taşı olarak kullanır ve karışıma esnek yaşam döngüsü yönetimi işlevselliği ekler.

Çoğaltma kümeleriyle oluşturulan dağıtımlar, çoğaltma denetleyicileri tarafından sunulan işlevselliği kopyalıyormuş gibi görünse de, dağıtımlar, sürekli güncellemelerin uygulanmasında var olan sorunların çoğunu çözer. Uygulamaları çoğaltma denetleyicileriyle güncellerken, kullanıcıların mevcut denetleyicinin yerini alacak yeni bir çoğaltma denetleyicisi için bir plan sunmaları gerekir. Çoğaltma denetleyicilerini kullanırken, geçmişi izleme, güncelleme sırasında ağ hatalarından kurtarma ve kötü değişiklikleri geri alma gibi görevler ya zor ya da kullanıcının sorumluluğunda kalır.

Dağıtımlar, çoğaltılmış kapsüllerin yaşam döngüsü yönetimini kolaylaştırmak için tasarlanmış yüksek düzeyli bir nesnedir. Yapılandırmayı değiştirerek dağıtımlar kolayca değiştirilebilir ve Kubernetes replika kümelerini ayarlayacak, farklı uygulama sürümleri arasındaki geçişleri yönetecek ve isteğe bağlı olarak olay geçmişini ve geri alma özelliklerini otomatik olarak koruyacaktır. Bu özellikler nedeniyle, dağıtımlar büyük olasılıkla en sık çalıştığınız Kubernetes nesnesi türü olacaktır.

Durum bilgili Kümeler

Durum bilgisi olan setler , sıralama ve benzersizlik garantileri sunan özel bölme denetleyicileridir. Öncelikle, bunlar dağıtım siparişi, kalıcı veriler veya kararlı ağ oluşturma ile ilgili özel gereksinimleriniz olduğunda daha hassas bir kontrole sahip olmak için kullanılır. Örneğin, durum bilgisi olan kümeler genellikle, yeni bir düğüme yeniden planlanmış olsa bile aynı birimlere erişime ihtiyaç duyan veritabanları gibi veri odaklı uygulamalarla ilişkilendirilir.

Durum bilgisi olan kümeler, bölmenin başka bir düğüme taşınması gerekse bile her bir bölme için benzersiz, sayıya dayalı bir ad oluşturarak kararlı bir ağ tanımlayıcısı sağlar. Benzer şekilde, yeniden planlama gerektiğinde kalıcı depolama birimleri bir bölmeyle aktarılabilir. Kazayla veri kaybını önlemek için bölme silindikten sonra bile birimler devam eder.

Ölçeği dağıtırken veya ayarlarken, durum bilgisi olan kümeler adlarındaki numaralandırılmış tanımlayıcıya göre işlemler gerçekleştirir. Bu, yürütme sırası üzerinde daha fazla öngörülebilirlik ve kontrol sağlar ve bu, bazı durumlarda faydalı olabilir.

Daemon Setleri

Daemon kümeleri , kümedeki her düğümde (veya belirtilmişse bir alt kümede) bir bölmenin bir kopyasını çalıştıran başka bir özel kapsül denetleyici biçimidir. Bu, çoğunlukla bakım gerçekleştirmeye ve düğümlerin kendileri için hizmet sağlamaya yardımcı olan bölmeleri konuşlandırırken yararlıdır.

Örneğin, günlüklerin toplanması ve iletilmesi, ölçümlerin toplanması ve düğümün kendi yeteneklerini artıran hizmetlerin çalıştırılması daemon kümeleri için popüler adaylardır. Daemon kümeleri genellikle temel hizmetler sağladığından ve filo genelinde ihtiyaç duyulduğundan, diğer denetleyicilerin belirli ana bilgisayarlara bölmeleri atamasını engelleyen bölme planlama kısıtlamalarını atlayabilirler. Örnek olarak, benzersiz sorumlulukları nedeniyle, ana sunucu sık sık normal bölme planlaması için kullanılamayacak şekilde yapılandırılır, ancak arka plan programı kümeleri, temel hizmetlerin çalıştığından emin olmak için bölme bazında kısıtlamayı geçersiz kılma yeteneğine sahiptir.

İşler ve Cron İşleri

Şimdiye kadar anlattığımız iş yüklerinin hepsi uzun süreli, hizmet benzeri bir yaşam döngüsü varsaydı. Kubernetes , çalışan kapsayıcıların işlerini tamamladıktan bir süre sonra başarılı bir şekilde çıkmasının beklendiği daha görev tabanlı bir iş akışı sağlamak için işler adı verilen bir iş yükü kullanır . Sürekli bir hizmet çalıştırmak yerine tek seferlik veya toplu işlem yapmanız gerekiyorsa işler kullanışlıdır.

İşler üzerine inşa etmek, cron işleridir . cronKomut dosyalarını bir zamanlamaya göre çalıştıran Linux ve Unix benzeri sistemlerdeki geleneksel arka plan yordamları gibi, Kubernetes’teki cron işleri, işleri bir zamanlama bileşeni ile çalıştırmak için bir arayüz sağlar. Cron işleri, gelecekte yürütülecek bir işi veya düzenli, tekrar eden bir temelde planlamak için kullanılabilir. Kubernetes cron işleri, temelde, kümeyi tek bir işletim sistemi yerine bir platform olarak kullanan klasik cron davranışının yeniden uygulamasıdır.

Diğer Kubernetes Bileşenleri

Kubernetes, bir küme üzerinde çalıştırabileceğiniz iş yüklerinin ötesinde, uygulamalarınızı yönetmenize, ağ iletişimini kontrol etmenize ve kalıcılığı etkinleştirmenize yardımcı olan bir dizi başka soyutlama sağlar. Burada daha yaygın örneklerden birkaçını tartışacağız.

Hizmetler

Şimdiye kadar, geleneksel Unix benzeri anlamda “hizmet” terimini kullanıyorduk: uzun süre çalışan, genellikle ağa bağlı, isteklere yanıt verebilen süreçleri belirtmek için. Ancak Kubernetes’te hizmet , kapsüller için temel bir dahili yük dengeleyici ve elçi olarak görev yapan bir bileşendir. Bir hizmet, bunları tek bir varlık olarak sunmak için aynı işlevi gerçekleştiren mantıksal kapsül koleksiyonlarını bir araya getirir.

Bu, belirli bir türdeki tüm arka uç kapsayıcılarını izleyebilen ve yönlendirebilen bir hizmet dağıtmanıza olanak tanır. Dahili tüketicilerin yalnızca hizmet tarafından sağlanan kararlı uç noktayı bilmeleri gerekir. Bu arada, hizmet soyutlaması, arka uç çalışma birimlerini gerektiği gibi ölçeklendirmenize veya değiştirmenize olanak tanır. Bir hizmetin IP adresi, yönlendirdiği bölmelerdeki değişikliklerden bağımsız olarak sabit kalır. Bir hizmeti dağıtarak kolayca keşfedilebilirlik kazanır ve kapsayıcı tasarımlarınızı basitleştirebilirsiniz.

Bir veya daha fazla bölmeye başka bir uygulamaya veya harici tüketicilere erişim sağlamanız gerektiğinde, bir hizmet yapılandırmanız gerekir. Örneğin, internetten erişilebilmesi gereken web sunucularını çalıştıran bir dizi bölmeniz varsa, bir hizmet gerekli soyutlamayı sağlayacaktır. Benzer şekilde, web sunucularınızın verileri depolaması ve alması gerekiyorsa, veritabanı bölmelerinize erişim sağlamak için dahili bir hizmet yapılandırmak isteyebilirsiniz.

Hizmetler, varsayılan olarak yalnızca dahili olarak yönlendirilebilir bir IP adresi kullanılarak kullanılabilir olsa da, birkaç stratejiden biri seçilerek kümenin dışında kullanılabilir hale getirilebilirler. NodePort yapılandırma her düğümün dış ağ arayüzü üzerinde statik bir port açarak çalışır. Harici bağlantı noktasına gelen trafik, bir dahili küme IP hizmeti kullanılarak uygun bölmelere otomatik olarak yönlendirilecektir.

Alternatif olarak, LoadBalancer hizmet türü, bir bulut sağlayıcısının Kubernetes yük dengeleyici entegrasyonunu kullanarak hizmete yönlendirmek için harici bir yük dengeleyici oluşturur. Bulut denetleyici yöneticisi, uygun kaynağı oluşturacak ve dahili hizmet hizmeti adreslerini kullanarak bunu yapılandıracaktır.

Birimler ve Kalıcı Birimler

Verileri güvenilir bir şekilde paylaşmak ve kapsayıcı yeniden başlatmaları arasında kullanılabilirliğini garanti etmek, kapsayıcıya alınmış birçok ortamda bir zorluktur. Konteyner çalışma zamanları genellikle, konteynerin kullanım ömrü boyunca devam eden bir konteynere depolama eklemek için bir mekanizma sağlar, ancak uygulamalar genellikle esneklikten yoksundur.

Bunu ele almak için Kubernetes , verilerin bir bölmedeki tüm kapsayıcılar tarafından paylaşılmasına ve bölme sonlandırılıncaya kadar kullanılabilir kalmasına izin veren kendi birim soyutlamasını kullanır . Bu, sıkıca bağlanmış bölmelerin karmaşık dış mekanizmalar olmadan dosyaları kolayca paylaşabileceği anlamına gelir. Bölmedeki kapsayıcı hataları, paylaşılan dosyalara erişimi etkilemeyecektir. Bölme sonlandırıldığında, paylaşılan birim yok edilir, bu nedenle gerçekten kalıcı veriler için iyi bir çözüm değildir.

Kalıcı birimler , kapsül yaşam döngüsüne bağlı olmayan daha sağlam depolamayı soyutlamak için bir mekanizmadır. Bunun yerine, yöneticilerin, kullanıcıların çalıştırdıkları bölmeler için talep edebilecekleri ve talep edebilecekleri küme için depolama kaynaklarını yapılandırmalarına izin verir. Kalıcı bir hacimle bir bölme yapıldığında, birimin ıslah politikası, hacmin verilerle birlikte manuel olarak silinene veya hemen kaldırılana kadar burada tutulup tutulmayacağını belirler. Kalıcı veriler, düğüm tabanlı arızalara karşı koruma sağlamak ve yerel olarak bulunandan daha fazla miktarda depolama alanı ayırmak için kullanılabilir.

Etiketler ve Ek Açıklamalar

Diğer kavramlarla ilgili ancak diğer kavramların dışında bir Kubernetes kurumsal soyutlaması etiketlemedir. Bir etiket Kubernetes içinde Kubernetes bağlı bir grubun bir parçası olarak işaretlemek için nesneleri edilebilir bir semantik etikettir. Bunlar daha sonra yönetim veya yönlendirme için farklı örnekler hedeflenirken seçilebilir. Örneğin, denetleyici tabanlı nesnelerin her biri, üzerinde çalışması gereken bölmeleri tanımlamak için etiketler kullanır. Hizmetler, istekleri yönlendirmeleri gereken arka uç kapsüllerini anlamak için etiketleri kullanır.

Etiketler basit anahtar-değer çiftleri olarak verilmiştir. Her birimin birden fazla etiketi olabilir, ancak her birimin her anahtar için yalnızca bir girişi olabilir. Genellikle bir “ad” anahtarı genel amaçlı bir tanımlayıcı olarak kullanılır, ancak nesneleri ayrıca geliştirme aşaması, genel erişilebilirlik, uygulama sürümü vb. Gibi diğer kriterlere göre de sınıflandırabilirsiniz.

Ek açıklamalar , bir nesneye rastgele anahtar-değer bilgileri eklemenize olanak tanıyan benzer bir mekanizmadır. Etiketlerin semantik bilgiler için bir bölmeyi seçim kriterleriyle eşleştirmek için kullanılması gerekirken, ek açıklamalar daha serbest biçimdedir ve daha az yapılandırılmış veri içerebilir. Genel olarak ek açıklamalar, bir nesneye seçim amaçları için yararlı olmayan zengin meta veriler eklemenin bir yoludur.

Sonuç

Kubernetes, kullanıcıların yüksek düzeyde soyutlanmış bir platformda ölçeklenebilir, yüksek oranda kullanılabilir konteynerleştirilmiş iş yüklerini çalıştırmalarına olanak tanıyan heyecan verici bir projedir. Kubernetes’in mimarisi ve dahili bileşen seti ilk bakışta göz korkutucu görünse de, güçleri, esneklikleri ve sağlam özellik seti açık kaynak dünyasında benzersizdir. Temel yapı taşlarının nasıl birbirine uyduğunu anlayarak, iş yüklerinizi geniş ölçekte çalıştırmak ve yönetmek için platformun yeteneklerinden tam olarak yararlanan sistemler tasarlamaya başlayabilirsiniz.

Kaynak