Kubernetes wird am häufigsten mit Docker, einer der beliebtesten Containerisierungsplattformen, verwendet. Container wurden nach dem Start des Docker-Containerisierungsprojekts im Jahr 2013 immer beliebter. Kubernetes kann aber auch mit jedem anderen Containersystem verwendet werden, das den Standards der Open Container Initiative (OCI) für Container-Image-Formate folgt. Da es sich um eine Open-Source-Lösung handelt, kann Kubernetes von jedermann verwendet werden, sei es vor Ort, in der öffentlichen Cloud oder in beiden. Verteilte containerisierte Anwendungen sind schwierig zu verwalten, aber Kubernetes macht containerisierte Anwendungen radikal einfacher zu verwalten und wurde zu einem wichtigen Bestandteil der Container-Revolution.

In diesem Artikel analysieren und vergleichen wir die verschiedenen Funktionen und Services, die von riesigen öffentlichen Clouds angeboten werden, und wie sie für Unternehmen von Vorteil sind. Um tief in Kubernetes einzutauchen, sollten Sie sich die Prüfungsvorbereitung zum Certified Kubernetes Application Developer (CKAD) von Cloud Academy ansehen. Dieser Lernpfad umfasst eine Kombination aus Kursen, Prüfungen und einer Reihe von praktischen Übungen, um Kubernetes-Erfahrungen aus erster Hand direkt in einer Live-Cloud-Umgebung zu sammeln.

Amazon Elastic Container Service for Kubernetes (Amazon EKS)

Amazon Elastic Container Service für Kubernetes (EKS) ist ein verwalteter Service, der im Juni 2018 allgemein verfügbar gemacht wurde, um Kubernetes auf AWS auszuführen. Er ist vollständig kompatibel mit den Anwendungen, die auf jeder Standard-Kubernetes-Architektur laufen. Auf Amazon EKS wird eine mandantenfähige Kubernetes-Kontrollebene für jeden Cluster ausgeführt, wobei die Kontrollebene nicht über Cluster hinweg geteilt wird.

Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) ist die Kubernetes-Lösung von Microsoft, die im Juni 2018 allgemein verfügbar gemacht wurde. Der vollständig verwaltete AKS ermöglicht die einfache Bereitstellung und Verwaltung von containerisierten Anwendungen in einer Kubernetes-Umgebung. Microsoft kündigte den Azure Container Service bereits vor AKS im Jahr 2016 an, was zeigt, dass das Unternehmen eine gewisse Erfahrung in der Container-Orchestrierung hat, die nicht nur Kubernetes, sondern auch Apache Mesos und Docker Swarm unterstützt.

Google Kubernetes Engine (GKE)

Kubernetes wurde von Google im Juli 2015 erstmals auf dem Markt eingeführt. Google Kubernetes Engine (GKE) ist eine verwaltete, produktionsreife Architektur für die Bereitstellung von containerisierten Anwendungen und eine der fortschrittlichsten Lösungen. GKE ermöglicht es, containerisierte Anwendungen in kürzester Zeit einzurichten, da die Notwendigkeit der Installation und Verwaltung von Kubernetes-Clustern entfällt.

Vergleich der großen Cloud-Anbieter

Wir haben die Kubernetes-Dienste und die grundlegende Kubernetes-Infrastruktur der großen Cloud-Anbieter besprochen. In diesem Abschnitt werden wir die wichtigsten Merkmale dieser drei Anbieter im Hinblick auf die Kubernetes-Architektur analysieren und vergleichen.

Innerhalb weniger Wochen oder vielleicht Tage nach dem Schreiben dieses Artikels wird die aktuelle Version einer der Plattformen veraltet sein. Allerdings ist das Alter der aktuellen Version, die Sie gerade nutzen möchten, die wichtigste Information überhaupt. Wenn wir vergleichen, hat Google Cloud die aktuellste Version, gefolgt von Microsoft Azure und dann AWS. Die Behebung von Fehlern und Sicherheitsproblemen ist in der Version von Google einfacher als in Microsoft Azure und AWS auf einer bestimmten Ebene.

GKE steht an der Spitze, da es eine vollautomatische Aktualisierung des Clusters ermöglicht. AKS ermöglicht die Aktualisierung des Clusters durch einen einfachen Befehl. Für die Aktualisierung von Amazon EKS muss der Benutzer jedoch einige Befehlszeilenanweisungen an das System senden, was es unter den anderen beiden Systemen schwieriger macht.

