Suchen

Container-Orchestrierung mit Amazon EKS Kubernetes in der AWS Cloud

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

„Wir würden gerne Docker-Container in AWS mit Kubernetes orchestrieren, aber eine verwaltete Lösung präferieren, da wir die Master-Nodes nicht selbst betreiben möchten. Welcher Dienst kommt für den verwalteten Betrieb eines Kubernetes-Clusters in der AWS-Cloud in Frage?“

Firmen zum Thema

Funktionsweise von Amazon EKS.
Funktionsweise von Amazon EKS.
(Bild: AWS Germany GmbH)

Kubernetes ist eine „Open Source Container Management“-Plattform, die dabei hilft, komplexe Container-Workloads zu betreiben. Ein Kubernetes-Cluster besteht aus den Master-Nodes und den Worker-Nodes.

Die Master-Knoten sind das Control-Plane eines Clusters, auf denen Master-Komponenten laufen, die globale Entscheidungen (wie beispielsweise Scheduling von Containern) auf Cluster-Ebene treffen und auf Clusterevents reagieren. Die Worker-Nodes kommunizieren mit dem Backplane und üblicherweise laufen auf diesen die gewünschten Workloads.

Amazon Elastic Container Service for Kubernetes, kurz Amazon EKS, erleichtert die Bereitstellung, Verwaltung und Skalierung von Container-Workloads mithilfe von Kubernetes. Um Amazon EKS für die Orchestrierung von Container Workloads nutzen zu können, muss initial ein EKS-Cluster provisioniert werden. Dieser bietet einen verwalteten API-Endpoint, in den sich Worker-Nodes (Amazon EC2-Instanzen) einhängen können.

Diese Worker-Nodes können beispielsweise durch ein Amazon CloudFormation-Template oder ein TerraForm-Skript bereitgestellt werden. Für den Aufbau der Worker-Nodes stehen speziell optimierte Amazon Machine Images (AMIs) bereit, die auf Amazon Linux 2 basieren. Die Spezifikation dieser AMIs ist in Form von Packer-Skripten auf GitHub verfügbar.

IAM Authentifizierung mit kubectl

Da Amazon EKS ein AWS-Service ist, nutzt EKS IAM für die Authentifizierung gegenüber dem Kubernetes-Cluster. Dies wird mit Hilfe des Projekts AWS IAM Authenticator for Kubernetes implementiert. Initial wurde diese Software von Heptio geschrieben.

Ab der Kubernetes-Version 1.10 kann der unmodifizierte kubectl-Client so konfiguriert werden, dass dieser mit Amazon EKS durch die Installation des IAM Authenticators und entsprechender Konfiguration verwendet werden kann. Eine beispielhafte Konfiguration wird im Folgenden näher beschrieben:

apiVersion: v1
clusters:
- cluster:
      server: <endpoint-url>
      certificate-authority-data: <base64-encoded-ca-cert>
name: kubernetes
contexts:
- context:
      cluster: kubernetes
      user: aws
   name: aws
current-context: aws
kind: Config
preferences: {}
users:
- name: aws
   user:
      exec:
         apiVersion: client.authentication.k8s.io/v1alpha1
         command: aws-iam-authenticator
         args:
            - "token"
            - "-i"
            - "<cluster-name>"
               # - "-r"
            # - "<role-arn>"
            # env:
               # - name: AWS_PROFILE
               # value: "<aws-profile>"

Für die Authentifizierung wird der lokal installierte aws-iam-authenticator ausgeführt, der die entsprechende IAM Identität mit jedem Kubernetes-Call weiterleitet. Zusätzlich zu Parametern wie der Endpoint-URL, dem Base64-encoded Zertifikat und dem Clusternamen können noch eine IAM Rolle und ein spezielles AWS Credentials Profile mitgegeben werden.

Fazit

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

Amazon EKS macht es einfach, Kubernetes Cluster in AWS aufzusetzen, indem dieser ein vollständig verwaltetes Backplane anbietet, in dem sich die Worker-Nodes registrieren können, auf denen dann die Workloads ausgeführt werden. EKS ist upstream Kubernetes und Kubernetes-konform zertifiziert, sodass alle vorhandenen Plug-ins und Tools aus der Kubernetes-Community genutzt werden können.

* Sascha Möllering arbeitet als Solutions Architect bei der Amazon Web Services Germany GmbH. Seine Interessen liegen in den Bereichen Automation, Infrastructure as Code, Distributed Computing, Container und JVM.

(ID:45585801)