Kubernet Mimarisi Nedir? Önem + En İyi Uygulamalar
Yayınlanan: 2023-06-12Kubernetes, 2014'ten bu yana benimsenmesinde muazzam bir büyüme yaşadı. Google'ın dahili küme yönetimi çözümü Borg'dan ilham alan Kubernetes, uygulamalarınızın dağıtımını ve yönetimini basitleştirir. Tüm konteyner düzenleme yazılımları gibi, Kubernetes de güvenli ve anlaşılır olduğu için BT uzmanları arasında popüler hale geliyor. Ancak, her araçta olduğu gibi, mimarisinin farkına varmak, onu daha verimli kullanmanıza yardımcı olur.
Ne olduğu, ne yaptığı ve neden önemli olduğu ile başlayarak Kubernetes mimarisinin temellerini öğrenelim.
Kubernetes mimarisi nedir?
Kubernetes veya Kubernetes mimarisi, kapsayıcıları yönetmek ve dağıtmak için açık kaynaklı bir platformdur. Kaplara odaklanan hizmet keşfi, yük dengeleme, yeniden oluşturma mekanizmaları, kapsayıcı düzenleme, kapsayıcı çalışma zamanı ve altyapı düzenleme sağlar.
Google, kapsayıcılı uygulamaları birçok ayarda yöneten uyarlanabilir Kubernetes kapsayıcı yönetim sistemini oluşturdu. Kapsayıcılı uygulama dağıtımını otomatikleştirmeye, değişiklikler yapmaya ve bu uygulamaları ölçeklendirmeye ve küçültmeye yardımcı olur.
Kubernetes, yalnızca bir kapsayıcı düzenleyici değildir. Aynı şekilde, masaüstü uygulamaları MacOS, Windows veya Linux üzerinde çalışır; Bu programlar için bulut platformu olarak hizmet verdiğinden, yerel bulut uygulamaları için işletim sistemidir.
Konteyner nedir?
Konteynerler, uygulamaların çalışma zamanı ortamlarında kolayca yürütülebilmesi için uygulamaları ve bağımlılıklarını paketlemeye yönelik standart bir yaklaşımdır. Konteynerleri kullanarak, bir uygulamanın kodunu, bağımlılıklarını ve yapılandırmalarını tek, kullanımı kolay bir yapı taşında paketleyerek dağıtım süresini kısaltmaya ve uygulama güvenilirliğini artırmaya yönelik temel önlemleri alabilirsiniz.
Kurumsal uygulamalardaki container sayısı yönetilemez hale gelebilir. Kubernetes, kapsayıcılarınızdan en iyi şekilde yararlanabilmeniz için bunları düzenlemenize yardımcı olur.
Kubernet'ler ne için kullanılır?
Kubernetes, konteyner iş yüklerini çalıştırmak için inanılmaz derecede uyarlanabilir ve genişletilebilir bir platformdur. Kubernetes platformu, yalnızca bulutta yerel uygulamalar oluşturmak için ortam sağlamakla kalmaz, aynı zamanda dağıtımlarını yönetmeye ve otomatikleştirmeye de yardımcı olur.
Uygulama operatörlerini ve geliştiricileri, temel bilgi işlem, ağ ve depolama altyapısını koordine etme zahmetinden kurtarmayı ve onların self servis operasyon için yalnızca konteyner merkezli süreçlere odaklanmalarını sağlamayı amaçlar. Geliştiriciler ayrıca, birkaç kapsayıcıdan oluşan uygulamalar için daha yüksek düzeyde otomasyonun yanı sıra özel devreye alma ve yönetim prosedürleri de oluşturabilir.
Kubernet'ler, yekpare uygulamalar, durum bilgisi olmayan veya durum bilgisi olan programlar, mikro hizmetler, hizmetler, toplu işler ve aradaki her şey dahil olmak üzere tüm önemli arka uç iş yüklerini işleyebilir.
Kubernet'ler genellikle aşağıdaki avantajlar için seçilir.
- Kubernetes'in altyapısı, birçok DevOps teknolojisinden üstündür.
- Kubernetes, hassas yönetim için kapsayıcıları daha küçük bileşenlere ayırır.
- Kubernetes, yazılım güncellemelerini hızlı ve düzenli bir şekilde dağıtır.
- Kubernetes, bulutta yerel uygulamalar geliştirmek için bir platform sağlar.
Kubernetes mimarisi ve bileşenleri
Temel Kubernetes mimarisi, K8s bileşenleri olarak da bilinen birçok bileşen içerir; bu nedenle, hemen konuya geçmeden önce, aşağıdaki kavramları hatırlamak önemlidir.
- Temel Kubernetes mimarisi, kapsayıcılı uygulamaları yürüten düğümleri ve çalışan düğümleri yöneten bir kontrol düzleminden oluşur.
- Kontrol düzlemi yürütmeyi ve iletişimi yönetirken, çalışan düğümler aslında bu kapsayıcıları çalıştırır.
- Bir Kubernetes kümesi, bir düğüm grubudur ve her kümenin en az bir çalışan düğümü vardır.
Kubernetes mimarisi diyagramı
Kubernetes kontrol düzlemi
Kontrol düzlemi, kümenin kontrol bileşenlerini barındıran Kubernetes küme tasarımının merkezi sinir sistemi merkezidir. Ayrıca kümedeki tüm Kubernetes nesnelerinin yapılandırmasını ve durumunu da kaydeder.
Kubernetes kontrol düzlemi, kümenin beklendiği gibi çalışmasını sağlamak için bilgi işlem birimleriyle düzenli iletişimi sürdürür. Denetleyiciler, nesne durumlarını denetler ve küme değişikliklerine yanıt olarak sistem nesnelerinin fiziksel, gözlemlenen durumunu veya mevcut durumunu istenen duruma veya belirtime uyacak şekilde yapar.
Kontrol düzlemi, uygulama programlama arabirimi (API) sunucusu, programlayıcı, denetleyici yöneticisi vb. dahil olmak üzere birkaç temel öğeden oluşur. Bu temel Kubernetes bileşenleri, kapların uygun kaynaklarla çalışmasını garanti eder. Bu bileşenlerin tümü tek bir birincil düğümde çalışabilir, ancak birçok şirket yüksek kullanılabilirlik için bunları çok sayıda düğümde çoğaltır.
1. Kubernetes API sunucusu
Kubernetes API sunucusu, Kubernetes kontrol düzleminin ön ucudur. Çeşitli uygulamalar için API yönetimi sunarak güncellemeleri, ölçeklendirmeyi, verileri yapılandırmayı ve diğer yaşam döngüsü düzenleme türlerini kolaylaştırır. API sunucusu ağ geçidi olduğundan, kullanıcıların ona kümenin dışından erişebilmesi gerekir. Bu durumda API sunucusu, bölmelere, hizmetlere ve düğümlere giden bir tüneldir. Kullanıcılar, API sunucusu aracılığıyla kimlik doğrulaması yapar.
2. Kubernetes zamanlayıcı
Kube-scheduler, her bilgi işlem düğümü için kaynak kullanım istatistiklerini kaydeder, bir kümenin sağlıklı olup olmadığını değerlendirir ve yeni kapsayıcıların konuşlandırılıp dağıtılmayacağına ve nereye dağıtılacağına karar verir. Zamanlayıcı, kümenin genel sağlığını ve merkezi işlem birimi (CPU) veya bellek gibi bölmenin kaynak taleplerini değerlendirir. Ardından uygun bir bilgi işlem düğümü seçer ve kaynak kısıtlamaları veya güvenceleri, veri konumu, hizmet kalitesi gereksinimleri, yakınlık karşıtı veya yakınlık standartlarını göz önünde bulundurarak görevi, bölmeyi veya hizmeti zamanlar.
3. Kubernetes denetleyici yöneticisi
Bir Kubernetes ortamında, uç noktaların (kapsüller ve hizmetler), belirteçlerin ve hizmet hesaplarının (ad alanları), düğümlerin ve çoğaltmanın (otomatik ölçeklendirme) durumlarını birden çok denetleyici yönetir. Genellikle bulut denetleyici yöneticisi veya yalnızca denetleyici olarak bilinen kube-denetleyici yöneticisi, çeşitli denetleyici görevlerini yerine getirerek Kubernetes kümesini yöneten bir arka plan programıdır.
Denetleyici, Kubernetes çekirdek denetim döngülerini çalıştırırken kümedeki nesneleri izler. API sunucusu üzerinden istenilen ve var olan durumları takip eder. Yönetilen nesnelerin mevcut ve amaçlanan durumları eşleşmezse, denetleyici, nesne durumunu istenen duruma yaklaştırmak için düzeltici eylemde bulunur. Kubernetes denetleyicisi ayrıca temel yaşam döngüsü görevlerini de yerine getirir.
4. vb.
etcd, yapılandırma verilerini ve küme durumu bilgilerini tutan, dağıtılmış, hataya dayanıklı bir anahtar-değer depolama veritabanıdır. etcd bağımsız olarak ayarlanabilse de, genellikle Kubernetes kontrol düzleminin bir parçası olarak hizmet eder.
Sal mutabakat algoritması, küme durumunu etcd'de tutmak için kullanılır. Bu, çoğaltılmış durum makineleri bağlamındaki tipik bir sorunun üstesinden gelmeye yardımcı olur ve birçok sunucunun değerler üzerinde anlaşmasını gerektirir. Raft üç rol belirler: lider, aday ve takipçi ve bir lider için oylama yoluyla fikir birliği oluşturur.
Sonuç olarak etcd, tüm Kubernetes küme bileşenleri için tek gerçek kaynağıdır (SSOT), kontrol düzlemi sorgularına yanıt verir ve kapların, düğümlerin ve bölmelerin durumu hakkında farklı bilgiler toplar. etcd ayrıca ConfigMaps, alt ağlar, sırlar ve küme durumu verileri gibi yapılandırma bilgilerini depolamak için kullanılır.
Kubernetes çalışan düğümleri
Çalışan düğümler, kontrol düzleminin yönettiği kapsayıcıları çalıştıran sistemlerdir. Çekirdek Kubernetes denetleyicisi olan kubelet, kontrol düzlemiyle etkileşim için her düğümde bir aracı olarak çalışır. Ek olarak, her düğüm, Docker veya rkt gibi bir konteyner çalışma zamanı motoru çalıştırır. İzleme, günlüğe kaydetme, hizmet keşfi ve isteğe bağlı ekstralar için diğer bileşenler de düğümde çalıştırılır.
Bazı önemli Kubernetes küme mimarisi bileşenleri aşağıdaki gibidir.
Düğümler
Bir Kubernetes kümesinin en az bir bilgi işlem düğümüne sahip olması gerekir, ancak kapasite gereksinimlerine bağlı olarak çok daha fazlasına sahip olabilir. Bölmeler düğümlerde yürütülecek şekilde koordine edildiğinden ve programlandığından, küme kapasitesini artırmak için ek düğümler gerekir. Düğümler, bir Kubernetes kümesinin işini yapar. Uygulamaların yanı sıra ağ, hesaplama ve depolama kaynaklarını birbirine bağlarlar.
Veri merkezlerindeki düğümler, bulutta yerel sanal makineler (VM'ler) veya çıplak metal sunucular olabilir.
Kapsayıcı çalışma zamanı motoru
Her bilgi işlem düğümü, kapsayıcı yaşam döngülerini çalıştırmak ve yönetmek için bir kapsayıcı çalışma zamanı motoru kullanır. Kubernetes, Docker, CRI-O ve rkt gibi açık konteyner inisiyatifiyle uyumlu çalışma zamanlarını destekler.
Kubelet hizmeti
Her hesaplama düğümünde bir kubelet bulunur. Bir bölmedeki kapların çalıştığını garanti etmek için kontrol düzlemi ile iletişim kuran bir aracıdır. Kontrol düzlemi, bir düğümde belirli bir eylemin gerçekleştirilmesini talep ettiğinde, kubelet, API sunucusu aracılığıyla pod özelliklerini alır ve çalışır. Daha sonra ilgili kapların iyi çalışır durumda olduğundan emin olur.
Kube proxy hizmeti
Her bilgi işlem düğümünün, kube-proxy olarak bilinen ve Kubernetes ağ hizmetlerine yardımcı olan bir ağ proxy'si vardır. Kube-proxy, küme içindeki ve dışındaki ağ bağlantılarını yönetmek için trafiği iletir veya işletim sisteminin paket filtreleme katmanına bağlıdır.
Kube-proxy süreci, hizmetlerin diğer taraflarca kullanılabilir olmasını sağlamak ve belirli ana bilgisayar alt ağlarıyla başa çıkmak için her düğümde çalışır. Kullanıcı datagram protokolü (UDP) ve iletim kontrol protokolü (TCP) trafiği için ağ yönlendirmesini gerçekleştirerek düğümünde bir ağ proxy'si ve hizmet yük dengeleyici görevi görür. Kube-proxy, gerçekte trafiği tüm hizmet uç noktaları için yönlendirir.
Bölmeler
Şimdiye kadar şirket içi ve altyapıyla ilgili fikirleri ele aldık. Ancak bölmeler, geliştiricilerin etkileşime girdiği dışa dönük birincil bileşen oldukları için Kubernet'ler için çok önemlidir.
Pod, bir uygulamanın tek bir örneğini temsil eden Kubernetes konteyner modelindeki en basit birimdir. Her bölme, mantıksal olarak birbirine uyan ve kabın işlevini yöneten kuralları yerine getiren bir kap veya birbiriyle sıkı sıkıya ilişkili birkaç kap içerir.
Bölmelerin sınırlı bir ömrü vardır ve yükseltildikten veya küçültüldükten sonra nihayetinde ölürler. Geçici olmalarına rağmen, kalıcı depolamaya bağlanarak durum bilgisi olan uygulamaları yürütürler.
Bölmeler ayrıca yatay olarak da ölçeklenebilir, yani çalışan örnek sayısını artırabilir veya azaltabilirler. Ayrıca, sıralı güncellemeler ve kanarya konuşlandırmaları da yapabilirler.
Bölmeler, düğümlerde birlikte çalışır, böylece içerik ve depolamayı paylaşırlar ve yerel ana bilgisayar aracılığıyla diğer bölmelerle iletişim kurabilirler. Konteynerler birkaç bilgisayara yayılabilir ve bölmeler de öyle. Tek bir düğüm, her biri çok sayıda konteyner toplayan birkaç bölmeyi çalıştırabilir.
Pod, Kubernetes ekosistemindeki merkezi yönetim birimidir ve kaynakları ve bağlamı paylaşan kapsayıcılar için mantıksal bir sınır görevi görür. Birkaç bağımlı işlemin aynı anda çalışmasına izin veren bölme gruplama yöntemi, sanallaştırma ve konteynerleştirme arasındaki farkları azaltır.
Bakla türleri
Birkaç çeşit bölme, Kubernetes kapsayıcı modelinde hayati bir rol oynar.
- Varsayılan tür olan ReplicaSet , verilen sayıda bölmenin çalışır durumda olduğunu garanti eder.
- Dağıtım, ReplicaSets tabanlı bölmeleri yönetmek için bildirime dayalı bir yöntemdir. Bu, geri alma ve yuvarlanan güncelleme mekanizmalarını içerir.
- Daemonset , her düğümün bir bölme örneğini çalıştırmasını sağlar. Durum izleme ve günlük iletme gibi küme hizmetleri kullanılır.
- StatefulSet, duruma dayanması veya durumu koruması gereken bölmeleri yönetmek için tasarlanmıştır.
- Job ve CronJob, tek seferlik veya önceden tanımlanmış zamanlanmış işleri çalıştırır.
Diğer Kubernetes mimarisi bileşenleri
Kubernetes, bir uygulamanın kapsayıcılarını korur ancak bir kümedeki ilişkili uygulama verilerini de yönetebilir. Kubernetes kullanıcıları, altta yatan depolama altyapısını anlamadan depolama kaynakları talep edebilir.
Bir Kubernetes birimi, bir bölmenin verilere erişip depolayabildiği bir dizindir. Birim türü, birimin içeriğini, nasıl ortaya çıktığını ve onu destekleyen ortamı belirler. Kalıcı birimler (PV'ler), genellikle bir yönetici tarafından sağlanan kümeye özgü depolama kaynaklarıdır. PV'ler ayrıca belirli bir bölmeden daha uzun yaşayabilir.
Kubernet'ler, bir kapsayıcı kayıt defterinde saklanan kapsayıcı görüntülerine bağlıdır. Bu, üçüncü taraf bir kayıt veya kuruluşun oluşturduğu bir kayıt olabilir.
Ad alanları, fiziksel bir küme içinde bulunan sanal kümelerdir. Çok sayıda kullanıcı ve ekip için bağımsız çalışma ortamları oluşturmak üzere tasarlanmıştır. Ayrıca erişebilecekleri Kubernetes nesnelerini kısıtlayarak ekiplerin birbirine müdahale etmesini engeller. Bir bölmedeki Kubernetes kapsayıcıları, yerel ana bilgisayar aracılığıyla diğer bölmelerle iletişim kurabilir ve IP adreslerini ve ağ ad alanlarını paylaşabilir.
Kubernetes ve Docker Swarm
Hem Kubernetes hem de Docker, konteyner yönetimi ve uygulama ölçeklendirme sağlayan platformlardır. Kubernetes, karmaşık bir kuruluma sahip yüksek talep gören uygulamalar için ideal, etkili bir konteyner yönetimi çözümü sağlar. Bunun tersine, Docker Swarm basitlik için tasarlanmıştır, bu da onu kurulumu ve bakımı hızlı olan temel uygulamalar için mükemmel bir seçim haline getirir.
- Docker Swarm'ı dağıtmak ve yapılandırmak, Kubernetes'ten daha kolaydır.
- Kubernetes, trafiğe dayalı hepsi bir arada ölçeklenebilirlik sağlarken, Docker Swarm hızlı ölçeklendirmeye öncelik verir.
- Otomatik yük dengeleme Docker Swarm'da mevcuttur ancak Kubernetes'te yoktur. Ancak üçüncü taraf çözümler, harici bir yük dengeleyiciyi Kubernetes'e bağlayabilir.
Şirketinizin talepleri doğru aracı belirler.
Kapsayıcı düzenleme çözümleri
Kapsayıcı orkestrasyon sistemleri, geliştiricilerin uygulama dağıtımı için birkaç kapsayıcı başlatmasını sağlar. BT yöneticileri, örnekleri yönetmeyi, ana bilgisayarları tedarik etmeyi ve kapsayıcıları bağlamayı otomatikleştirmek için bu platformları kullanabilir.
Aşağıda, dağıtımı kolaylaştıran, başarısız kapsayıcı uygulamalarını belirleyen ve uygulama yapılandırmalarını yöneten en iyi kapsayıcı düzenleme araçlarından bazıları yer almaktadır.
En iyi 5 konteyner düzenleme yazılımı:
- Google Bulut Koşusu
- Amazon Elastik Konteyner Hizmeti (Amazon ECS)
- Mirantis Kubernetes Motoru
- Google Kubernetes Motoru
- Amazon Elastic Kubernetes Hizmeti (Amazon EKS)
*G2'nin İlkbahar 2023 Grid Raporundan beş lider konteyner düzenleme çözümü.
Kubernetes mimarisi en iyi uygulamaları ve tasarım ilkeleri
Güvenlik, yönetişim, izleme, depolama, ağ iletişimi, kapsayıcı yaşam döngüsü yönetimi ve düzenlemeyi dikkate alan bir platform stratejisi uygulamak çok önemlidir. Bununla birlikte, özellikle hem şirket içi hem de genel bulut altyapısını yöneten işletmeler için Kubernetes'i benimsemek ve ölçeklendirmek oldukça zordur. Bunu basitleştirmek için aşağıda tartışılan, kubernetes kümelerini tasarlarken göz önünde bulundurulması gereken en iyi uygulamalardan bazılarıdır.
- Her zaman Kubernetes'in en son sürümüne sahip olduğunuzdan emin olun.
- Geliştirme ve operasyon ekipleri için eğitime yatırım yapın .
- Şirket genelinde yönetişim oluşturun. Araçlarınızın ve sağlayıcılarınızın Kubernetes düzenlemesiyle uyumlu olduğundan emin olun.
- Sürekli entegrasyon ve teslim (CI/CD) iş akışınıza görüntü tarama tekniklerini dahil ederek güvenliği artırın . Bir GitHub deposundan indirilen açık kaynak koduna her zaman dikkatle yaklaşılmalıdır.
- Küme genelinde rol tabanlı erişim denetimi (RBAC) uygulayın. En az ayrıcalığa ve sıfır güvene dayalı modeller norm olmalıdır.
- Kapsayıcıları daha fazla korumak için yalnızca kök olmayan kullanıcıları kullanın ve dosya sistemini salt okunur yapın.
- Basit bildirimler hataya daha az eğilimli olduğundan ve amacı daha iyi ilettiğinden , varsayılan değerlerden kaçının .
- Temel Docker Hub görüntülerini kullanırken dikkatli olun çünkü bunlar kötü amaçlı yazılım içerebilir veya gereksiz kodla şişirilmiş olabilir. Yalın, temiz kodla başlayın ve yolunuza devam edin. Daha küçük resimler daha hızlı büyür, depolamada daha az yer kaplar ve resimleri daha hızlı çeker.
- Kapları olabildiğince basit tutun. Kapsayıcı başına bir işlem, orkestratörün bu işlemin sağlıklı olup olmadığını bildirmesine olanak tanır.
- Şüpheye düştüğünüzde kaza yapın . Kubernetes arızalı bir kapsayıcıyı yeniden başlatacağı için başarısızlık durumunda yeniden başlatmayın.
- Açıklayıcı olun. Açıklayıcı etiketler, mevcut ve gelecekteki geliştiricilere fayda sağlar.
- Mikro hizmetler söz konusu olduğunda, çok spesifik olmayın . Bir mantıksal kod bileşeni içindeki her işlev, onun mikro hizmeti olmamalıdır.
- Mümkün olduğunda, otomatikleştirin . CI/CD iş akışınızı otomatikleştirerek manuel Kubernetes dağıtımlarını tamamen atlayabilirsiniz.
- Kapsül yaşam döngülerini yönetmeye yardımcı olması için canlılık ve hazırlık araştırmalarını kullanın; aksi halde, bölmeler başlatılırken veya kullanıcı istekleri alınırken hazır olmadan sonlandırılabilir.
İpucu: Daha iyi dağıtım uygulamaları için kapsayıcı yönetimi çözümlerini keşfedin.
Konteynerlerinizi düşünün
Konteyner merkezli yönetim yazılımı olan Kubernetes, işletmelerde konteynerlerin geniş kullanımı nedeniyle konteynerli uygulamaları devreye almak ve çalıştırmak için fiili standart haline geldi. Kubernetes mimarisi basit ve sezgiseldir. BT yöneticilerine altyapıları ve uygulama performansları üzerinde daha fazla kontrol sağlarken, teknolojiden en iyi şekilde yararlanmak için öğrenilecek çok şey var.
Konuyu daha fazla keşfetmek ilginizi çekti mi? Bulut bilişimde konteynerleştirmenin artan önemi hakkında bilgi edinin!