Von Docker zu Kubernetes

Von Docker zu Kubernetes

Container sind in den letzten Jahren zweifellos zu einem technologischen Schlagwort geworden. Die Entstehung und der Aufstieg der Containerisierungstechnologie sowie die daraus hervorgegangenen Konzepte der Microservice-Architektur, DevOps und Cloud-Native haben die Softwarebranche tiefgreifend beeinflusst.

Container bieten zahlreiche Vorteile. Ihre umfassende Kapselung, die bequeme Bereitstellung und der leichte Start sowie die einfache Orchestrierung haben zu ihrer weiten Verbreitung beigetragen. In Kombination mit Orchestrierungssystemen vereinfachen Container die Anwendungsverwaltung und -iteration, unabhängig von der Systemkomplexität. Darüber hinaus zeichnen sich containerisierte Anwendungen durch eine hervorragende Portabilität aus und laufen nahtlos in jeder Umgebung, die mit einer standardkonformen Container-Laufzeitumgebung ausgestattet ist.

Leichte Container und elastisches Cloud Computing ergänzen sich perfekt. Die Anpassungsfähigkeit von Containern an unterschiedliche Betriebsumgebungen und ihre schnelle Startfähigkeit, gepaart mit der massiven Ressourcenskalierbarkeit durch dynamische Cloud-Erweiterung, ermöglichen es cloudbasierten containerisierten Anwendungen, innerhalb kurzer Zeit auf Tausende von Instanzen zu skalieren. Daher ist die Cloud die ideale Plattform für containerisierte Anwendungen, die deren Ausführung und Skalierung erleichtert.

Bevor Docker breite Anerkennung fand, erforschten und nutzten Cloud-Anbieter bereits containerähnliche Technologien. Die Multi-Tenant-Natur der Cloud erfordert Umgebungsisolierung, was Cloud-Anbieter sowohl zu Nutzern als auch zu Nutznießern der Containerisierung macht. Während einige auf proprietäre Lösungen setzten, übernahmen nicht alle direkt Docker.

Beispielsweise verwendete AWS Elastic Beanstalk eine private containerähnliche Technologie, um Webanwendungen zu isolieren. Anschließend wurde die Unterstützung für als Docker-Container verpackte Anwendungen erweitert.

Mit dem Aufstieg von Docker begannen die großen Public-Cloud-Anbieter einhellig, standardisierte containerbezogene PaaS-Dienste anzubieten und diese kontinuierlich zu verbessern. Ein Blick auf die Entwicklung der Container-PaaS zeigt verschiedene Entwicklungsstufen.

Zunächst konzentrierten sich Cloud-Container-Plattformen auf den reibungslosen Betrieb von Docker-Containern in der Cloud. Diese Dienste zielten hauptsächlich darauf ab, Benutzern die Erstellung zugrunde liegender VM-Cluster zu erleichtern und die manuelle VM-Verwaltung zu vereinfachen. Mit zunehmender Komplexität containerisierter Anwendungen wurde jedoch die Orchestrierung zu einem dringenden Bedarf. Infolgedessen führten Anbieter ihre Container-Orchestrierungslösungen ein und verbesserten sie.

In der Ära der konkurrierenden Orchestrierungs-Frameworks verfolgten einige Anbieter einen mehrgleisigen Ansatz. Beispielsweise unterstützte der Azure Container Service von Microsoft Docker Swarm, Apache Mesos (DC/OS) und Kubernetes. Andere, wie AWS mit seinem Elastic Container Service (ECS), entschieden sich für proprietäre Orchestrierungsmethoden, um die Integration mit ihren bestehenden Cloud-Diensten zu verbessern.

Wie wir wissen, setzte sich Kubernetes im Kampf der Orchestrierungs-Frameworks durch und wurde zum De-facto-Standard. Cloud-Anbieter schalteten sofort um und priorisierten die Unterstützung von Kubernetes in der Cloud. Sie starteten Kubernetes-spezifische Dienste wie AWS Elastic Kubernetes Service (EKS) und Azure Kubernetes Service (AKS). Auch Alibaba Cloud stellte die Swarm-Unterstützung in seinem Container-Dienst schrittweise ein und konzentrierte sich auf die Kubernetes-Edition (ACK).

Die Cloud-Unterstützung für Container-Technologie hat sich parallel zum Container-Ökosystem entwickelt, wobei Cloud-Anbieter als Teilnehmer und Wegbereiter eine bedeutende Rolle spielen. Beispielsweise ist der Google Kubernetes Engine (GKE) auf Google Cloud, der „von Geburt an“ im Ökosystem verwurzelt ist, stets der Maßstab für cloudbasierte Kubernetes-Dienste.

