Dela via


Samordna mikrotjänster och program med flera containrar för hög skalbarhet och tillgänglighet

Dricks

Det här innehållet är ett utdrag från eBook, .NET Microservices Architecture for Containerized .NET Applications, tillgängligt på .NET Docs eller som en kostnadsfri nedladdningsbar PDF som kan läsas offline.

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

Det är viktigt att använda orkestrerare för produktionsklara program om programmet baseras på mikrotjänster eller helt enkelt delas upp i flera containrar. Som tidigare introducerades, i en mikrotjänstbaserad metod, äger varje mikrotjänst sin modell och sina data så att den blir självständig ur utvecklings- och distributionssynpunkt. Men även om du har ett mer traditionellt program som består av flera tjänster (till exempel SOA) har du också flera containrar eller tjänster som består av ett enda affärsprogram som måste distribueras som ett distribuerat system. Den här typen av system är komplexa att skala ut och hantera. Därför behöver du absolut en orkestrerare om du vill ha ett produktionsklart och skalbart program med flera containrar.

Bild 4–23 illustrerar distributionen till ett kluster av ett program som består av flera mikrotjänster (containrar).

Diagram showing Composed Docker applications in a cluster.

Bild 4-23. Ett kluster med containrar

Du använder en container för varje tjänstinstans. Docker-containrar är "distributionsenheter" och en container är en instans av en Docker-avbildning. En värd hanterar många containrar. Det ser ut som en logisk metod. Men hur hanterar du belastningsutjämning, routning och orkestrering av dessa sammansatta program?

Den vanliga Docker-motorn i enskilda Docker-värdar uppfyller behovet av att hantera enskilda avbildningsinstanser på en värd, men den misslyckas när det gäller att hantera flera containrar som distribueras på flera värdar för mer komplexa distribuerade program. I de flesta fall behöver du en hanteringsplattform som automatiskt startar containrar, skalar ut containrar med flera instanser per bild, pausar dem eller stänger av dem när det behövs och helst även styr hur de får åtkomst till resurser som nätverket och datalagringen.

Om du vill gå utöver hanteringen av enskilda containrar eller enkla sammansatta appar och gå mot större företagsprogram med mikrotjänster måste du övergå till orkestrerings- och klustringsplattformar.

Ur arkitektur- och utvecklingssynpunkt är det viktigt att förstå följande plattformar och produkter som stöder avancerade scenarier om du skapar stora företag som består av mikrotjänstbaserade program:

Kluster och orkestrerare. När du behöver skala ut program över många Docker-värdar, som när ett stort mikrotjänstbaserat program, är det viktigt att kunna hantera alla dessa värdar som ett enda kluster genom att abstrahera komplexiteten i den underliggande plattformen. Det är vad containerkluster och orkestratorer tillhandahåller. Kubernetes är ett exempel på en orkestrerare och är tillgängligt i Azure via Azure Kubernetes Service.

Schemaläggare.Schemaläggning innebär att en administratör kan starta containrar i ett kluster så att de även tillhandahåller ett användargränssnitt. En klusterschemaläggare har flera ansvarsområden: att använda klustrets resurser effektivt, att ange de begränsningar som användaren har, att effektivt belastningsutjämna containrar mellan noder eller värdar och att vara robust mot fel samtidigt som hög tillgänglighet.

Begreppen för ett kluster och en schemaläggare är nära relaterade, så de produkter som tillhandahålls av olika leverantörer ger ofta båda uppsättningarna funktioner. Följande lista visar de viktigaste plattforms- och programvaruvalen du har för kluster och schemaläggare. Dessa orkestratorer erbjuds vanligtvis i offentliga moln som Azure.

Programvaruplattformar för containerkluster, orkestrering och schemaläggning

Plattform beskrivning
Kubernetes
An image of the Kubernetes logo.
Kubernetes är en produkt med öppen källkod som tillhandahåller funktioner som sträcker sig från klusterinfrastruktur och containerschemaläggning till orkestreringsfunktioner. Med den kan du automatisera distribution, skalning och drift av programcontainrar i värdkluster.

Kubernetes tillhandahåller en containercentrerad infrastruktur som grupperar programcontainrar i logiska enheter för enkel hantering och identifiering.

Kubernetes är moget i Linux, mindre moget i Windows.
Azure Kubernetes Service (AKS)
An image of the Azure Kubernetes Service logo.
AKS är en hanterad Kubernetes-containerorkestreringstjänst i Azure som förenklar Kubernetes-klustrets hantering, distribution och åtgärder.
Azure Container Apps
An image of the Azure Container Apps Service logo.
Azure Container Apps är en hanterad serverlös containertjänst för att skapa och distribuera moderna appar i stor skala.

