Aracılığıyla paylaş


Yüksek ölçeklenebilirlik ve kullanılabilirlik için mikro hizmetleri ve çok kapsayıcılı uygulamaları yönetme

İpucu

Bu içerik, .NET Docs'ta veya çevrimdışı olarak okunabilen ücretsiz indirilebilir bir PDF olarak sağlanan Kapsayıcılı .NET Uygulamaları için .NET Mikro Hizmet Mimarisi e-Kitabı'ndan bir alıntıdır.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

Uygulamanız mikro hizmetlere dayalıysa veya yalnızca birden çok kapsayıcıya bölünmüşse, üretime hazır uygulamalar için düzenleyicileri kullanmak çok önemlidir. Daha önce de açıklandığı gibi mikro hizmet tabanlı bir yaklaşımda, her mikro hizmet kendi modeline ve verilerine sahip olur, böylece geliştirme ve dağıtım açısından otonom olur. Ancak birden çok hizmet (SOA gibi) içeren daha geleneksel bir uygulamanız olsa bile, dağıtılmış sistem olarak dağıtılması gereken tek bir iş uygulamasından oluşan birden çok kapsayıcınız veya hizmetiniz de olur. Bu tür sistemlerin ölçeğini genişletmek ve yönetmek karmaşıktır; Bu nedenle, üretime hazır ve ölçeklenebilir çok kapsayıcılı bir uygulamaya sahip olmak istiyorsanız kesinlikle bir düzenleyiciye ihtiyacınız vardır.

Şekil 4-23'de birden çok mikro hizmet (kapsayıcı) oluşan bir uygulama kümesine dağıtım gösterilmektedir.

Diagram showing Composed Docker applications in a cluster.

Şekil 4-23. Kapsayıcı kümesi

Her hizmet örneği için bir kapsayıcı kullanırsınız. Docker kapsayıcıları "dağıtım birimleri"dir ve kapsayıcı bir Docker görüntüsünün örneğidir. Konak birçok kapsayıcıyı işler. Mantıksal bir yaklaşım gibi görünüyor. Ancak bu oluşturulan uygulamaları yük dengeleme, yönlendirme ve düzenleme işlemlerini nasıl gerçekleştirebilirsiniz?

Tek Docker konaklarındaki düz Docker Altyapısı, tek bir konaktaki tek görüntü örneklerini yönetme gereksinimlerini karşılar, ancak daha karmaşık dağıtılmış uygulamalar için birden çok konakta dağıtılan birden çok kapsayıcıyı yönetme konusunda kısadır. Çoğu durumda kapsayıcıları otomatik olarak başlatacak, görüntü başına birden çok örnek içeren kapsayıcıların ölçeğini genişletecek, gerektiğinde bunları askıya alacak veya kapatacak ve ideal olarak ağ ve veri depolama gibi kaynaklara nasıl erişeceklerini denetleyecek bir yönetim platformuna ihtiyacınız vardır.

Tek tek kapsayıcıların veya basit oluşturulan uygulamaların yönetiminin ötesine geçmek ve mikro hizmetlerle daha büyük kurumsal uygulamalara geçmek için düzenleme ve kümeleme platformlarına geçmeniz gerekir.

Mimari ve geliştirme açısından bakıldığında, mikro hizmet tabanlı uygulamalardan oluşan büyük bir kuruluş oluşturuyorsanız, gelişmiş senaryoları destekleyen aşağıdaki platformları ve ürünleri anlamanız önemlidir:

Kümeler ve düzenleyiciler. Büyük bir mikro hizmet tabanlı uygulamada olduğu gibi birçok Docker konaklarında uygulamaların ölçeğini genişletmeniz gerektiğinde, temel alınan platformun karmaşıklığını soyutlayarak tüm bu konakları tek bir küme olarak yönetebilmek kritik önem taşır. Kapsayıcı kümeleri ve düzenleyiciler bunu sağlar. Kubernetes bir düzenleyici örneğidir ve Azure Kubernetes Service aracılığıyla Azure'da kullanılabilir.

