Organizowanie aplikacji mikrousług i aplikacji z wieloma kontenerami w celu zapewnienia wysokiej skalowalności i dostępności
Napiwek
Ta zawartość jest fragmentem książki eBook, architektury mikrousług platformy .NET dla konteneryzowanych aplikacji platformy .NET dostępnych na platformie .NET Docs lub jako bezpłatnego pliku PDF, który można odczytać w trybie offline.
Korzystanie z orkiestratorów dla aplikacji gotowych do produkcji jest niezbędne, jeśli aplikacja jest oparta na mikrousługach lub po prostu podzielona na wiele kontenerów. Jak wspomniano wcześniej, w podejściu opartym na mikrousługach każda mikrousługa jest właścicielem modelu i danych, aby była autonomiczna z punktu widzenia programowania i wdrażania. Ale nawet jeśli masz bardziej tradycyjną aplikację składającą się z wielu usług (takich jak SOA), będziesz mieć również wiele kontenerów lub usług obejmujących jedną aplikację biznesową, która musi zostać wdrożona jako system rozproszony. Tego rodzaju systemy są złożone do skalowania w poziomie i zarządzania; W związku z tym absolutnie potrzebujesz orkiestratora, jeśli chcesz mieć aplikację z obsługą środowiska produkcyjnego i skalowalną aplikację z wieloma kontenerami.
Rysunek 4–23 ilustruje wdrożenie w klastrze aplikacji składającej się z wielu mikrousług (kontenerów).
Rysunek 4–23. Klaster kontenerów
Dla każdego wystąpienia usługi należy użyć jednego kontenera. Kontenery platformy Docker to "jednostki wdrożenia", a kontener jest wystąpieniem obrazu platformy Docker. Host obsługuje wiele kontenerów. Wygląda na to, że podejście logiczne. Ale jak obsługujesz równoważenie obciążenia, routing i organizowanie tych złożonych aplikacji?
Zwykły aparat platformy Docker na jednym hoście platformy Docker spełnia potrzeby zarządzania wystąpieniami pojedynczego obrazu na jednym hoście, ale w przypadku zarządzania wieloma kontenerami wdrożonym na wielu hostach w przypadku bardziej złożonych aplikacji rozproszonych brakuje. W większości przypadków potrzebna jest platforma zarządzania, która automatycznie uruchamia kontenery, skaluje kontenery z wieloma wystąpieniami na obraz, zawiesza je lub wyłącza w razie potrzeby, a najlepiej także kontrolować sposób uzyskiwania dostępu do zasobów, takich jak sieć i magazyn danych.
Aby wykraczać poza zarządzanie poszczególnymi kontenerami lub prostymi złożonymi aplikacjami i przejść do większych aplikacji dla przedsiębiorstw z mikrousługami, musisz zwrócić się do platform aranżacji i klastrowania.
Z punktu widzenia architektury i programowania, jeśli tworzysz duże przedsiębiorstwo składające się z aplikacji opartych na mikrousługach, ważne jest, aby zrozumieć następujące platformy i produkty, które obsługują zaawansowane scenariusze:
Klastry i orkiestratory. W przypadku konieczności skalowania aplikacji w poziomie na wielu hostach platformy Docker, tak jak w przypadku dużej aplikacji opartej na mikrousługach, kluczowe znaczenie ma możliwość zarządzania wszystkimi hostami jako pojedynczym klastrem przez abstrakcję złożoności podstawowej platformy. To właśnie zapewniają klastry kontenerów i orkiestratory. Platforma Kubernetes jest przykładem orkiestratora i jest dostępna na platformie Azure za pośrednictwem usługi Azure Kubernetes Service.
Pracownikom. Planowanie oznacza, że administrator może uruchamiać kontenery w klastrze, dzięki czemu udostępnia również interfejs użytkownika. Harmonogram klastra ma kilka obowiązków: efektywnie używać zasobów klastra, ustawiać ograniczenia udostępniane przez użytkownika, efektywnie równoważyć obciążenia kontenerów między węzłami lub hostami i być niezawodne w przypadku błędów, zapewniając wysoką dostępność.
Koncepcje klastra i harmonogramu są ściśle powiązane, dlatego produkty dostarczane przez różnych dostawców często zapewniają oba zestawy możliwości. Na poniższej liście przedstawiono najważniejsze opcje platformy i oprogramowania dla klastrów i harmonogramów. Te orkiestratory są zwykle oferowane w chmurach publicznych, takich jak platforma Azure.
Platformy oprogramowania do klastrowania kontenerów, aranżacji i planowania
Platforma | opis |
---|---|
Kubernetes |
Kubernetes to produkt typu open source, który zapewnia funkcje obejmujące infrastrukturę klastra i planowanie kontenerów po organizowanie możliwości. Umożliwia ona automatyzację wdrażania, skalowania i operacji kontenerów aplikacji w klastrach hostów. Platforma Kubernetes udostępnia infrastrukturę skoncentrowaną na kontenerach, która grupuje kontenery aplikacji w jednostki logiczne w celu łatwego zarządzania i odnajdywania. Platforma Kubernetes jest dojrzała w systemie Linux, mniej dojrzała w systemie Windows. |
Azure Kubernetes Service (AKS) |
Usługa AKS to zarządzana usługa orkiestracji kontenerów Kubernetes na platformie Azure, która upraszcza zarządzanie, wdrażanie i operacje klastra Kubernetes. |
Azure Container Apps |
Azure Container Apps to zarządzana bezserwerowa usługa kontenera służąca do tworzenia i wdrażania nowoczesnych aplikacji na dużą skalę. |
Używanie orkiestratorów opartych na kontenerach na platformie Microsoft Azure
Kilku dostawców usług w chmurze oferuje obsługę kontenerów platformy Docker oraz obsługę klastrów platformy Docker i orkiestracji, w tym platformy Microsoft Azure, amazon EC2 Container Service i aparatu Google Container Engine. Platforma Microsoft Azure zapewnia obsługę klastra platformy Docker i orkiestratora za pośrednictwem usługi Azure Kubernetes Service (AKS).
Korzystanie z usługi Azure Kubernetes Service
Klaster Kubernetes pule wielu hostów platformy Docker i uwidacznia je jako jeden wirtualny host platformy Docker, dzięki czemu można wdrożyć wiele kontenerów w klastrze i skalować w poziomie przy użyciu dowolnej liczby wystąpień kontenera. Klaster będzie obsługiwał całą złożoną instalację wodną zarządzania, na przykład skalowalność, kondycję i tak dalej.
Usługa AKS umożliwia uproszczenie tworzenia, konfigurowania i zarządzania klastrem maszyn wirtualnych na platformie Azure, które są wstępnie skonfigurowane do uruchamiania konteneryzowanych aplikacji. Korzystając ze zoptymalizowanej konfiguracji popularnych narzędzi do planowania i aranżacji typu open source, usługa AKS umożliwia korzystanie z istniejących umiejętności lub czerpanie z dużej i rosnącej wiedzy społeczności w celu wdrażania aplikacji opartych na kontenerach i zarządzania nimi na platformie Microsoft Azure.
Usługa Azure Kubernetes Service optymalizuje konfigurację popularnych narzędzi i technologii typu open source klastrowania platformy Docker przeznaczonych specjalnie dla platformy Azure. Uzyskujesz otwarte rozwiązanie zapewniające przenośność kontenerów i konfiguracji aplikacji. Wybierasz rozmiar, liczbę hostów i narzędzia orkiestratora, a usługa AKS obsługuje wszystkie inne elementy.
Rysunek 4–24. Uproszczona struktura i topologia klastra Kubernetes
Na rysunku 4–24 można zobaczyć strukturę klastra Kubernetes, w którym węzeł główny (VM) kontroluje większość koordynacji klastra i można wdrożyć kontenery w pozostałej części węzłów, które są zarządzane jako pojedyncza pula z punktu widzenia aplikacji i umożliwiają skalowanie do tysięcy lub nawet dziesiątek tysięcy kontenerów.
Środowisko programistyczne dla platformy Kubernetes
W środowisku deweloperskim platforma Docker ogłosiła w lipcu 2018 r., że platforma Kubernetes może również działać na jednej maszynie deweloperów (Windows 10 lub macOS), instalując program Docker Desktop. Później można wdrożyć w chmurze (AKS) w celu przeprowadzenia dalszych testów integracji, jak pokazano na rysunku 4–25.
Rysunek 4–25. Uruchamianie rozwiązania Kubernetes na maszynie deweloperów i w chmurze
Wprowadzenie do usługi Azure Kubernetes Service (AKS)
Aby rozpocząć korzystanie z usługi AKS, należy wdrożyć klaster usługi AKS z witryny Azure Portal lub przy użyciu interfejsu wiersza polecenia. Aby uzyskać więcej informacji na temat wdrażania klastra Kubernetes na platformie Azure, zobacz Wdrażanie klastra usługi Azure Kubernetes Service (AKS).
W ramach usługi AKS nie są naliczane żadne opłaty za oprogramowanie zainstalowane domyślnie. Wszystkie opcje domyślne są implementowane za pomocą oprogramowania open source. Usługa AKS jest dostępna dla wielu maszyn wirtualnych na platformie Azure. Opłaty są naliczane tylko za wybrane wystąpienia obliczeniowe, a pozostałe używane zasoby infrastruktury, takie jak magazyn i sieć. Za usługę AKS nie są naliczane opłaty przyrostowe.
Domyślną opcją wdrożenia produkcyjnego dla platformy Kubernetes jest użycie wykresów helm, które zostały wprowadzone w następnej sekcji.
Wdrażanie przy użyciu pakietów Helm w klastrach Kubernetes
Podczas wdrażania aplikacji w klastrze Kubernetes można użyć oryginalnego narzędzia interfejsu wiersza polecenia kubectl.exe przy użyciu plików wdrażania opartych na formacie natywnym (plikach yaml), jak wspomniano już w poprzedniej sekcji. Jednak w przypadku bardziej złożonych aplikacji Kubernetes, takich jak podczas wdrażania złożonych aplikacji opartych na mikrousługach, zaleca się użycie narzędzia Helm.
Wykresy helm ułatwiają definiowanie, instalowanie, udostępnianie, uaktualnianie lub wycofywanie nawet najbardziej złożonej aplikacji Kubernetes.
Dalsze użycie programu Helm jest również zalecane, ponieważ inne środowiska Kubernetes na platformie Azure, takie jak Azure Dev Spaces , są również oparte na wykresach programu Helm.
Program Helm jest obsługiwany przez Cloud Native Computing Foundation (CNCF) — we współpracy z firmą Microsoft, Google, Bitnami i społecznością współautorów programu Helm.
Aby uzyskać więcej informacji na temat implementacji pakietów Helm i platformy Kubernetes, zobacz wpis Using Helm Charts to deploy eShopOnContainers to AKS post (Wdrażanie pakietów eShopOnContainers w usłudze AKS ).
Dodatkowe zasoby
Wprowadzenie do usługi Azure Kubernetes Service (AKS)
https://learn.microsoft.com/azure/aks/kubernetes-walkthrough-portalAzure Dev Spaces
https://learn.microsoft.com/azure/dev-spaces/azure-dev-spacesKubernetes Oficjalna witryna.
https://kubernetes.io/