Sdílet prostřednictvím


Orchestrace mikroslužeb a vícekontejnerových aplikací pro vysokou škálovatelnost a dostupnost

Tip

Tento obsah je výňatek z eBooku, architektury mikroslužeb .NET pro kontejnerizované aplikace .NET, které jsou k dispozici na .NET Docs nebo jako zdarma ke stažení PDF, které lze číst offline.

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

Použití orchestrátorů pro aplikace připravené pro produkční prostředí je nezbytné, pokud je vaše aplikace založená na mikroslužbách nebo se jednoduše rozdělí mezi více kontejnerů. Jak jsme představili dříve, v přístupu založeném na mikroslužbách každá mikroslužba vlastní svůj model a data, aby byla autonomní z hlediska vývoje a nasazení. I když ale máte tradiční aplikaci, která se skládá z více služeb (například SOA), budete mít také více kontejnerů nebo služeb, které tvoří jednu obchodní aplikaci, která se musí nasadit jako distribuovaný systém. Tyto druhy systémů jsou složité pro horizontální navýšení a správu; proto potřebujete orchestrátor, pokud chcete mít aplikaci připravenou pro produkční prostředí a škálovatelnou vícekontenerovou aplikaci.

Obrázek 4–23 znázorňuje nasazení do clusteru aplikace složené z několika mikroslužeb (kontejnerů).

Diagram showing Composed Docker applications in a cluster.

Obrázek 4–23 Cluster kontejnerů

Pro každou instanci služby použijete jeden kontejner. Kontejnery Dockeru jsou "jednotky nasazení" a kontejner je instance image Dockeru. Hostitel zpracovává mnoho kontejnerů. Vypadá to jako logický přístup. Jak ale zpracováváte vyrovnávání zatížení, směrování a orchestraci těchto složených aplikací?

Prostý modul Dockeru v jednom hostiteli Dockeru splňuje potřeby správy instancí jedné image na jednom hostiteli, ale pokud jde o správu více kontejnerů nasazených na více hostitelích pro složitější distribuované aplikace, spadá do krátkého stavu. Ve většině případů potřebujete platformu pro správu, která automaticky spustí kontejnery, škáluje kontejnery s více instancemi na každou image, v případě potřeby je pozastaví nebo vypne a v ideálním případě také řídí přístup k prostředkům, jako je síť a úložiště dat.

Pokud chcete překročit správu jednotlivých kontejnerů nebo jednoduchých složených aplikací a přejít k větším podnikovým aplikacím s mikroslužbami, musíte se obrátit na orchestrační a clusteringové platformy.

Z hlediska architektury a vývoje je důležité pochopit následující platformy a produkty, které podporují pokročilé scénáře:

Clustery a orchestrátory. Když potřebujete škálovat aplikace napříč mnoha hostiteli Dockeru, jako když je velká aplikace založená na mikroslužbách, je důležité, aby bylo možné spravovat všechny tyto hostitele jako jeden cluster abstrakcí složitosti základní platformy. To jsou clustery kontejnerů a orchestrátory. Kubernetes je příkladem orchestrátoru a je k dispozici v Azure prostřednictvím služby Azure Kubernetes Service.

Plánovače.Plánování znamená, že správce může spouštět kontejnery v clusteru, aby také poskytoval uživatelské rozhraní. Plánovač clusteru má několik zodpovědností: efektivní použití prostředků clusteru k nastavení omezení poskytovaných uživatelem, efektivní vyrovnávání zatížení kontejnerů mezi uzly nebo hostiteli a zajištění vysoké dostupnosti.

Koncepty clusteru a plánovače úzce souvisejí, takže produkty poskytované různými dodavateli často poskytují obě sady funkcí. Následující seznam ukazuje nejdůležitější možnosti platformy a softwaru, které máte pro clustery a plánovače. Tyto orchestrátory jsou obecně nabízeny ve veřejných cloudech, jako je Azure.

Softwarové platformy pro clustering, orchestraci a plánování kontejnerů

Platforma Popis
Kubernetes
An image of the Kubernetes logo.
Kubernetes je opensourcový produkt, který poskytuje funkce, které se liší od infrastruktury clusteru a plánování kontejnerů až po orchestraci funkcí. Umožňuje automatizovat nasazení, škálování a provoz kontejnerů aplikací napříč clustery hostitelů.

Kubernetes poskytuje infrastrukturu zaměřenou na kontejnery, která seskupuje kontejnery aplikací do logických jednotek pro snadnou správu a zjišťování.

Kubernetes je vyspělý v Linuxu, méně vyspělý ve Windows.
Azure Kubernetes Service (AKS)
An image of the Azure Kubernetes Service logo.
AKS je spravovaná služba orchestrace kontejnerů Kubernetes v Azure, která zjednodušuje správu, nasazení a operace clusteru Kubernetes.
Azure Container Apps
An image of the Azure Container Apps Service logo.
Azure Container Apps je spravovaná služba bezserverového kontejneru pro sestavování a nasazování moderních aplikací ve velkém měřítku.

