Docker Container verwalten und orchestrieren

Container Workloads in der AWS Cloud

| Autor / Redakteur: Sascha Möllering * / Stephan Augsten

Eine Möglichkeit, Docker-Container bereitzustellen und zu verwalten, ist AWS Fargate.
Eine Möglichkeit, Docker-Container bereitzustellen und zu verwalten, ist AWS Fargate. (Bild: Amazon Web Services)

„Wir würden gerne Docker nutzen, um unsere Anwendungen in AWS auszurollen und zu verwalten. Welche Empfehlungen und Services existieren für die Verwaltung von Docker-Containern in der AWS Cloud?“

Docker ist eine Software, die es ermöglicht, Anwendungen mit Hilfe von Virtualisierungstechniken in Containern zu isolieren. Die Technologie erlaubt es, bestehende Computing-Infrastrukturen potenziell besser auszulasten und bietet ein großes Maß an Isolation.

Insbesondere Microservices-Anwendungen werden häufig auf Basis von Container-Technologien implementiert. Die wohl einfachste Möglichkeit, Docker-Container in AWS laufen zu lassen, besteht in der Nutzung des kürzlich vorgestellten AWS Fargate-Modus des Amazon Elastic Container Service (ECS).

Letzterer ist ein skalierbarer Container-Management-Dienst, der Docker-Container unterstützt und es erlaubt, Anwendungen auf einem verwalteten Cluster von Amazon EC2-Instances zu betreiben. Mit Amazon ECS entfällt das Erfordernis, eigene Cluster-Management-Infrastruktur zu installieren, zu betreiben oder zu skalieren.

Mit Amazon Elastic Container Service können lang andauernde Anwendungen und Batch-Aufgaben geplant werden. Es können die APIs außerdem verwendet werden, um aktuelle Informationen zum Cluster-Status zu erhalten. AWS Fargate wiederum ist eine Technologie für Amazon ECS, mit der Container ohne großartiges Management ausgeführt werden können.

Mit AWS Fargate müssen für die Ausführung von Containern also keine Cluster von virtuellen Maschinen mehr bereitgestellt, konfiguriert und skaliert werden. Auf diese Weise müssen keine Servertypen mehr ausgewählt werden, es muss nicht entschieden werden, wann die Cluster skaliert werden oder das Cluster-Packing optimiert wird.

Folgende beispielhafte Anwendungsdefinition für Amazon ECS im Fargate-Modus lässt eine Tomcat Servlet-Engine auf einem ECS-Cluster laufen:

{
   "containerDefinitions": [
      {
         "logConfiguration": {
            "logDriver": "awslogs",
            "options": {
               "awslogs-group": "/ecs/tomcat-container-logs",
               "awslogs-region": "us-east-1",
               "awslogs-stream-prefix": "ecs"
            }
         },
         "portMappings": [
            {
               "hostPort": 8080,
               "protocol": "tcp",
               "containerPort": 8080
               }
            ],
         "cpu": 1024,
         "memory": 256,
         "image": "tomcat",
         "essential": true,
         "name": "tomcat-webserver"
      }
   ],
   "requiresCompatibilities": [
      "FARGATE"
   ],
   "memory": "2048",
   "family": "tomcat-webserver",
   "networkMode": "awsvpc",
   "cpu": "1024"
}

Eine weitere Möglichkeit, Docker Container in AWS zu orchestrieren, besteht in der Verwendung von Kubernetes. Auf der re:invent 2017 wurde Amazon Elastic Container Service for Kubernetes (EKS) vorgestellt. Mit diesem Managed Service lässt sich Kubernetes auf AWS einfach betreiben, ohne eigene Kubernetes-Cluster installieren und betreiben zu müssen.

Alternativ können Kubernetes-Cluster mit Tools wie beispielsweise kops oder kube-aws installiert werden. Folgendes kop-Kommando installiert ein Kubernetes-Cluster mit drei Master- und fünf Worker-Knoten in der Region Frankfurt:

export AWS_AVAILABILITY_ZONES=${ZONES:-"eu-central-1a,eu-central-1b,eu-central-1c"}
export KOPS_STATE_STORE="s3://kubernetes-aws-io"
kops create cluster cluster.k8s.local \
   --master-count 3 \
   --master-size m4.large \
   --node-count 5 \
   --node-size m4.large \
   --zones $AWS_AVAILABILITY_ZONES \
   --networking calico \
   --yes

Kubernetes ist ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von Anwendungen in Containern. Der Betrieb von Kubernetes für Produktionsanwendungen stellt eine Reihe von Herausforderungen dar. Amazon EKS erkennt und ersetzt automatisch degenerierte Master und stellt automatisch Versions-Upgrades und Patches für die Master bereit.

Fazit

Sascha Möllering
Sascha Möllering (Bild: AWS Germany GmbH)

Es existieren unterschiedliche Möglichkeiten, Docker Container und entsprechende Workloads in AWS zu betreiben. Amazon ECS und Amazon EKS sind verwaltete Services, die das Aufsetzen von Betreiben von entsprechenden Clustern deutlich vereinfachen. Es ist natürlich auch ohne Probleme möglich, Cluster zur Orchestrierung von Docker Containern selbst aufzusetzen und zu betreiben.

* Sascha Möllering arbeitet als Solutions Architect bei der Amazon Web Services Germany GmbH.

Kommentare werden geladen....

Kommentar zu diesem Artikel abgeben

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 45117080 / Technologien)