Das Befehlszeilendienstprogramm kubectl wird von allen drei Plattformen unterstützt. Die Anmeldebefehle sind für jeden Anbieter unterschiedlich:

AWS

aws eks –region ${region} update-kubeconfig –name ${cluster}

Microsoft Azure

az aks get-credentials –resource-group ${RS} –name ${cluster}

Google Cloud Platform

gcloud container clusters get-credentials ${cluster}

Ressourcenüberwachung

Für die Kubernetes-Überwachung bietet Google Cloud Stackdriver an. Stackdriver überwacht den Master und die Nodes sowie alle Kubernetes-Komponenten innerhalb der Plattform und integriert die Protokollierung, so dass keine weiteren manuellen Schritte des Benutzers erforderlich sind: Azure Monitor zur Bewertung des Zustands eines Containers und Application Insights zur Überwachung der Kubernetes-Komponenten. Ein Benutzer muss Istio (eine Service-Mesh-Lösung) konfigurieren, um Kubernetes-Komponenten zu überwachen. AWS hat keine integrierte Überwachungslösung, sondern verlässt sich stattdessen auf Lösungen von Drittanbietern.

Verfügbarkeit

Google Cloud hat die beste Verfügbarkeit unter diesen drei, aber nach der Einführung von Diensten in Lateinamerika und Afrika wird Microsoft Azure die Führung übernehmen. Da AWS keine Dienste in Lateinamerika, Afrika oder Ozeanien anbietet, wird es ins Hintertreffen geraten.

Knotenpunkte

Für verschiedene Arten von Arbeitslasten werden den Clustern über Knotenpools verschiedene Arten von Maschinen zugewiesen. Für Datenbanksysteme sind mehr RAM und bessere Festplatten erforderlich, während Aufgaben wie Algorithmen für maschinelles Lernen eine bessere CPU benötigen. Mit Knotenpools können wir die beste Ressourcenverfügbarkeit bieten, da ein Benutzer die Bereitstellung von Diensten nach Bedarf festlegen kann. Google Cloud und AWS sind in diesem Rennen führend, da sie seit zwei Jahren Node-Pool-Unterstützung anbieten. Microsoft Azure hingegen bietet seit mehr als einem Jahr keine Node-Pools mehr an.

Automatische Skalierung

Kubernetes ist in der Lage, die Knoten automatisch nach oben und unten zu skalieren, um Ressourcen nach Bedarf zu nutzen, und das ist die interessanteste Funktion. Auf diese Weise stehen den Nutzern jederzeit verfügbare Dienste zur Verfügung, während die Beteiligten eine kosteneffiziente Infrastruktur schaffen können. Um die Ressourcennutzung für bestimmte Arten von Diensten fein abzustimmen, können wir Autoscaling zusammen mit Node Pools verwenden, wobei Google Cloud die ausgereifteste Lösung auf der Schnittstelle ist.

Der Nutzer muss lediglich die gewünschte VM-Größe und den Bereich der Knoten im Knotenpool angeben. Der Rest der Schritte wird von Google Cloud verwaltet. AWS steht bei der automatischen Skalierung an zweiter Stelle, da es einige kleinere manuelle Konfigurationen erfordert. Microsoft Azure hat einen Autoscaler eingeführt, der teilweise vom Kundensupport abgedeckt wird (nicht für den Produktionseinsatz verfügbar), und wird ihn möglicherweise in naher Zukunft mit Node-Pool-Funktionalität anbieten.

Hohe Verfügbarkeit

Der Begriff "Hochverfügbarkeit" bedeutet, dass Ihr Cluster auch dann noch verfügbar ist, wenn etwas schief geht. Wenn Ihre Dienste beispielsweise von einem einzigen Rechenzentrum abhängig sind und dieses ausfällt, werden Ihre Dienste unterbrochen. Um die Verfügbarkeit der Kubernetes-Endpunkte zu gewährleisten, sind die Master-Knoten für jeden der drei Dienste auf mehr als eine Verfügbarkeitszone verteilt. So ist der Kubernetes-Endpunkt auch dann verfügbar, wenn eine der Regionen ausfällt. Nur Google Cloud hat es geschafft, Hochverfügbarkeit für Worker Nodes vollständig zu unterstützen. Aber das ist natürlich kostspielig, da die minimalen Worker Nodes eine Verfügbarkeit von 99,99 % garantieren sollten.

