Blogpost vom 14. August 2020

Kubernetes in der Cloud

Entwickler arbeiten zusammen am Kubernetes Cluster

Die Cloud harmoniert hervorragend mit Container-Technologien. Insbesondere die Open-Source-Technologien Docker und Kubernetes erweisen sich als gutes Team bei Betrieb, automatisierter Auslieferung, Verwaltung und Skalierung von Software-Landschaften aller Art in der Cloud.

Kubernetes übernimmt dabei die Orchestrierung, während Docker als CRI (Container Runtime Interface) für den Betrieb der Applikation zuständig ist. Dabei bilden sie ein Team, das die Einfachheit einer Platform as a Service (PaaS) mit der Flexibilität einer Infrastructure as a Service (IaaS) kombiniert.

Die Architektur von Kubernetes kurz erklärt

Kubernetes ist griechisch und bedeutet Steuermann. Ziel der Plattform ist es, Container-Anwendungen automatisiert und effizient in der Cloud bereitzustellen, zu verwalten und weiterzuentwickeln. Und zwar ganz im Sinne von CD/CI im laufenden Betrieb, ohne Downtime, ohne Latenzen. Applikationen und Projekte profitieren von Kubernetes insofern, als es Aufwände, Wartezeiten und Bürokratie substanziell reduziert. Mit Kubernetes lassen sich

  • Ressourcen schnell, unbürokratisch und dynamisch auf- und abschalten,
  • die Datenlast gleichmäßig auf die verfügbaren Ressourcen verteilen,
  • Störungen im Betrieb schnell erkennen und ohne Downtime beheben.

Die im Folgenden kurz vorgestellten Komponenten eines Kubernetes-Clusters sind dabei essenzielle Features der Orchestrierungsplattform.

Jule Witte

Jule Witte

Presse & Kommunikation
presse@micromata.de

Kubernetes Control Plane

Das Kubernetes Control Plane ist das Cockpit des Kubernetes-Clusters. Als Leitstand erkennt es Cluster-Ereignisse und reagiert darauf. Dazu nutzt es die folgenden Komponenten, die prinzipiell auf jedem Rechner ausgeführt werden können:

  • API Server: Schnittstelle zur Interaktion mit dem Kubernetes-Cluster, alleinige Verbindung zum Etcd-Speicher
    Etcd: Konsistenter und hochverfügbarer Key-Value-Speicher für alle Clusterdaten.
  • Kube Controller Manager: Vereint in sich alle vom Cluster benötigten Regelkreise (z.B. Replication Controller, Node Contoller etc.)
  • Scheduler: Übernimmt die Ressourcenplanung unter Berücksichtigung aller hardware- oder softwareseitigen Richtlinien, der Datenlokalität, Workload-Interferenzen und Deadlines.

DevOps mit Kubernetes in der Cloud

Das Erstellen eines Workloads läuft grob skizziert so ab:

  • Am Anfang wird ein Docker Image gebaut, welches die Applikationssoftware enthält.
  • Das Docker Image wird in eine Container Registry geladen, die vom Cluster aus erreichbar ist.
  • Im Kubernetes Cluster wird ein Workload definiert, der die Docker Images anzieht.

All das ist mit ein paar wenigen Befehlen erledigt und legt den Grundstein für eine container-basierte, cloud-native Anwendung. Ob Azure, AWS oder GCP: Kubernetes funktioniert bei allen Cloudanbietern ähnlich gut. Unterschiede existieren einzig in den Möglichkeiten zur Administration, Automatisierung und den Bereitstellungszeiten der Cloud Hardware.

Vorteile für DevOps und Softwarebetreiber

Die Vorteile dieser Architektur sind für DevOps-Ingenieure und Softwarebetreiber im Wesentlichen die gleichen:

  • Synchronität: Ressourcen können synchron zur Datenlast schnell und automatisch angepasst werden.
  • Transparenz: Es besteht jederzeit volle Übersicht über die komplette Anwendung.
  • Skalierbarkeit: Die Weiterentwicklung der Software und das Aufschalten neuer Features erfolgt ohne Downtime gemäß CD/CI.
  • Flexibilität: Die Anwendung ist leicht an eine sich ändernde Daten- oder Marktsituation anpassbar.
  • Resilienz: Tritt auf einem Pod ein Fehler auf, springt automatisch ein anderer Pod ein – für maximale Resilienz des Systems

Vorteile für unsere Kunden


  • Das hier skizzierte Vorgehen stellt nur einen groben Durchstich dar. Vor einem Cloud-Go-live werden die geschilderten Prozesse von uns voll automatisiert. Dabei regeln wir die Beschaffenheit eines Kubernetes Clusters zumeist über „Infrasturcture as Code“, welcher ebenfalls per Pipeline ausgerollt wird.

  • Zusätzlich sichern wir die Pipeline, also die Auslieferung unserer Applikationssoftware, mit Codeanalysen sowie automatischen Last- und Sicherheitstests ab. Unsere Kunden können die jeweiligen Entwicklungsstände auf dezidierten Testumgebungen live mitverfolgen, wenn sie das wünschen. Die Testsysteme existieren nur zur Entwicklungszeit eines Features und verbrauchen auf diese Weise nie unnötig Ressourcen.

  • Kubernetes bietet ein so sichereres Fundament für den Software-Betrieb in der Cloud, dass auch nur ein einzelnes Cluster als Komplettsystem zum Einsatz kommen kann. Die Cloud ermöglicht es uns ferner, das Kubernetes Cluster ohne manuelle Interaktion dynamisch an den jeweiligen Ressourcenbedarf anzupassen.

  • So können wir mit signifikant geringeren Kosten ein System erstellen und betreiben, das alle Anforderungen einer zeitgemäßen Software erfüllt und auf künftige Anforderungen dynamisch reagieren kann.