Menü

AWS, ECS im Detail: Architektur und Bereitstellungsoptionen

: Was ist AWS ECS?

Inhalt

Diese Seite teilen

Yifat Perry
Yifat Perry

Was ist AWS ECS?

Amazon Elastic Container Service (ECS) ist ein cloudbasierter, vollständig verwalteter Container-Orchestrierungs-Dienst. Er ermöglicht es Ihnen, Anwendungen in der Cloud auszuführen, ohne die zugrundeliegende Infrastruktur konfigurieren und warten zu müssen.

Um sicherzustellen, dass Kapazitätsanforderungen optimal erfüllt werden und eine Spitzenleistung aufrechterhalten bleibt, können Sie ECS so einstellen, dass Speicher- und CPU-Prozesse kontinuierlich überwacht und ausgewertet werden. Diese Daten helfen Ihnen, eine optimale Bereitstellungsstrategie für jeden Container zu bestimmen. Außerdem können Sie ECS nutzen, um Container zu skalieren und Aktualisierungen nach Bedarf einzuspielen.

ECS unterstützt die Integration mit mehreren nützlichen AWS-Diensten und -Funktionen, darunter Identity and Access Management (AWS IAM)-Rollen, Elastic Block Store (AWS EBS)-Volumes und AWS Elastic Load Balancing (AWS ELB).

Dies ist Teil unserer Artikelreihe über Kubernetes auf AWS.

In diesem Artikel erfahren Sie:

  • Vorteile und Anwendungsfälle von ECS
  • Amazon ECS Architektur
  • Container und Images
  • AWS ECS Task Definitions
  • AWS ECS Tasks und Scheduling
  • AWS ECS Cluster
  • Container Agent
  • AWS ECS-Bereitstellungsoptionen: EC2 vs. Fargate
  • AWS ECS Q&A
  • Worin unterscheidet sich Amazon ECS von AWS Elastic Beanstalk?
  • Worin unterscheidet sich Amazon ECS von AWS Lambda?
  • Optimierung von Kubernetes-Speicher mit Cloud Volumes ONTAP

ECS-Vorteile und Anwendungsfälle


ECS ermöglicht es Ihnen, Container einfach für verschiedene Anwendungsfälle zu nutzen. Sie können ECS sowohl für das Hosting einfacher Webseiten einsetzen als auch zum Verwalten einer verteilten Microservices-Architektur. ECS vereinfacht die Verwaltung von Containern, automatisiert jedoch nicht den gesamten Prozess. Sie haben weiterhin die Möglichkeit, den Ablauf fein abzustimmen und individuell anzupassen.

Hier sind einige zentrale Vorteile von Amazon ECS:

  • Einfache und unkomplizierte Bereitstellung: ECS übernimmt die Einrichtung und Verwaltung der Infrastruktur von Kubernetes-Clustern und entlastet Sie von diesen Aufgaben.
  • Planungsfunktionen: ermöglicht Ihnen, Dienste, Anwendungen und Batch-Prozesse zu planen.
  • Verwaltete Verfügbarkeit: ECS ist verantwortlich für die Aufrechterhaltung der Anwendungsverfügbarkeit und hilft Ihnen, je nach Bedarf hoch oder herunter zu skalieren, um Kapazitätsanforderungen zu erfüllen.
  • Native Integration: mit einer Vielzahl von Funktionen wie AWS ELB, Amazon Virtual Private Cloud (Amazon VPC), IAM und AWS EBS.
  • Integration mit bestehenden Tools: ECS stellt einfache APIs bereit, mit denen Sie Ihre CI/CD-Pipeline und bestehende Tools einbinden können.

Mehr dazu finden Sie in unseren Leitfäden: AWS ECS vs. Kubernetes und AWS ECS vs. EKS

Amazon ECS Architektur

Die folgende Abbildung zeigt Amazon ECS mit Containern, die auf AWS Fargate laufen. In den nächsten Abschnitten besprechen wir die wichtigsten dargestellten Komponenten.

Amazon ECS architecture with VPC, container registry, Fargate tasks, and elastic network interfaces across availability zones.Source: AWS

Container und Images

Um Ihre Anwendung auf Amazon ECS bereitzustellen, müssen Sie die Anwendungskomponenten so entwerfen, dass sie in Containern laufen. Container werden aus schreibgeschützten Vorlagen erstellt, die Images genannt werden.

Images werden in der Regel aus einer Dockerfile erstellt, einer einfachen Textdatei, die alle Komponenten definiert, die im Container laufen sollen. Nach der Erstellung werden diese Images in einer Container Registry gespeichert und können anschließend im Cluster heruntergeladen und ausgeführt werden.

