Depolama teknolojisi açıklandı: Kubernetes, kapsayıcılar ve kalıcı depolama


Konteynerleştirme, bulut tabanlı uygulama geliştirmenin eş anlamlısıdır ve Kubernetes, mevcut konteyner düzenleme platformları arasında anahtar konumdadır.

Bu yazıda konteynerleştirmeyi, onu neyin tanımladığını, Kubernetes’in konteynerleştirmeyle nasıl uyumlu olduğunu, Kubernetes’in nasıl organize edildiğini ve kalıcı depolama ve veri korumasını nasıl ele aldığını inceliyoruz.

Ayrıca, Kubernetes sürücüsünün depolama dizisi üreticisinin donanımına bağlanmasını sağlayan konteyner depolama arayüzüne (CSI) de bakıyoruz.

Son olarak, önemli depolama sağlayıcılarının sunduğu Kubernetes yönetim platformlarına bakacağız.

Konteynerizasyon nedir?

Konteynerleştirme, sanallaştırmanın bir biçimidir ve belki de en iyi şekilde “geleneksel” sunucu sanallaştırmasıyla karşılaştırılarak anlaşılabilir.

Sunucu sanallaştırma (VMware, Nutanix gibi) sunucunun fiziksel kaynaklarını maskeleyen ve sanal makine olarak bilinen çok sayıda mantıksal sunucunun çalıştırıldığı konum olan bir hiper yönetici katmanı oluşturur.

Uygulama konteynerleştirmesi bu hipervizör katmanını ortadan kaldırır ve sunucu işletim sistemiyle çalışır. Konteynerler bir uygulamanın çalışması için gereken her şeyi kapsüller ve çok hızlı bir şekilde oluşturulabilir, başlatılabilir, klonlanabilir, ölçeklenebilir ve ortadan kaldırılabilir.

Konteynerler, hipervizöre ve sanallaştırma işletim sisteminin birden fazla yinelemesine ihtiyaç duymadan “daha hafiftir”. Daha az sunucu kaynağı gerektirirler ve şirket içi ve bulut ortamları arasında oldukça taşınabilirdirler. Bu, konteynerleri özellikle web’de talepte büyük artışlar görülen iş yükleri için oldukça uygun hale getirir.

Konteynerler ayrıca, ayrı uygulama işlevlerinin, bunları birbirine bağlayan uygulama programlama arayüzleri (API’ler) etrafında oluşturulan küçük kod örneklerine yerleştirildiği mikro hizmetler ilkesiyle çalışır; bu, geçmişteki büyük, monolitik uygulamaların aksinedir.

Konteynerler ve mikroservisler aynı zamanda DevOps’un yinelemeli yazılım geliştirme metodolojileriyle de eş anlamlıdır.

Kubernetes Nedir?

Kubernetes bir konteyner düzenleyicisidir. Tek olanı değildir. Apache Mesos, Docker Swarm, Nomad, Red Hat OpenShift ve diğerleri de vardır. Bulutta AWS Elastic Container Services (ECS), Azure Kubernetes Service ve Google Cloud Kubernetes vardır. Ve sanallaştırma ortamında Kubernetes’i yöneten VMware Tanzu ürünleri vardır.

Konteyner düzenleyicileri, konteynerlerin oluşturulması, yönetimi, otomasyonu, yük dengelemesi ve depolama dahil donanımla ilişkisi gibi işlevleri yönetir. Kubernetes dilinde, bir veya daha fazla konteyner koleksiyonu olan pod’larda düzenlenirler.

Bu açıklamamızda Kubernetes’e odaklanacağız. Bahsedildiği gibi, tek konteyner düzenleyicisi değil, ancak bazı araştırmalara göre %97’den fazla payla ezici bir pazar lideri.

Kubernetes nasıl organize edilir?

Konteyner, uygulama çalışma zamanını ve kodunu, ayrıca bağımlılıkları, kütüphaneleri vb. içeren temel birimdir. Konteynerler, önceki durumlar hakkında herhangi bir veri veya bilgi depolamadıkları için durumsuzdur. Son derece taşınabilir, klonlanabilir, ölçeklenebilir vb.dirler çünkü ihtiyaç duydukları her şeyi yanlarında götürürler. Bu durumsuzluk aynı zamanda potansiyel bir Aşil tendonudur, göreceğimiz gibi.

