Docker Container verwalten und orchestrieren Container Workloads in der AWS Cloud

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

„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?“

Anbieter zum Thema

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)

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.

(ID:45095759)