Dockerfile
erstellt, einer einfachen Textdatei, die alle Komponenten definiert, die im Container laufen sollen. Nach der Erstellung werden diese Images in einer Container Registry gespeichert und können anschließend im Cluster heruntergeladen und ausgeführt werden.

AWS ECS Task Definitions

Damit Ihre Anwendung auf Amazon ECS laufen kann, müssen Sie eine Task Definition erstellen. Eine Task Definition ist eine Textdatei (im JSON-Format), die einen oder mehrere Container (bis zu 10) beschreibt, die zusammen Ihre Anwendung bilden.

Die Job Definition kann verschiedene Parameter für Ihre containerisierte Anwendung festlegen. Zum Beispiel:

  • welche Container ausgeführt werden sollen,
  • welche Ports geöffnet sein müssen,
  • welche Datenträger (Volumes) verwendet werden,
  • w elcher Docker-Netzwerkmodus genutzt wird,
  • welche IAM-Rollen zugewiesen sind.

Fast alles, was Sie über einen Docker-Befehl in der Kommandozeile starten können, lässt sich in einer ECS Task Definition festlegen. Alle verfügbaren Parameter finden Sie in der offiziellen Dokumentation.

AWS ECS Tasks und Scheduling

Eine Task ist eine laufende Instanz einer Task Definition in einem Cluster. Nachdem du eine Task Definition für deine Anwendung in Amazon ECS erstellt hast, kannst du angeben, wie viele Tasks in deinem Cluster ausgeführt werden sollen.

Der Amazon ECS Task Scheduler ist dafür zuständig, Tasks im Cluster zu platzieren. Es gibt zwei Hauptstrategien:

  • REPLICA-Strategie: startet eine gewünschte Anzahl von Tasks im Cluster und hält diese Anzahl konstant aufrecht. Wenn einzelne Tasks ausfallen, werden sie automatisch ersetzt.
  • DAEMON-Strategie: startet jeweils eine Task auf jeder aktiven Container-Instanz, die die relevanten Kriterien erfüllt.

Amazon ECS architecture showing service definition and Fargate tasks with elastic network interfaces.Source: AWS

AWS ECS Cluster

Ein Amazon ECS Cluster ist eine logische Gruppierung von Services, die jeweils aus einer oder mehreren Tasks bestehen. Wenn du Amazon ECS zum ersten Mal nutzt, wird automatisch ein Standard-Cluster erstellt.

Sie können zusätzliche Cluster in Ihrem Konto anlegen, um Ressourcen-Isolierung für verschiedene Workloads oder Projekte zu erreichen.

Es gibt zwei Möglichkeiten, Cluster-Ressourcen auszuführen:

  • auf EC2-Instanzen
  • über Amazon Fargate.

Mehr Details zu beiden Optionen finden Sie im nächsten Abschnitt.

Container Agent

Der Container Agent läuft auf jeder Container-Instanz in einem Amazon ECS Cluster. Er sendet Informationen über aktuell laufende Tasks und die Ressourcenauslastung an Amazon ECS. ECS kann den Agenten nutzen, um bei Bedarf Tasks zu starten oder zu stoppen.

Amazon ECS workflow diagram illustrating container registry integration and task scheduling.Source: AWS

AWS ECS-Bereitstellungsoptionen: EC2 vs. Fargate

ECS kann Elastic Compute Cloud (EC2)-Instanzen nutzen, um Container auszuführen. Diese EC2-Instanzen werden im Rahmen des Amazon-EC2-Dienstes bereitgestellt und in einem definierten ECS-Cluster registriert. Dadurch kann ECS diese Instanzen verwenden, um Container darauf bereitzustellen.

Sie können ein ECS-Cluster innerhalb einer bestehenden VPC (Virtual Private Cloud) ausführen und so Zugriff auf vorhandene AWS-Ressourcen in dieser VPC ermöglichen.

Eine alternative Möglichkeit zur Bereitstellung von ECS-Containern ist Amazon Fargate. Fargate nimmt Ihnen die Verantwortung für das Bereitstellen, Konfigurieren und Verwalten von EC2-Instanzen ab, AWS übernimmt diese Aufgaben für Sie.

Mit Fargate müssen Sie keine Server verwalten, allerdings müssen Task Definitions zustandslos (stateless) sein. Derzeit können Sie kein persistentes Speicher-Volume (z. B. ein Elastic Block Storage-Volume) direkt an einen in der Job Definition festgelegten Container anhängen.

