Docker kann auf den am häufigsten verwendeten Betriebssystemplattformen installiert werden. CoreOS hat Docker vorinstalliert und wurde speziell für die Ausführung von Docker-Containern entwickelt. Docker für AWS bietet einen sofort einsatzbereiten Docker-Schwarmmodus, in dem ein als Schwarm bezeichneter Knotencluster eine verteilte Plattform zum Ausführen von Docker-Containeranwendungen bereitstellt.
Problem: Alle oben genannten Docker-Plattformen sind nur unterschiedliche Arten von Docker-Installationen und erfordern, dass Docker-Container auf der Befehlszeile ausgeführt und verwaltet werden.
Lösung: Amazon ECS (Elastic Container Service ) ist ein verwalteter Dienst für Docker-Container mit integrierter Unterstützung für Skalierung, Lastenausgleich, Netzwerk, Speicherung, Protokollierung und andere Verwaltungsaufgaben für Docker-Container. Amazon ECS unterstützt zwei Starttypen:EC2 und Fargate.
Mit dem EC2-Starttyp werden EC2-Instances gestartet, um Docker-Container auszuführen. Der kürzlich (November 2017) eingeführte Starttyp Fargate hostet Tasks, die Docker-Container kapseln. Die Aufgaben werden dem Benutzer über ein Elastic Network Interface direkt zugänglich gemacht (ENI ). Die EC2-Instanzen, auf denen Fargate bereitgestellt wird, werden dem Benutzer nicht angezeigt und sind nicht direkt zugänglich.
In diesem Kapitel lernen wir Folgendes:Was Amazon Fargate ist
- Vorteile von Fargate Amazon ECS-Objekten
- Compute-Ressourcen in Amazon ECS Fargate
- Was ist neu im Startmodus von Amazon Fargate?
Was Amazon Fargate ist
Amazon Fargate ist ein neuer Starttyp für Amazon ECS und Amazon EKS (Elastic Kubernetes-Dienst )-verwaltete Orchestrierungsdienste für Docker-Container auf AWS. Beim Starttyp Fargate wird die Infrastruktur vollständig von Fargate bereitgestellt. Es ist serverlos und dem Benutzer werden keine EC2-Instances angezeigt. Docker-Container werden als Containerdefinitionen innerhalb einer Aufgabendefinition definiert. Ein Dienst implementiert die Aufgabendefinition, um eine oder mehrere Aufgaben auszuführen. Jeder Aufgabe ist eine ENI zugeordnet. Wenn die automatische Zuweisung der öffentlichen IP auf Aufgabenebene aktiviert ist, wird einer Aufgabe automatisch eine öffentliche IP zugewiesen, auf der ein externer Client auf eine Aufgabe zugreifen kann. Tasks kommunizieren miteinander über eine private IP.
Vorteile von Fargate
Die Vorteile in ECS sind wie folgt:
- Ein verwalteter Dienst für containerisierte Anwendungen, der nicht viel Benutzereingabe erfordert, um Docker-Anwendungen auszuführen
- Microservices, die aus mehreren Anwendungen bestehen, die in isolierten Containern ausgeführt werden. Automatische Skalierung von Aufgaben basierend auf der Anwendungslast
- Integration mit anderen AWS-Services, einschließlich IAM, CloudWatch Logs, Elastic Load Balancing, CloudFormation-Vorlagen, EBS-Volumes, Batch-, ECR- und CloudTrail-Protokollen
- Eine virtuelle private Cloud (VPC ) ohne Ressourcen, die mit anderen Benutzern geteilt werden. Bietet Unterstützung für die Ausführung einer CodePipeline mit ECS als Bereitstellungsplattform
- Unterstützt die neueste Docker-Version 17.0
Fargate bietet die folgenden zusätzlichen Vorteile:
- Bei einem Fargate-Starttyp erstellt oder verwaltet ein Benutzer keine EC2-Instances, da keine im Cluster verfügbar gemacht werden.
- Aufgaben werden dem Benutzer direkt über eine ENI angezeigt.
- Die zugrunde liegende Infrastruktur wird von Fargate bereitgestellt. EC2-Instances dürfen nicht mit dem Fargate-Starttyp verwaltet werden.
- CodePipeline unterstützt Fargate als Bereitstellungsplattform.
- Microservices, die auf Containerdefinitionen basieren, die in einer Aufgabendefinition gekapselt sind, werden explizit verlinkt und dürfen nicht mit zusätzlichen Optionen wie Links verlinkt werden.
- CloudWatch Logs werden möglicherweise automatisch konfiguriert.
Amazon ECS-Objekte
Amazon ECS-Objekte mit Fargate sind die gleichen wie für den EC2-Starttyp. Ein ECS-Cluster ist die äußerste Kapselung und besteht aus einem oder mehreren Services. Ein Cluster kann über mehrere Verfügbarkeitszonen verteilt werden. Ein Dienst ist eine Implementierung einer Aufgabendefinition und führt eine oder mehrere Aufgaben aus. Eine Aufgabendefinition kann eine oder mehrere Aufgabenrevisionen haben. Eine Aufgabenrevision ist eine eindeutige Aufgabendefinition mit einer Reihe von Aufgaben und einem damit verbundenen Dienst. Eine Fargate-Instanz ist mit einer Reihe von Aufgaben in einem Dienst verknüpft. Eine Aufgabendefinition besteht aus null oder mehr Containerdefinitionen. Typischerweise würde eine Aufgabendefinition einer oder mehreren Containerdefinitionen zugeordnet, und eine Aufgabendefinition, die aus keiner Containerdefinition besteht, würde keine Aufgabencontainer ausführen. Ein Diagramm von ECS-Objekten wird wie folgt angezeigt:
Eine Aufgabendefinition ist eine Anwendungsvorlage und beschreibt einen oder mehrere Container. Während einige Attribute oder Einstellungen auf Aufgabenebene konfiguriert werden, werden die meisten auf Containerebene konfiguriert. Einer Aufgabendefinition können mehrere Revisionen zugeordnet werden.
Ein Dienst implementiert eine Aufgabendefinition und definiert eine gewünschte Anzahl von Aufgaben, die für eine Aufgabendefinition ausgeführt werden sollen. Optionale Funktionen wie Auto Scaling und Load Balancing werden im Dienst konfiguriert.
Ein Cluster in einem ECS-Service ist eine Gruppierung von einem oder mehreren Container-Services. Ein Clustername muss innerhalb eines Kontos eindeutig sein. Standardmäßig wird ein Cluster namens default bereitgestellt.
Compute-Ressourcen in Amazon ECS Fargate
Aufgabengröße besteht aus Aufgabenspeicher (GB) und Aufgaben-CPU (vCPU) . Während es beim EC2-Starttyp optional ist, ist die Aufgabengröße beim Fargate-Starttyp erforderlich. Speicher- und CPU-Einstellungen auf Docker-Container-Ebene können optional definiert werden, werden jedoch durch Einstellungen auf Aufgabendefinitionsebene außer Kraft gesetzt. Es werden nur bestimmte Kombinationen aus Aufgabenspeicher und Aufgaben-CPU unterstützt, und der ECS-Assistent zeigt mit einer Meldung den unterstützten Wert (oder Wertebereich) für einen ausgewählten Wert an. Beispielsweise beträgt der gültige CPU-Bereich für 1 GB Arbeitsspeicher 0,25 vCPU bis 0,5 vCPU. Die auf Containerebene konfigurierten Gesamtressourcen (Arbeitsspeicher oder CPU) dürfen die Ressourceneinstellungen auf Aufgabenebene nicht überschreiten. Wenn beispielsweise eine Aufgabendefinition aus zwei Containern (MySQL und WordPress) mit einem Speicherlimit von 128 MB für jeden Container besteht, muss der Speicher auf Aufgabenebene mindestens 256 MB betragen. Außerdem darf der Gesamtspeicher auf Containerebene 256 MB nicht überschreiten. Ebenso für die CPU. Auf Containerebene können zwei Speichergrenzen definiert werden:Soft limit und Hartes Limit . Das Softlimit entspricht der memoryReservation -Attribut auf Aufgabenebene, und das harte Limit entspricht dem Speicher Attribut auf Aufgabenebene. Die Summe der Containerspeicherreservierungen (Softlimits) darf den Aufgabenspeicher nicht überschreiten. Das harte Limit für jeden Container darf den auf Aufgabenebene konfigurierten Arbeitsspeicher nicht überschreiten. Für einen Container müssen standardmäßig mindestens 4 GB angegeben werden.
Ein Beispiel für die Aufgabengröße ist im folgenden Screenshot dargestellt, in dem der Aufgabenspeicher (Speicher -Attribut) ist auf 0,5 GB festgelegt (512 GB) und die Task-CPU ist auf 0,25 vCPU festgelegt . Auf Containerebene, wie in den beiden Containerdefinitionen konfiguriert, beträgt die Speicherreservierung 128 MB für jeden Container, was eine Gesamtspeicherreservierung von 256 MB ergibt gut innerhalb der 512 GB auf Aufgabenebene zugeordnet. Die Aufgabengröße wird einer Aufgabe zugewiesen, unabhängig davon, ob sie verwendet wird oder nicht. Ebenso die Anzahl der CPU-Einheiten für jeden Container konfiguriert ist 10 , wodurch die Gesamtzahl der CPU-Einheiten 20 für Container innerhalb der CPU-Einheiten beträgt, 25 werden auf der Aufgabenebene zugewiesen. Siehe folgenden Screenshot:
Aufgabengrößenkonfiguration und -zuweisung für Container
Was ist neu im Startmodus von Amazon Fargate?
Zusätzlich zu und gleichzeitig mit den zuvor besprochenen Vorteilen von Fargate unterstützt Fargate die folgenden neuen Funktionen:
- Netzwerkmodus, awsvpc , ist der einzige unterstützte Modus
- Host-Port-Zuordnungen sind mit dem Fargate-Starttyp-Netzwerkmodus (awsvpc ) und Hostports, auf denen eine Anwendung verfügbar gemacht wird, sind dieselben wie die Containerports
- ecsTaskExecutionRole wird für den Fargate-Starttyp hinzugefügt, um das Abrufen von Docker-Images und das Senden von Protokollen an CloudWatch Logs zu ermöglichen
- Nur die awslogs log-Konfiguration und awslogs log-Treiber werden mit CloudWatch Logs unterstützt
- Aufgabenplatzierung wird nicht unterstützt, da keine ECS-Instances bereitgestellt werden, um Platzierungseinschränkungen zu definieren
- Nur Docker-Images auf Docker Hub und Amazon ECR werden unterstützt. Privilegierte Windows-Container werden für den Fargate-Starttyp nicht unterstützt. Hostgeräte können nicht für einen Container bereitgestellt werden
- Der Host und sourcePath Parameter für Volumes werden mit dem Fargate-Starttyp nicht unterstützt
Zusammenfassung
In diesem Einführungskapitel haben wir die Vorteile der Verwendung des Fargate-Starttyps besprochen, wie Rechenressourcen mit dem Fargate-Starttyp verteilt und konfiguriert werden, inwiefern die ECS-Objekte mit Fargate dieselben sind wie beim EC2-Starttyp und welche neuen Funktionen darin enthalten sind Fargate. Im nächsten Kapitel werden wir das Networking erörtern, wie es bei Fargate verwendet wird.
Das vorstehende Material ist ein Auszug aus Amazon Fargate Quick Start Guide , von Deepak Vohra, veröffentlicht von Pact Publishing. |
Dieser Artikel wurde beigesteuert. ©Entwickler.com. Alle Rechte vorbehalten