Schedulers.Zamanlama , bir yöneticinin bir kümede kapsayıcıları başlatarak kullanıcı arabirimi sağlama özelliğine sahip olması anlamına gelir. Küme zamanlayıcının çeşitli sorumlulukları vardır: kümenin kaynaklarını verimli bir şekilde kullanmak, kullanıcı tarafından sağlanan kısıtlamaları ayarlamak, düğümler veya konaklar arasında kapsayıcıları verimli bir şekilde yük dengelemek ve yüksek kullanılabilirlik sağlarken hatalara karşı sağlam olmak.

Küme ve zamanlayıcı kavramları yakından ilişkilidir, bu nedenle farklı satıcılar tarafından sağlanan ürünler genellikle her iki özellik kümesini de sağlar. Aşağıdaki listede, kümeler ve zamanlayıcılar için sahip olduğunuz en önemli platform ve yazılım seçimleri gösterilmektedir. Bu düzenleyiciler genellikle Azure gibi genel bulutlarda sunulur.

Kapsayıcı kümelemesi, düzenleme ve zamanlama için yazılım platformları

Platform Açıklama
Kubernetes
An image of the Kubernetes logo.
Kubernetes , küme altyapısından kapsayıcı zamanlamaya ve özellikleri düzenlemeye kadar çeşitli işlevler sağlayan bir açık kaynak üründür. Konak kümeleri arasında uygulama kapsayıcılarının dağıtımını, ölçeklendirmesini ve işlemlerini otomatikleştirmenizi sağlar.

Kubernetes , kolay yönetim ve bulma için uygulama kapsayıcılarını mantıksal birimler halinde gruplandıran kapsayıcı merkezli bir altyapı sağlar.

Kubernetes Linux'ta olgun, Windows'ta ise daha az olgundur.
Azure Kubernetes Service (AKS)
An image of the Azure Kubernetes Service logo.
AKS , Azure'da Kubernetes kümesinin yönetim, dağıtım ve işlemlerini basitleştiren yönetilen bir Kubernetes kapsayıcı düzenleme hizmetidir.
Azure Container Apps
An image of the Azure Container Apps Service logo.
Azure Container Apps , modern uygulamaları büyük ölçekte oluşturmaya ve dağıtmaya yönelik yönetilen sunucusuz bir kapsayıcı hizmetidir.

Microsoft Azure'da kapsayıcı tabanlı düzenleyicileri kullanma

Çeşitli bulut satıcıları Docker kapsayıcı desteğinin yanı sıra Microsoft Azure, Amazon EC2 Container Service ve Google Container Engine gibi Docker kümeleri ve düzenleme desteği sunar. Microsoft Azure, Azure Kubernetes Service (AKS) aracılığıyla Docker kümesi ve düzenleyici desteği sağlar.

Azure Kubernetes Service'i kullanma

Kubernetes kümesi birden çok Docker ana bilgisayarını havuza alır ve bunları tek bir sanal Docker konağı olarak kullanıma sunar; böylece kümeye birden çok kapsayıcı dağıtabilir ve istediğiniz sayıda kapsayıcı örneğiyle ölçeği genişletebilirsiniz. Küme ölçeklenebilirlik, sistem durumu vb. gibi tüm karmaşık yönetim altyapılarını işler.

AKS, Azure'da kapsayıcılı uygulamaları çalıştırmak için önceden yapılandırılmış bir sanal makine kümesinin oluşturulmasını, yapılandırılmasını ve yönetimini basitleştirmenin bir yolunu sağlar. Popüler açık kaynak zamanlama ve düzenleme araçlarının iyileştirilmiş bir yapılandırmasını kullanan AKS, mevcut becerilerinizi kullanmanıza veya Microsoft Azure'da kapsayıcı tabanlı uygulamalar dağıtmak ve yönetmek için topluluk uzmanlığının büyük ve büyüyen bir gövdesini temel almanızı sağlar.