Cloudbasierte Kubernetes-Dienste bieten gegenüber selbst gehosteten Kubernetes-Clustern mehrere entscheidende Vorteile.

Erstens entfällt aufgrund der Multi-Tenant-Natur der Cloud bei vielen cloudbasierten Kubernetes-Diensten die Notwendigkeit, Master-Knoten bereitzustellen. Benutzer müssen nur Worker-Knoten erstellen und bezahlen, während die Cloud-Plattform die Master-Knoten bereitstellt und verwaltet, was den Ressourcenverbrauch und die Betriebskosten reduziert.

Zweitens verfügt Kubernetes trotz seiner Komplexität über ein außergewöhnlich abstraktes Design, das umfangreiche und flexible Erweiterungen ermöglicht. Cloud-Anbieter haben hier stark investiert, sodass verschiedene IaaS- und PaaS-Komponenten ihrer Plattformen nahtlos in das Kubernetes-Ökosystem integriert werden können, was eine engere Integration ermöglicht.

Beispielsweise gibt es im Bereich der Ingress-Controller, die üblicherweise zur Weiterleitung von externem Datenverkehr verwendet werden, cloudbasierte Load-Balancer-Controller-Implementierungen wie den AWS ALB Ingress Controller und den Azure AKS Application Gateway Ingress Controller. Diese Controller erstellen entsprechende PaaS-Dienstinstanzen, um den Kubernetes-Cluster zu bedienen.

Darüber hinaus kann auf der StorageClass-Ebene, auf der in Kubernetes Richtlinien zur dynamischen Speicher-Volumen-Bereitstellung definiert werden, die Verwendung cloudbasierter Block-Speicherdienste angegeben werden, um persistenten Speicher bei Bedarf bereitzustellen und einzubinden.

Aus architektonischer Flexibilitätssicht bieten cloudbasierte Kubernetes-Dienste einen weiteren Vorteil: Multi-Cluster-Bereitstellungen.

Da die Einstiegshürde für die Einrichtung von Kubernetes-Clustern gesunken ist, können bei geringer Interdependenz zwischen Geschäftseinheiten separate Kubernetes-Cluster für jede Einheit erstellt werden. Dieser Ansatz verbessert die Isolierung und ermöglicht die unabhängige Skalierung verschiedener Cluster.

Von Docker zu Kubernetes – die kontinuierliche Weiterentwicklung des Container-Ökosystems hat die Welle der Cloud-Native-Technologien eingeläutet. Entwickler sind bei ihrem Bestreben, Container-Technologien zu erlernen und zu nutzen, nicht allein. Auch Cloud-Computing-Anbieter wetteifern darum, sich als die optimalen Plattformen für den Betrieb von Containern zu positionieren, und führen eine Vielzahl containerbezogener Dienste ein, um Container-Nutzer in ihre Clouds zu locken.

Interessanterweise besteht eine subtile Beziehung zwischen Containern und bestimmten Cloud-Diensten, die von Anbietern aktiv beworben werden. Es gibt Elemente von Wettbewerb und Substitution.

Ähnlich wie einige PaaS-Funktionen mit IaaS nachgebildet werden können, können Container mit ihrer außergewöhnlichen Baufreiheit und den bequemen Verpackungs- und Bereitstellungsmechanismen teilweise bestimmte wiederverwendbare Komponenten innerhalb der Cloud ersetzen. Darüber hinaus können Container als Teil eines größeren Systems orchestriert werden und als Mittel zur Reduzierung der Abhängigkeit von einem bestimmten Anbieter dienen.

Trotz der potenziellen Bedrohung, die Container für bestimmte Cloud-Dienste darstellen, hat Cloud Computing erneut seine technologische Neutralität unter Beweis gestellt. Cloud-Plattformen haben die Ausführung von Containern offen begrüßt und unterstützt und sie sogar zu Schlüsseldiensten für die Entwicklung erklärt. Den Nutzern die Wahl zu lassen, zeigt die Integrationsfähigkeit der Cloud.

Novita AI ist die All-in-One-Cloud-Plattform, die Ihre KI-Ambitionen unterstützt. Integrierte APIs, serverlose Funktionen, GPU-Instanzen – die kosteneffektiven Tools, die Sie brauchen. Vermeiden Sie Infrastruktur-Setup, starten Sie kostenlos und verwirklichen Sie Ihre KI-Vision.

Empfohlene Lektüre:

  1. Demystifying Kubernetes Scheduling: A Deep Dive into Predicates and Priorities
  2. What You Need to Know About Docker