Rollenbasierte Zugriffskontrolle (RBAC)

Wir verwenden rollenbasierte Zugriffskontrolle (RBAC) über die Kubernetes-API, damit die Administratoren Richtlinien dynamisch konfigurieren können. Jeder der drei Anbieter von gehosteten Diensten bietet RBAC-Implementierungen an.

Bare-Metal-Cluster

Wie der Name schon sagt, handelt es sich bei virtuellen Maschinen (VMs) um eine emulierte Maschine, die über realer Hardware läuft. Für einen Cloud-Anbieter bietet diese Technik eine ganze Reihe von Vorteilen. Für eine bessere Ressourcennutzung können wir eine sehr große Maschine in mehrere kleinere Einheiten aufteilen, die von mehreren Kunden genutzt werden können. Hohe Zugänglichkeit und VMs lassen sich leicht von einer physischen Maschine auf eine andere verschieben, aber die Virtualisierungsschicht bringt auch einige Komplexitäten und eine geringere Leistung mit sich als die physische, reine Hardware. Zurzeit ist nur bei AWS Bare-Metal-Hardware verfügbar.

Preisgestaltung

Das Cluster-Management, das die Verwaltung des Master-Knotens und der darauf laufenden Maschinen umfasst, wird von GKE und AKS kostenlos zur Verfügung gestellt. Sie zahlen für die von Ihnen ausgeführten Dienste wie VMs, Bandbreite, Speicher und Services. Auf der anderen Seite berechnet Amazon EKS Ihnen 0,20 $ pro Stunde für jeden bereitgestellten Cluster mit Ausnahme der Dienste, die Sie nutzen. Und für den ganzen Monat kostet es Sie extra. Denken Sie daran, dass AWS Ihnen auch für Test- und Staging-Cluster-Umgebungen zusätzliche Gebühren berechnet.

In der folgenden Tabelle werden die von AWS, Azure und Google Cloud angebotenen Kubernetes-Funktionen verglichen und zusammengefasst

Service Amazon EKS Azure AKS Google GKE
Automatic Update On-demand with manual, command-line, and steps. Nodes need to be updated manually On-demand, master, and nodes are upgraded together Master and nodes
CLI Support Supported Supported Supported
Resource Monitoring Third-party only Azure Monitor for containers and Application Insights Stackdriver (paid with a free tier)
Availability U.S., Europe, and Asia. Not available in Latin America, Oceania, or Africa U.S., Europe, Asia, and Oceania. Latin America and Africa expected in Q2 2019 U.S., Europe, Asia, Oceania, and Latin America. Not available in Africa
Autoscaling of Nodes Yes Under preview Yes
Node Groups Yes No Yes
High-Availability Clusters No In development Yes
RBAC Yes Yes Yes
Bare Metal Nodes AWS No No
Cost $.20 per hour Only pay for the VMs running the Kubernetes nodes Only pay for the VMs running the Kubernetes nodes

Fazit

Kubernetes hat sich als beliebtester Container-Orchestrator-Dienst etabliert und ist zu einer unverzichtbaren Lösung für die Cluster-Verwaltung geworden - doch damit ist es nicht getan. Es hat weiter an Marktwert gewonnen, da seine Bereitstellung auf einer Platform-as-a-Service-Lösung (PaaS) einfacher ist. AWS, Microsoft Azure und Google Cloud Platform sind die beliebtesten Cloud-Anbieter auf dem Markt. Sie konkurrieren darum, die beste Kubernetes-Lösung für das vergangene Jahr zu sein. Es ist schwer, die Zukunft vorherzusagen, aber Google hat den Vorteil, das ausgereifteste und günstigste Produkt zu haben. Auf der anderen Seite interessieren sich die Menschen für AKS- und Amazon EKS-Lösungen, die sich möglicherweise durchsetzen wollen.

Die Original-Version in Englisch erschien am 12. November 2019 auf cloud academy.

Mit freundlicher Genehmigung des Verlages durften wir den Beitrag erneut in diesem Blog veröffentlichen.

Kommentar schreiben

* Diese Felder sind erforderlich

Kommentare

Keine Kommentare