Azure Kubernetes Service, özellikle Azure için popüler Docker kümeleme açık kaynak araçlarının ve teknolojilerinin yapılandırmasını iyileştirir. Hem kapsayıcılarınız hem de uygulama yapılandırmanız için taşınabilirlik sunan bir açık çözüm elde edersiniz. Boyutu, konak sayısını ve düzenleyici araçlarını seçersiniz ve AKS diğer her şeyi işler.

Diagram showing a Kubernetes cluster structure.

Şekil 4-24. Kubernetes kümesinin basitleştirilmiş yapısı ve topolojisi

Şekil 4-24'te, bir ana düğümün (VM) kümenin koordinasyonunun çoğunu denetlediği bir Kubernetes kümesinin yapısını görebilir ve kapsayıcıları, uygulama açısından tek bir havuz olarak yönetilen ve binlerce, hatta on binlerce kapsayıcıya ölçeklendirmenize olanak tanıyan düğümlerin geri kalanına dağıtabilirsiniz.

Kubernetes için geliştirme ortamı

Geliştirme ortamında Docker, Temmuz 2018'de Kubernetes'in Docker Desktop'ı yükleyerek tek bir geliştirme makinesinde (Windows 10 veya macOS) da çalışabileceğini duyurdu. Daha sonra, şekil 4-25'te gösterildiği gibi daha fazla tümleştirme testi için buluta (AKS) dağıtabilirsiniz.

Diagram showing Kubernetes on a dev machine then deployed to AKS

Şekil 4-25. Geliştirme makinesinde ve bulutta Kubernetes çalıştırma

Azure Kubernetes Service'i (AKS) kullanmaya başlama

AKS'yi kullanmaya başlamak için Azure portalından veya CLI kullanarak bir AKS kümesi dağıtırsınız. Azure'da Kubernetes kümesi dağıtma hakkında daha fazla bilgi için bkz . Azure Kubernetes Service (AKS) kümesi dağıtma.

AKS'nin bir parçası olarak varsayılan olarak yüklenen yazılımlardan herhangi biri için ücret alınmaz. Tüm varsayılan seçenekler açık kaynak yazılımla uygulanır. AKS, Azure'da birden çok sanal makine için kullanılabilir. Yalnızca seçtiğiniz işlem örnekleri ve depolama ve ağ gibi kullanılan diğer temel altyapı kaynakları için ücretlendirilirsiniz. AKS'nin kendisi için artımlı ücret yoktur.

Kubernetes için varsayılan üretim dağıtım seçeneği, sonraki bölümde tanıtılan Helm grafiklerini kullanmaktır.

Helm grafikleri ile Kubernetes kümelerine dağıtma

Bir uygulamayı Kubernetes kümesine dağıtırken, önceki bölümde daha önce belirtildiği gibi yerel biçime (.yaml dosyaları) dayalı dağıtım dosyalarını kullanarak özgün kubectl.exe CLI aracını kullanabilirsiniz. Ancak, karmaşık mikro hizmet tabanlı uygulamalar dağıtılırken olduğu gibi daha karmaşık Kubernetes uygulamaları için Helm kullanılması önerilir.

Helm Charts, en karmaşık Kubernetes uygulamasını bile tanımlamanıza, sürüm oluşturmanıza, yüklemenize, paylaşmanıza, yükseltmenize veya geri almanıza yardımcı olur.

Ayrıca, Azure Dev Spaces gibi Azure'daki diğer Kubernetes ortamları da Helm grafiklerini temel alındığından Helm kullanımı da önerilir.

Helm, Microsoft, Google, Bitnami ve Helm katkıda bulunan topluluğuyla işbirliği yaparak Cloud Native Computing Foundation (CNCF) tarafından yönetilir.

Helm grafikleri ve Kubernetes hakkında daha fazla uygulama bilgisi için bkz. Aks gönderisine eShopOnContainers dağıtmak için Helm Grafiklerini Kullanma.

Ek kaynaklar