Das bedeutet: Wenn Sie Fargate mit persistentem Speicher nutzen möchten, müssen Sie externe Speicher-Services wie Amazon S3 oder Relational Database Service (RDS) verwenden.

Wann ECS mit EC2 verwenden?

  • Ihre gesamte Infrastruktur läuft in AWS.
  • Sie haben bereits VPCs und Subnetze definiert.
  • Sie haben bestehende Prozesse zum Bereitstellen und Verwalten von EC2-Instanzen.
  • Ihre Anwendungen benötigen einen direkt angebundenen persistenten Speicher.

Wann ECS mit Fargate verwenden?

  • Sie haben noch keine bestehende VPC.
  • Ihre Ressourcen laufen teilweise auf Amazon und teilweise in anderen Cloud-Umgebungen.
  • Ihre Anwendungen sind zustandslos (stateless) oder benötigen keine direkt angebundenen Speicher-Volumes.

AWS ECS Fragen & Antworten (Q&A)

Worin unterscheidet sich Amazon ECS von AWS Elastic Beanstalk?

Amazon ECS bietet Ihnen Funktionen, die die Verwaltung von Containern vereinfachen, während Sie den Prozess weiterhin selbst fein abstimmen können. AWS Elastic Beanstalk hingegen verwaltet die gesamte Infrastruktur automatisch für Sie. Beanstalk eignet sich, wenn Sie sich ausschließlich auf den Code konzentrieren möchten.

AWS Elastic Beanstalk ist ein Cloud-Service, mit dem sich Anwendungen und Services einfach bereitstellen und skalieren lassen. Beanstalk übernimmt automatisch die Verwaltung von Diensten wie ELB, EC2, Auto Scaling, RDS und führt außerdem Deployments sowie Monitoring durch.

Bei der Arbeit mit Beanstalk müssen Sie nur angeben:

  • welche Container-Images bereitgestellt werden sollen,
  • welche Speicher- und CPU-Anforderungen bestehen,
  • wie Container miteinander verknüpft werden,
  • welche Port-Mappings genutzt werden.

Sobald diese Informationen definiert sind, übernimmt Beanstalk automatisch:

  • das Bereitstellen eines ECS-Clusters,
  • Auto-Scaling und Monitoring,
  • Load Balancing,
  • das Ausführen der Container in Clustern.

Worin unterscheidet sich Amazon ECS von AWS Lambda?

Amazon ECS bietet Funktionen, die die Verwaltung von Containern und Clustern vereinfachen, aber keine vollständige Automatisierung. Sie müssen den Bereitstellungsprozess verstehen und Ihre Ressourcen kontinuierlich konfigurieren und skalieren. ECS gibt Ihnen dabei einen direkten Einblick in die Serverumgebung und die Informationen, die Sie brauchen, um Ihr Setup zu optimieren.

AWS Lambda hingegen ermöglicht Ihnen, ereignisgesteuerte Aufgaben zu programmieren, die die Rechen Infrastruktur automatisch verwalten. Lambda definiert eine serverlose Infrastruktur, die weder Konfiguration noch Eingriffe von Ihnen erfordert – außer dem Schreiben des Codes, der auf bestimmte Ereignisse reagiert. Beispiele für Ereignisse sind: Datenänderungen oder Klicks auf einer Website. Lambda reagiert darauf automatisch mit den von Ihnen definierten Aktionen.

Optimierung der Container-Speicherung mit Cloud Volumes ONTAP

NetApp Cloud Volumes ONTAP ist eine führende Speicherverwaltungs-Lösung auf Enterprise-Niveau. Sie bietet sichere, bewährte Storage-Services auf AWS, Azure und Google Cloud. Cloud Volumes ONTAP unterstützt Kapazitäten von bis zu 368 TB und deckt zahlreiche Anwendungsfälle ab, darunter File Services, Datenbanken, DevOps oder andere Unternehmens-Workloads.

Zu den Funktionen gehören:

  • hohe Verfügbarkeit,
  • Datensicherheit,
  • Speicher-Effizienz,
  • Kubernetes-Integration,
  • und vieles mehr.

Insbesondere unterstützt Cloud Volumes ONTAP die Anforderungen an Persistent Volume Provisioning und Verwaltung für containerisierte Workloads.

Mehr darüber, wie Cloud Volumes ONTAP die Herausforderungen containerisierter Anwendungen löst, finden Sie in den Kubernetes Workloads mit Cloud Volumes ONTAP Fallstudien.

Drift chat loading