Sonraki, pod’ları içeren ve kapsayıcıları barındıran ve yöneten kümelerdir. Bu kapsayıcılar farklı işlevlere hizmet edebilir -örneğin bir kullanıcı arayüzü, bir arka uç veritabanı- ancak aynı düğümde (yani sunucuda) tutulurlar ve birbirlerine yakındırlar ve bu nedenle hızlı bir şekilde iletişim kurarlar.

Düğümler, pod’ları çalıştıran fiziksel makineler veya içlerindeki sanal makinelerdir. Ana düğümler veya çalışan düğümler olabilirler. Ana düğümler, Kubernetes kümesinin dağıtımını ve durumunu yöneten kontrol düzlemidir.

Bileşen ana düğümleri şunları içerir: kümeyle etkileşimin gerçekleştiği API sunucusu; pod’ları çalıştırmak için en iyi düğümleri bulan ve belirleyen bir zamanlayıcı; kümenin gerekli durumunu (örneğin, bakımı yapılacak kopya sayısı) korumaya yardımcı olan denetleyici yöneticisi; ve kümenin durumunu tutan bir anahtar-değer deposu olan etcd.

Çalışan düğümler, ana düğümler tarafından devredilen görevlerle kapsayıcıları çalıştırır. Çalışan düğümler şunları içerir: Çalışan düğüm ile ana düğüm kontrol düzlemi arasındaki birincil arayüz olan Kubelets; ağ iletişimlerini pod’lara ileten kube-proxy; ve kapsayıcıları gerçekten çalıştıran yazılım olan kapsayıcı çalışma zamanı.

Depolama ve Kubernetes ile ilgili zorluk nedir?

En temel haliyle, Kubernetes’teki depolama geçicidir. Yani kalıcı değildir ve konteyner silindikten sonra kullanılamaz. Yerel Kubernetes depolaması konteynera yazılır ve yalnızca Kubernetes pod’unun ömrü boyunca var olan ana makinedeki geçici sıfırdan alandan oluşturulur.

Ancak elbette kurumsal uygulamalar kalıcı depolama gerektirir ve Kubernetes bunu gerçekleştirmenin yollarına sahiptir.

Kubernetes kalıcı depolamayı nasıl sağlar?

Kubernetes, dosya, blok ve nesne gibi çok çeşitli şirket içi ve bulut biçimlerine ve veritabanları gibi veri hizmetlerinde yazılabilen kalıcı depolamayı destekler.

Depolamaya pod’un içinden başvurulabilir, ancak taşınabilirlik ilkesini ihlal ettiği için bu önerilmez. Bunun yerine, Kubernetes depolama ve uygulama gereksinimlerini tanımlamak için kalıcı birimler (PV’ler) ve kalıcı birim talepleri (PVC’ler) kullanır.

PV’ler ve PVC’ler depolama alanını ayırır ve taşınabilir bir şekilde bir pod tarafından tüketilmesine olanak tanır.

Kubernetes kümeleri arasında taşınabilir olmayan bir PV, performans ve kapasite parametrelerine göre profillenen kümedeki depolama alanını tanımlar. Kalıcı bir depolama birimi tanımlar ve performans/maliyet sınıfı, kapasite, kullanılan birim eklentisi, yollar, IP adresleri, kullanıcı adları ve parolalar ve kullanımdan sonra birimle ne yapılacağı gibi ayrıntıları içerir.

Bu arada, bir PVC, Kubernetes’te çalışacak uygulama için bir depolama talebini tanımlar. PVC’ler taşınabilirdir ve konteynerleştirilmiş uygulama ile birlikte seyahat eder. Kubernetes, tanımlanmış PV’lerden hangi depolama alanının mevcut olduğunu anlar ve PVC’yi buna bağlar.

PVC’ler, talebin onunla birlikte seyahat edebilmesi ve kapasite, depolama performansı vb. belirleyebilmesi için pod’un YAML yapılandırma dosyasında tanımlanır.

StatefulSet, diğer şeylerin yanı sıra, pod’lar arasında kalıcı depolama için PVC’leri çoğaltır.

