AWS Fargate ist eine Technologie, die mit Amazon ECS und Amazon EKS verwendet werden kann. Es ermöglicht Ihnen, Container auszuführen, ohne Server oder Cluster von Amazon EC2-Instances zu verwalten.
Fargate macht es überflüssig, Cluster virtueller Maschinen zu konfigurieren, zu skalieren oder bereitzustellen, um Container auszuführen. Es besteht keine Notwendigkeit, Servertypen auszuwählen, die Cluster-Skalierung zu planen oder das Cluster-Packing zu optimieren.
Wir können den Fargate-Starttyp oder einen Fargate-Kapazitätsanbieter verwenden, um Ihre Amazon ECS-Aufgaben und -Dienste auszuführen. Um Fargate zu verwenden, können Sie Ihre Anwendung in Container packen, die Betriebssystem-, CPU- und Arbeitsspeicheranforderungen angeben, Netzwerk- und IAM-Richtlinien konfigurieren und sie starten.
Es ist nicht erforderlich, eine Basis-CPU- und RAM-Kapazität zum Hosten von Containern aufrechtzuerhalten. Wir können AWS mitteilen, wie viel Ressourcen eine Aufgabe benötigt, und den Rest der Aufgabe AWS überlassen. Jede Fargate-Aufgabe hat ihre Isolationsbarriere, sodass sie den zugrunde liegenden Kernel, die CPU, den Speicher oder die elastische Netzwerkschnittstelle nicht mit anderen Aufgaben teilt.
Inhaltsverzeichnis
Wie funktioniert Fargate?
Fargate funktioniert, indem es Ihnen ermöglicht, Container bereitzustellen, ohne die Infrastruktur einzurichten oder zu verwalten, die sie hosten wird. Sie teilen Fargate mit, welche Container-Images Sie ausführen möchten und wie viele CPU- und Speicherressourcen Sie zuweisen möchten. Die Hostserver werden dann automatisch von Fargate bereitgestellt. Wenn Ihre Container laufen, zahlen Sie nur für die genutzten Ressourcen.
Fargate ist eine Serverless-Computing-Engine, da Endbenutzer die Server, auf denen Container gehostet werden, nicht mehr verwalten müssen. Um es klar zu sagen, die Server sind immer noch da; AWS verwaltet sie einfach. Fargate darf nicht mit AWS Lambda verwechselt werden, einem anderen Serverless-Computing-Service, der nicht mit Blick auf Container entwickelt wurde (obwohl Lamba jetzt die Bereitstellung von Container-Images unterstützt).
Wie hilft Fargate?
AWS Fargate berechnet die genaue Menge an Rechenleistung, Arbeitsspeicher und anderen Ressourcen, die für Ihre Aufgaben erforderlich sind, sodass Sie sich keine Gedanken über die Auswahl von Instance-Arten oder die Skalierung der Clusterkapazität machen müssen.
Es ermöglicht Ihnen, für die Ressourcen zu bezahlen, die Sie zum Betreiben Ihrer Container benötigen, während sie verwendet werden, wodurch eine Überbereitstellung vermieden und für Server bezahlt wird, die Sie nicht benötigen.
Fargate-Tasks (Pods) werden in ihren eigenen Kerneln ausgeführt, was zu einer sicheren und isolierten Rechenumgebung mit isolierten Workloads und erhöhter Sicherheit führt.
Es ermöglicht Teams, Apps mit ECS- oder EKS-Containern zu entwerfen und auszuführen, ohne sich mit zeitaufwändigen Infrastrukturverwaltungsaktivitäten wie dem Skalieren und Sichern von Servern oder dem Patchen von Betriebssystemen befassen zu müssen.
Mit integrierten Verbindungen zu anderen AWS-Services wie Amazon CloudWatch Container Insights bietet AWS Fargate ein hohes Maß an Beobachtbarkeit. Sie können auch mehrere Technologien von Drittanbietern verwenden, um Protokolle und Metriken zu sammeln.
Wir können auch die große Bandbreite an AWS-Services effizient nutzen, wenn wir Container mit Fargate verwenden.
Fargate startet und skaliert kontinuierlich Rechenressourcen, um sie an die Anforderungen des Containers anzupassen, um eine Überbereitstellung zu verhindern und sicherzustellen, dass Sie nicht für Ressourcen bezahlen, die Sie nicht nutzen. Sie können auch eine Einsparstrategie berechnen, die Fargate Spot-Option kann Ihnen bis zu 70 % der gewöhnlichen Kosten sparen, aber sie ist nur für unterbrechbare Anwendungen optimal.
Komponenten von Fargate
Cluster
Eine logische Gruppierung von Aufgaben oder Services ist ein Amazon ECS-Cluster. Cluster können verwendet werden, um Ihre Anwendungen zu isolieren. Wenn Sie Fargate zum Ausführen Ihrer Aufgaben verwenden, verwaltet es Ihre Cluster-Ressourcen.
Aufgabendefinitionen
Eine Aufgabendefinition ist eine Textdatei, die mindestens einen Container Ihrer Anwendung beschreibt. Es ist eine JSON-Datei. Es kann verwendet werden, um bis zu zehn Container gleichzeitig zu beschreiben. Die Aufgabendefinition Ihrer Anwendung dient als Blaupause. Es spezifiziert die zahlreichen Parameter Ihrer Anwendung.
Sie können damit beispielsweise Betriebssystemparameter, zu verwendende Container, für Ihre Anwendung zu öffnende Ports und Datenmengen definieren, die mit den Containern in der Aufgabe verwendet werden sollen. Die Anforderungen Ihrer Anwendung bestimmen die jeweiligen Parameter, die für die Aufgabenstellung zur Verfügung stehen.
Aufgaben
Eine Aufgabe ist eine Instanziierung einer Aufgabendefinition auf Clusterebene. Nachdem Sie eine Aufgabendefinition für Ihre Anwendung in Amazon ECS erstellt haben, können Sie die Anzahl der Aufgaben auswählen, die auf Ihrem Cluster ausgeführt werden. Wir können eine Aufgabe als Teil eines Dienstes oder eines separaten Prozesses ausführen.
Dienstleistungen
In einem Amazon ECS-Cluster können Sie einen Amazon ECS-Service nutzen, um die gewünschte Anzahl von Aufgaben gleichzeitig auszuführen und zu warten. Der Amazon ECS-Service-Scheduler führt basierend auf Ihrer Aufgabendefinition eine andere Instance aus, wenn eine Ihrer Aufgaben fehlschlägt oder aus irgendeinem Grund angehalten wird. Es tut dies, um es zu ersetzen und die Anzahl der Aufgaben im Dienst auf dem richtigen Niveau zu halten.
Betriebssystem und CPU-Architektur
Die von Fargate unterstützten Betriebssysteme sind Amazon Linux 2, Windows Server 2019 Full und Windows Server 2019 Core.
ARM und X86_64 sind die beiden Architekturen, die für die Amazon ECS-Aufgabendefinition verfügbar sind. Wenn Sie Windows-Container verwenden, müssen Sie über eine X86_64-CPU-Architektur verfügen. Wenn Sie dagegen Linux-Container verwenden, können Sie die ARM64-Architektur für Ihre ARM-basierten Anwendungen und die X86_64-CPU-Architektur verwenden.
ECS mit EC2-Instanzen vs. ECS mit AWS Fargate
Im EC2-Instance-Modell werden Container auf den EC2-Instances (VMs) des Clusters bereitgestellt. ECS verwaltet sie in Verbindung mit Aufgaben, die Teil der Aufgabendefinition sind.
Vorteile 👍
- Der hier verwendete EC2-Instance-Typ unterliegt vollständig Ihrer Kontrolle.
- Sie können Spot-Instances verwenden, die die Kosten um bis zu 90 % senken.
Nachteile 👎
- Sie müssen sich um Sicherheitspatches und die Netzwerksicherheit der Instanzen kümmern; Außerdem sind Sie für deren Skalierbarkeit im Cluster verantwortlich.
Beim Fargate-Modell müssen Sie sich keine Sorgen mehr um EC2-Instanzen oder -Server machen. Wählen Sie die erforderliche CPU- und Speicherkonfiguration aus, und Fargate stellt Ihre Container bereit.
Vorteile 👍
- Sie müssen keine Server verwalten.
- AWS ist für Verfügbarkeit und Skalierbarkeit verantwortlich, aber es ist immer noch eine gute Praxis, den richtigen Speicher und die richtige CPU auszuwählen; andernfalls besteht die Gefahr, dass unsere Anwendung nicht mehr verfügbar ist.
- Wenn Sie sich für Fargate Spot entscheiden, erhalten Sie bis zu 70 % Rabatt auf den Fargate-Preis.
Nachteile 👎
- ECS mit AWS Fargate unterstützt nur einen Netzwerkmodus – awsvpc-. Infolgedessen schränkt dies Ihre Kontrolle über die Netzwerkschicht ein.
EKS ohne Fargate Vs. EKS mit Fargate
In EKS ohne das Fargate-Modell müssen Sie im Voraus entscheiden, wie groß der Cluster sein soll. Sie können die Knoten später immer noch manuell ändern, aber es ist mühsam im Vergleich zu der Angabe der idealen Größe von Anfang an.
Vorteile 👍
- Dieses Modell gibt Ihnen auf verschiedene Weise mehr Kontrolle, da Sie Konfigurationsvariablen wie HostNetwork und HostPort angeben können.
- Fargate wird nicht in allen Regionen unterstützt, daher ziehen Sie es vor, EKS ohne Fargate zu verwenden, wenn Sie möchten, dass Ihr Container in mehr Regionen verfügbar ist.
Nachteile 👎
- EKS ohne Fargate ist etwas schwierig zu bedienen.
In EKS mit dem Fargate-Modell müssen Sie die Größe von Clustern nicht vorher angeben.
Vorteile 👍
- EKS mit Fargate ist sicherer, da sie in dedizierten virtuellen Maschinen ausgeführt werden. Die Tatsache, dass der privilegierte Modus nicht unterstützt wird, ist eine Art Sicherheitsfunktion.
- Das ist auf Dauer billiger.
Nachteile 👎
- Es gibt Ihnen auf verschiedene Weise weniger Kontrolle
Fazit
Fargate ist ein extrem leistungsfähiges und ausgereiftes Tool. Es spart Ihnen Kosten, Zeit und viel Aufwand, indem es das gesamte Infrastrukturmanagement für Sie übernimmt. Fargate ist besonders vorteilhaft, wenn Container neu für Sie sind und Sie sich einfach darauf konzentrieren möchten, Ihre Anwendung zu erstellen, anstatt sie zu warten.