Przewodnik wprowadzający do AWS Fargate

AWS Fargate to technologia, która może być używana z Amazon ECS i Amazon EKS. Pozwala na uruchamianie kontenerów bez zarządzania serwerami lub klastrami instancji Amazon EC2.

Fargate eliminuje potrzebę konfigurowania, skalowania lub udostępniania klastrów maszyn wirtualnych w celu wykonywania kontenerów. Nie będzie potrzeby wybierania rodzajów serwerów, planowania skalowania klastrów ani optymalizacji pakowania klastrów.

Możemy użyć typu uruchomienia Fargate lub dostawcy pojemności Fargate, aby uruchomić Twoje zadania i usługi Amazon ECS. Aby korzystać z Fargate, możesz spakować swoją aplikację w kontenery, określić wymagania dotyczące systemu operacyjnego, procesora i pamięci, skonfigurować zasady sieciowe i IAM, a następnie ją uruchomić.

Nie ma potrzeby utrzymywania podstawowej pojemności procesora i pamięci RAM do obsługi kontenerów. Możemy powiedzieć AWS, ile zasobów potrzebuje zadanie, a resztę pozostawić AWS. Każde zadanie Fargate ma swoją barierę izolacyjną, więc nie dzieli podstawowego jądra, procesora, pamięci ani elastycznego interfejsu sieciowego z innymi zadaniami.

Jak działa Fargate?

Fargate działa, umożliwiając wdrażanie kontenerów bez konfigurowania lub zarządzania infrastrukturą, która będzie je obsługiwać. Mówisz Fargate, które obrazy kontenerów chcesz uruchomić i ile zasobów procesora i pamięci chcesz przypisać. Serwery hosta są następnie automatycznie udostępniane przez Fargate. Gdy Twoje kontenery są uruchomione, płacisz tylko za wykorzystane zasoby.

Fargate jest bezserwerowym silnikiem obliczeniowym, ponieważ eliminuje potrzebę zarządzania przez użytkowników końcowych serwerami, na których znajdują się kontenery. Żeby było jasne, serwery wciąż tam są; AWS po prostu nimi zarządza. Fargate nie należy mylić z AWS Lambda, kolejną usługą obliczeniową bezserwerową, która nie została stworzona z myślą o kontenerach (chociaż Lamba obsługuje teraz wdrażanie obrazów kontenerów).

Jak Fargate pomaga?

AWS Fargate oblicza dokładną ilość mocy obliczeniowej, pamięci i innych zasobów wymaganych do Twoich zadań, dzięki czemu nie musisz się martwić o wybór rodzaju instancji lub skalowanie pojemności klastra.

Pozwala płacić za zasoby potrzebne do obsługi kontenerów w miarę ich używania, unikając nadmiernej alokacji i płacenia za serwery, których nie potrzebujesz.

Zadania Fargate (pody) są wykonywane we własnych jądrach, co zapewnia bezpieczne i izolowane środowisko obliczeniowe z izolowanymi obciążeniami i zwiększonym bezpieczeństwem.

Umożliwia zespołom projektowanie i uruchamianie aplikacji przy użyciu kontenerów ECS lub EKS bez konieczności wykonywania czasochłonnych czynności związanych z zarządzaniem infrastrukturą, takich jak skalowanie i zabezpieczanie serwerów lub instalowanie poprawek systemów operacyjnych.

Dzięki wbudowanym połączeniom z innymi usługami AWS, takimi jak Amazon CloudWatch Container Insights, AWS Fargate zapewnia wysoki poziom obserwowalności. Możesz również użyć wielu technologii innych firm do zbierania dzienników i metryk.

Możemy również efektywnie wykorzystać szeroką gamę usług AWS, korzystając z kontenerów z Fargate.

Fargate będzie stale uruchamiać i skalować zasoby obliczeniowe, aby dopasować je do wymagań kontenera, zapobiegając nadmiernej alokacji i zapewniając, że nie płacisz za zasoby, których nie używasz. Możesz także obliczyć strategię oszczędności, opcja Fargate Spot może zaoszczędzić do 70% zwykłych kosztów, ale jest optymalna tylko dla aplikacji przerywanych.

Składniki Fargate

Klastry

Logiczną grupą zadań lub usług jest klaster Amazon ECS. Klastry mogą służyć do izolowania aplikacji. Kiedy używasz Fargate do wykonywania swoich zadań, zarządza on zasobami Twojego klastra.

Definicje zadań

Definicja zadania to plik tekstowy opisujący co najmniej jeden z kontenerów aplikacji. To plik JSON. Może być używany do opisania do dziesięciu pojemników na raz. Definicja zadania aplikacji służy jako plan. Określa liczne parametry aplikacji.

