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:
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:
Mehr dazu finden Sie in unseren Leitfäden: AWS ECS vs. Kubernetes und AWS ECS vs. EKS
Die folgende Abbildung zeigt Amazon ECS mit Containern, die auf AWS Fargate laufen. In den nächsten Abschnitten besprechen wir die wichtigsten dargestellten Komponenten.
Source: AWS
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
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:
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.
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:
Source: AWS
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:
Mehr Details zu beiden Optionen finden Sie im nächsten Abschnitt.
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.
Source: AWS
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.
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:
Sobald diese Informationen definiert sind, übernimmt Beanstalk automatisch:
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.
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:
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.