Bir PV koleksiyonu, kullanılan depolama hacmi eklentisini, harici (bulut gibi) sağlayıcıyı ve CSI sürücüsünün adını (aşağıya bakın) belirten bir depolama sınıfında gruplandırılabilir.

Genellikle bir depolama sınıfı “varsayılan” olarak işaretlenir, böylece bir PVC kullanılarak çağrılması gerekmez veya bir kullanıcı bir PVC’de bir depolama sınıfı belirtmezse çağrılabilir. Ayrıca, konteynerleştirilmiş uygulamalar tarafından erişilmesi gerekebilecek eski veriler için bir depolama sınıfı oluşturulabilir.

CSI Nedir?

CSI, konteyner depolama arayüzüdür. CSI, depolama tedarikçileri tarafından konteynerleştirilmiş uygulamalara kalıcı depolama olarak kapasitelerini sunmak için sağlanan Kubernetes ve diğer konteyner düzenleyicileri için sürücüleri tanımlar.

Yazım sırasında, donanım ve bulut formatlarında dosya, blok ve nesne depolama için 130’dan fazla CSI sürücüsü mevcuttu.

CSI, orkestratörün dışındaki kalıcı depolama alanının yapılandırmasını, giriş/çıkışını (G/Ç) ve anlık görüntü alma ve klonlama gibi gelişmiş işlevleri tanımlayan bir arayüz sağlar.

Bir CSI birimi PV’leri tanımlamak için kullanılabilir. Örneğin, bir CSI eklentisi tarafından tanımlanan harici depolamaya işaret eden PV’ler ve depolama sınıfları oluşturabilir ve sağlama, bunu belirten bir PVC tarafından tetiklenir.

Depolama satıcıları K8’in depolama ve veri korumasına yardımcı olmak için ne sunuyor?

Kubernetes’in bileşenleri çok sayıda ve modülerdir. Belki de şaşırtıcı olmayan bir şekilde, depolama dizisi satıcıları bunun üzerine daha fazla yönetim katmanı sarma ve yöneticiler için depolama ve veri hizmetlerinin sağlanmasını daha basit hale getirme olanağından yararlandılar. Burada, bu alandaki depolama satıcısı ürünlerine bakıyoruz.

Buradaki gereksinimler, uygulamaların ihtiyaç duyduğu depolama profiline göre kaynakların yapılandırılmasından, yedeklemelerin kaynağına ve hedefine ve diğer veri koruma işlevlerine kadar uzanır ve bunların hepsi hızla değişebilir.

Dell EMC, IBM, HPE, Hitachi, NetApp ve Pure Storage’ın tümü, geliştiricilerin depolama ve veri koruma gereksinimlerini daha kolay bir şekilde koda yazmalarına olanak tanıyan ve aynı zamanda veri koruma gibi geleneksel BT işlevlerinin derin becerilere gerek kalmadan yönetilmesine olanak tanıyan konteyner yönetim platformlarına sahiptir.

Hepsi, kendi depolama ve yedekleme ortamlarının ve bazı durumlarda buluttakiler de dahil olmak üzere herhangi bir depolama ortamının sağlanması ve yönetilmesi için bir şekilde CSI sürücülerini kullanır.

Dell Konteyner Depolama Modülleri ne işe yarar?

Dell’in Konteyner Depolama Modülleri (CSM) CSI sürücülerine dayanır. Temel CSI sürücüleri veri hacimlerinin sağlanması, silinmesi, eşlenmesi ve eşlenmesinin kaldırılmasında yardımcı olurken, Dell CSM’leri otomasyon, kontrol ve basitliğe yardımcı olur.

Birkaç CSM, müşterilerin normalde erişemeyecekleri depolama dizisi özelliklerine erişmelerine olanak tanır. Bu CSM eklentileri, çoğaltma, gözlemlenebilirlik, dayanıklılık, uygulama hareketliliği (klonlama), anlık görüntüler, yetkilendirme (yani depolama kaynaklarına erişim) ve şifreleme gibi belirli işlevleri veya veri hizmetlerini hedefler.

Dell’in CSM’leri, müşterilerin ek yazılımlar kullanmak yerine Dell’in depolama dizilerine erişim sağlayarak mevcut depolama konteynerlerini kullanıma hazır hale getirmelerine olanak tanır.