Na przykład można go użyć do zdefiniowania parametrów systemu operacyjnego, kontenerów do użycia, portów do otwarcia dla aplikacji i woluminów danych do użycia z kontenerami w zadaniu. Wymagania aplikacji określają poszczególne parametry dostępne dla definicji zadania.

Zadania

Zadanie to wystąpienie definicji zadania na poziomie klastra. Po utworzeniu definicji zadania dla aplikacji w Amazon ECS możesz wybrać liczbę zadań, które będą uruchamiane w Twoim klastrze. Możemy uruchomić zadanie w ramach usługi lub jako odrębny proces.

Usługi

W klastrze Amazon ECS możesz korzystać z usługi Amazon ECS do jednoczesnego uruchamiania i utrzymywania żądanej liczby zadań. Harmonogram usług Amazon ECS uruchamia inną instancję w oparciu o definicję zadania, jeśli którekolwiek z zadań zakończy się niepowodzeniem lub zatrzymaniem z jakiegokolwiek powodu. Robi to, aby go zastąpić i utrzymać liczbę zadań w serwisie na odpowiednim poziomie.

Architektura systemu operacyjnego i procesora

Systemy operacyjne obsługiwane przez Fargate to Amazon Linux 2, Windows Server 2019 Full i Windows Server 2019 core.

ARM i X86_64 to dwie architektury dostępne dla definicji zadań Amazon ECS. Jeśli używasz kontenerów systemu Windows, musisz mieć architekturę procesora X86_64. W przeciwieństwie do tego, jeśli używasz kontenerów systemu Linux, możesz użyć architektury ARM64 dla aplikacji opartych na architekturze ARM i architektury procesora X86_64.

ECS z instancjami EC2 vs. ECS z AWS Fargate

W modelu instancji EC2 kontenery są wdrażane w instancjach EC2 (maszynach wirtualnych) klastra. ECS zarządza nimi w połączeniu z zadaniami, które są częścią definicji zadania.

Plusy

  • Używany tutaj typ instancji EC2 jest całkowicie pod Twoją kontrolą.
  • Możesz użyć instancji spot, które obniżą koszty nawet o 90%.

Wady 👎

  • Musisz zadbać o poprawki bezpieczeństwa i bezpieczeństwo sieciowe instancji; odpowiadasz również za ich skalowalność w klastrze.

W modelu Fargate nie musisz już martwić się o instancje lub serwery EC2. Wybierz wymaganą konfigurację procesora i pamięci, a Fargate wdroży Twoje kontenery.

Plusy

  • Nie musisz zarządzać żadnymi serwerami.
  • AWS odpowiada za dostępność i skalowalność, ale nadal dobrą praktyką jest wybór odpowiedniej pamięci i procesora; w przeciwnym razie nasza aplikacja może być niedostępna.
  • Jeśli zdecydujesz się skorzystać z Fargate Spot, możesz uzyskać do 70% zniżki na cenę Fargate.

Wady 👎

  • ECS z AWS Fargate obsługuje tylko jeden tryb sieciowy -awsvpc-. W rezultacie ogranicza to kontrolę nad warstwą sieciową.

EKS bez Fargate Vs. EKS z Fargate

W EKS bez modelu Fargate musisz z wyprzedzeniem zdecydować, jak duży powinien być klaster. Zawsze możesz później ręcznie zmienić węzły, ale jest to kłopotliwe w porównaniu z określeniem idealnego rozmiaru od samego początku.

Plusy

  • Ten model zapewnia większą kontrolę na różne sposoby, takie jak określanie zmiennych konfiguracyjnych, takich jak HostNetwork i HostPort.
  • Fargate nie jest obsługiwany we wszystkich regionach, więc wolisz używać EKS bez Fargate, jeśli chcesz, aby Twój kontener był dostępny w większej liczbie regionów.

Wady 👎

  • EKS bez Fargate jest trochę trudny w użyciu.

W EKS z modelem Fargate nie musisz wcześniej określać rozmiaru klastrów.

Plusy

  • EKS z Fargate jest bezpieczniejszy, ponieważ działa wewnątrz dedykowanych maszyn wirtualnych. Fakt, że nie obsługuje trybu uprzywilejowanego, jest rodzajem zabezpieczenia.
  • Na dłuższą metę jest tańszy.

Wady 👎

  • Daje ci mniejszą kontrolę na różne sposoby

Wniosek

Fargate to niezwykle potężne i dojrzałe narzędzie. Oszczędza koszty, czas i wysiłek, wykonując za Ciebie całe zarządzanie infrastrukturą. Fargate jest szczególnie przydatny, jeśli jesteś nowy w kontenerach i po prostu chcesz skupić się na tworzeniu aplikacji, a nie na jej utrzymaniu.