Použití orchestrátorů založených na kontejnerech v Microsoft Azure

Několik dodavatelů cloudu nabízí podporu kontejnerů Dockeru a podporu orchestrace a clusterů Dockeru, včetně Microsoft Azure, Amazon EC2 Container Service a Google Container Engine. Microsoft Azure poskytuje podporu clusteru a orchestrátoru Dockeru prostřednictvím služby Azure Kubernetes Service (AKS).

Použití služby Azure Kubernetes Service

Cluster Kubernetes fonduje několik hostitelů Dockeru a zpřístupňuje je jako jednoho virtuálního hostitele Dockeru, takže můžete do clusteru nasadit více kontejnerů a škálovat na více instancí kontejneru. Cluster bude zpracovávat všechny složité instalace správy, jako je škálovatelnost, stav atd.

AKS poskytuje způsob, jak zjednodušit vytváření, konfiguraci a správu clusteru virtuálních počítačů v Azure, které jsou předem nakonfigurované pro spouštění kontejnerizovaných aplikací. Díky optimalizované konfiguraci oblíbených opensourcových nástrojů pro plánování a orchestraci vám AKS umožňuje využívat stávající dovednosti nebo kreslit na rozsáhlé a rostoucí množství odborných znalostí komunity k nasazování a správě aplikací založených na kontejnerech v Microsoft Azure.

Azure Kubernetes Service optimalizuje konfiguraci oblíbených opensourcových nástrojů a technologií Clusteringu Dockeru speciálně pro Azure. Získáte otevřené řešení, které nabízí přenositelnost pro vaše kontejnery i konfigurace aplikací. Vyberete velikost, počet hostitelů a nástroje orchestrátoru a AKS zpracuje všechno ostatní.

Diagram showing a Kubernetes cluster structure.

Obrázek 4–24 Zjednodušená struktura a topologie clusteru Kubernetes

Na obrázku 4–24 vidíte strukturu clusteru Kubernetes, kde hlavní uzel (VM) řídí většinu koordinace clusteru a můžete nasadit kontejnery do zbývajících uzlů, které se spravují jako jeden fond z hlediska aplikace a umožňují škálování na tisíce nebo dokonce desítky tisíc kontejnerů.

Vývojové prostředí pro Kubernetes

Ve vývojovém prostředí oznámil Docker v červenci 2018, že Kubernetes může běžet také na jednom vývojovém počítači (Windows 10 nebo macOS) instalací Docker Desktopu. Později můžete nasadit do cloudu (AKS) pro další integrační testy, jak je znázorněno na obrázku 4–25.

Diagram showing Kubernetes on a dev machine then deployed to AKS

Obrázek 4–25 Spuštění Kubernetes ve vývojovém počítači a cloudu

Začínáme se službou Azure Kubernetes Service (AKS)

Pokud chcete začít používat AKS, nasadíte cluster AKS z webu Azure Portal nebo pomocí rozhraní příkazového řádku. Další informace o nasazení clusteru Kubernetes v Azure najdete v tématu Nasazení clusteru Azure Kubernetes Service (AKS).

V rámci AKS nejsou žádné poplatky za žádný software nainstalovaný ve výchozím nastavení. Všechny výchozí možnosti se implementují s opensourcovým softwarem. AKS je k dispozici pro několik virtuálních počítačů v Azure. Poplatky se účtují jenom za zvolené výpočetní instance a ostatní spotřebované základní prostředky infrastruktury, jako jsou úložiště a sítě. Za AKS se neúčtují žádné přírůstkové poplatky.

Výchozí možností produkčního nasazení pro Kubernetes je použití chartů Helm, které jsou představeny v další části.

Nasazení s grafy Helm do clusterů Kubernetes

Při nasazování aplikace do clusteru Kubernetes můžete použít původní nástroj rozhraní příkazového řádku kubectl.exe pomocí souborů nasazení založených na nativním formátu (soubory .yaml), jak už bylo zmíněno v předchozí části. Pro složitější aplikace Kubernetes, například při nasazování složitých aplikací založených na mikroslužbách, se ale doporučuje použít Helm.

Helm Charts vám pomůže definovat, verzi, nainstalovat, sdílet, upgradovat nebo vrátit zpět i nejsložitější aplikaci Kubernetes.

Další využití Helmu se také doporučuje, protože další prostředí Kubernetes v Azure, jako je Azure Dev Spaces , jsou také založená na grafech Helm.

Helm je spravován platformou CNCF (Cloud Native Computing Foundation) ve spolupráci s komunitou Microsoftu, Googlu, Bitnami a přispěvatele Helmu.

Další informace o implementaci grafů Helm a Kubernetes najdete v článku Použití chartů Helm k nasazení eShopOnContainers do příspěvku AKS .

Další materiály