IBM’in Red Hat Openshift’i konteynerlar için ne yapıyor?

IBM’in 2018 yılında Red Hat’i satın almasıyla birlikte konteyner yönetimi çalışmalarının ana merkezi olan OpenShift portföyü ortaya çıktı.

OpenShift, geliştiricilerin depolama kaynakları talep etmelerine olanak sağlamak için CSI sürücüleri aracılığıyla Kubernetes kalıcı birim taleplerini (PVC) kullanır. PVC’ler, OpenShift platformunun herhangi bir yerinden kalıcı birimlere erişebilir.

OpenShift Konteyner Platformu, Amazon EBS, Azure Dosyaları, Azure Yönetilen Diskler, Google Cloud Kalıcı Disk, Cinder, iSCSI, Yerel Birim, NFS ve VMware vSphere dahil olmak üzere birçok popüler PV eklentisini yerinde ve bulutta destekler.

Hiper-yakınsak altyapı sağlayıcısı Nutanix de konteyner dağıtım platformu olarak OpenShift’i kullanıyor.

HPE’nin Ezmeral Runtime Enterprise ürünü konteynerleri yönetmeye nasıl yardımcı oluyor?

HPE, HPE’nin Synergy ortamı üzerinden dağıtılabilen kendi Kubernetes yönetim platformu HPE Ezmeral Runtime Enterprise’ı geliştirdi.

Kubernetes kullanarak bulut tabanlı ve bulut tabanlı olmayan uygulamaları dağıtmak için tasarlanmış bir yazılım platformudur ve yalın metal veya sanallaştırılmış altyapıda, şirket içinde veya herhangi bir bulutta çalışabilir. Sadece uygulama dağıtımından daha ileri gider ve uçlara kadar veri yönetimi içerir.

Ezmeral, manuel yönetim görevlerini en aza indirmek için konteyner HA, yedekleme ve geri yükleme, güvenlik doğrulama ve izlemeyi kurmak üzere kalıcı konteyner depolama ve yapılandırma otomasyonu sunar

Hitachi Kubernetes Service konteyner dağıtımları için ne yapar?

Hitachi, 2021 yılında müşterilerin şirket içi veri merkezlerinde ve üç ana genel bulutta konteyner depolamayı yönetmelerine olanak tanıyan Hitachi Kubernetes Service (HKS) ile Kubernetes depolama alanına katıldı.

HKS, Hitachi Unified Compute Platform’un yerel ve hibrit bulut ortamlarında Kubernetes tarafından yönetilen özel bulut olarak dağıtımına olanak tanır.

HKS, kalıcı birimleri doğrudan Kubernetes düğümlerinde yönetmek için CSI sürücülerini kullanır ve bu da onu diğer tedarikçilerin konteyner tabanlı tekliflerinden ayırır.

NetApp Astra konteynerlerin dağıtımına ve yönetilmesine nasıl yardımcı olur?

NetApp’in Astra, konteyner yönetim platformudur. Kubernetes uygulama yaşam döngüsü yönetimi için Astra Control; genel bulutlardaki Kubernetes iş yüklerinin veri yönetimi için Astra Control Service; şirket içi Kubernetes iş yükleri için Astra Control Centre ve CSI depolama sağlama ve yönetimi için Astra Trident dahil olmak üzere bir dizi bileşenden oluşur. Ayrıca Astra Automation ve Astra iş akışları için API’leri ve SDK’ları da vardır.

Pure Storage Portworx konteyner dağıtımlarına hangi işlevselliği sağlar?

Portworx, Pure Storage’ın konteyner platformudur ve ona Kubernetes kümeleri için konteyner yerel sağlama, bağlantı ve performans yapılandırması sağlar. Depolama keşfedebilir ve blok, dosya ve nesne ve bulut depolamasına erişimle kurumsal uygulamalar için kalıcı kapasite sağlayabilir.

Müşteriler, depolama havuzları oluşturmak, sağlamayı yönetmek ve yedekleme, felaket kurtarma, güvenlik, otomatik ölçekleme ve ana bulut sağlayıcılarındaki yerel veya bulut depolama geçişi gibi gelişmiş işlevler sağlamak için Portworx’ü kullanabilirler.



Source link