Använda containerbaserade orkestrerare i Microsoft Azure

Flera molnleverantörer erbjuder Stöd för Docker-containrar plus Stöd för Docker-kluster och orkestrering, inklusive Microsoft Azure, Amazon EC2 Container Service och Google Container Engine. Microsoft Azure tillhandahåller Stöd för Docker-kluster och orchestrator via Azure Kubernetes Service (AKS).

Använda Azure Kubernetes Service

Ett Kubernetes-kluster poolar flera Docker-värdar och exponerar dem som en enda virtuell Docker-värd, så att du kan distribuera flera containrar till klustret och skala ut med valfritt antal containerinstanser. Klustret hanterar alla komplexa hanteringsrör, till exempel skalbarhet, hälsa och så vidare.

AKS är ett sätt att förenkla skapandet, konfigurationen och hanteringen av ett kluster med virtuella datorer i Azure som är förkonfigurerade för att köra containerbaserade program. Med hjälp av en optimerad konfiguration av populära verktyg för schemaläggning och orkestrering med öppen källkod kan du med AKS använda dina befintliga kunskaper eller använda en stor och växande mängd community-expertis för att distribuera och hantera containerbaserade program i Microsoft Azure.

Azure Kubernetes Service optimerar konfigurationen av populära Docker-klusterverktyg och tekniker med öppen källkod som är specifikt för Azure. Du får en öppen lösning som erbjuder portabilitet för både dina containrar och din programkonfiguration. Du väljer storlek, antal värdar och orkestreringsverktyg och AKS hanterar allt annat.

Diagram showing a Kubernetes cluster structure.

Bild 4-24. Kubernetes-klustrets förenklade struktur och topologi

I bild 4–24 kan du se strukturen för ett Kubernetes-kluster där en huvudnod (VM) styr det mesta av samordningen av klustret och du kan distribuera containrar till resten av noderna, som hanteras som en enda pool ur programsynpunkt och gör att du kan skala till tusentals eller till och med tiotusentals containrar.

Utvecklingsmiljö för Kubernetes

I utvecklingsmiljön meddelade Docker i juli 2018 att Kubernetes också kan köras på en enda utvecklingsdator (Windows 10 eller macOS) genom att installera Docker Desktop. Du kan senare distribuera till molnet (AKS) för ytterligare integreringstester, enligt bild 4–25.

Diagram showing Kubernetes on a dev machine then deployed to AKS

Bild 4-25. Köra Kubernetes i utvecklingsdatorn och molnet

Komma igång med Azure Kubernetes Service (AKS)

Om du vill börja använda AKS distribuerar du ett AKS-kluster från Azure-portalen eller med hjälp av CLI. Mer information om hur du distribuerar ett Kubernetes-kluster i Azure finns i Distribuera ett AKS-kluster (Azure Kubernetes Service).

Det finns inga avgifter för någon av de program som installeras som standard som en del av AKS. Alla standardalternativ implementeras med programvara med öppen källkod. AKS är tillgängligt för flera virtuella datorer i Azure. Du debiteras endast för de beräkningsinstanser du väljer och de andra underliggande infrastrukturresurserna som förbrukas, till exempel lagring och nätverk. Det finns inga inkrementella avgifter för själva AKS.

Standardalternativet för produktionsdistribution för Kubernetes är att använda Helm-diagram, som introduceras i nästa avsnitt.

Distribuera med Helm-diagram till Kubernetes-kluster

När du distribuerar ett program till ett Kubernetes-kluster kan du använda det ursprungliga cli-verktyget kubectl.exe med hjälp av distributionsfiler baserat på det interna formatet (.yaml-filer), som du redan nämnde i föregående avsnitt. För mer komplexa Kubernetes-program, till exempel när du distribuerar komplexa mikrotjänstbaserade program, rekommenderar vi dock att du använder Helm.

Helm Charts hjälper dig att definiera, version, installera, dela, uppgradera eller återställa även det mest komplexa Kubernetes-programmet.

Om du går vidare rekommenderas Helm-användning också eftersom andra Kubernetes-miljöer i Azure, till exempel Azure Dev Spaces , också baseras på Helm-diagram.

Helm underhålls av Cloud Native Computing Foundation (CNCF) – i samarbete med Microsoft, Google, Bitnami och Helm-deltagarcommunityn.

Mer implementeringsinformation om Helm-diagram och Kubernetes finns i Använda Helm-diagram för att distribuera eShopOnContainers till AKS-inlägg .

Ytterligare resurser