Kubernetes zum Laufen zu bringen, kann herausfordernd sein – und dabei haben wir noch nicht einmal über Sicherheit gesprochen. Deshalb entscheiden sich die meisten für Managed-Kubernetes-Services in der Cloud. In diesem Artikel vergleichen wir die drei größten Managed-Kubernetes-Lösungen: EKS, GKE und AKS.
Christoph Ebeling
Christoph has been working as a Software Engineer, DevOps Consultant, and IT Manager for over 10 years. More recently he has been focusing a lot on cloud native microservice architectures using Kubernetes and serverless computing.
Was könnt ihr von Managed Kubernetes erwarten?
Stabilität, Ausfallsicherheit und Sicherheit in einem Kubernetes-Cluster zu erreichen, ist ziemlich anspruchsvoll. Fällt ein Worker Node aus, ist das in Ordnung, da der Großteil seiner Workloads redundant ist. Der Kubernetes-Master muss jedoch absolut zuverlässig sein. Fällt er aus, ist euer gesamter Cluster nicht verfügbar.
Hier kommen Managed-Kubernetes-Services ins Spiel. Je nach Cloud-Anbieter erhaltet ihr einen mehr oder weniger hochverfügbaren Kubernetes-Master mit SLA.
Eine weitere Herausforderung bei Kubernetes ist, dass keine Benutzerdatenbank enthalten ist. Dieses Problem löst in der Regel ebenfalls der Cloud-Anbieter, indem er Kubernetes Auth & RBAC in sein IAM integriert.
Löst Managed Kubernetes alle meine Probleme?
Bei allen Vorteilen von Managed Kubernetes sind Nutzer dennoch nicht völlig sorgenfrei. Sofern ihr Kubernetes nicht serverless betreibt – also ohne Worker Nodes und stattdessen mit Fargate / CloudRun –, müsst ihr euch weiterhin um die Skalierung, Überwachung und Wartung eurer Worker Nodes kümmern. Auch die Sicherheit müsst ihr selbst im Blick behalten. Schauen wir uns nun EKS, GKE und AKS an und vergleichen sie.
Managed Kubernetes im Vergleich
Kubernetes-Master
Wie bereits erwähnt, ist ein absolut zuverlässiger Master der Schlüssel zu einem ausfallsicheren Kubernetes-Cluster. Amazons EKS ist standardmäßig hochverfügbar, während ihr bei GCP wählen könnt, ob der Kubernetes-Master über mehrere AZs verteilt werden soll. AKS bietet Multi-AZ-Master erst seit Kurzem. Alle drei Anbieter haben SLAs für die Verfügbarkeit ihrer Master.
Worker-Gruppen
AWS und Azure haben Managed Worker Groups erst vor Kurzem eingeführt, während GCP diese Funktion von Anfang an bot. Als AKS im vergangenen Jahr Managed Worker Groups veröffentlichte, stellten unsere Teams einige Probleme fest. So war es mit AKS beispielsweise nicht möglich, verschiedene Node Pools mit unterschiedlichen Instanzgrößen zu kombinieren, und Worker Nodes wurden nach Updates nicht neu gestartet. EKS und insbesondere GKE führen diese Funktionen deutlich reibungsloser aus.
Worker-IAM-Integration
Um einen Kubernetes-Cluster mit anderen Ressourcen in der Cloud zu nutzen, müsst ihr Berechtigungen für eure Cluster-Ressourcen vergeben können. GCP bietet eine recht gute IAM-Integration mit GKE, EKS hatte dagegen lange mit diesem Thema zu kämpfen. Community-Projekte wie kube2iam entstanden, um diese Lücken zu schließen. Glücklicherweise löste Amazon das Problem im vergangenen Herbst und führte granulare IAM-Rollen für Service Accounts ein. AKS bietet überhaupt keine granulare Berechtigungsvergabe und ermöglicht nur die Zuweisung von Service Principals auf Cluster-Ebene.
Ingress
GKE ist führend bei der Ingress-Integration. Sowohl AWS als auch GCP bieten eine Integration von Layer-7-Load-Balancern mit Kubernetes Ingress, doch die Einrichtung ist bei GCP deutlich einfacher. AKS bietet hingegen überhaupt keine vergleichbare Funktion.
Preise
Wenn ihr einen kostenlosen Kubernetes-Master möchtet, sind zonales GKE oder AKS die richtige Wahl. Für einen HA-Cluster bei GCP oder AWS zahlt ihr 0,10 € (GCP) beziehungsweise 0,20 € (AWS) pro Betriebsstunde. Für Worker Nodes berechnen alle Cloud-Anbieter die üblichen VM-Kosten.
Benutzerfreundlichkeit
Bei der allgemeinen Benutzerfreundlichkeit ist GKE erneut der klare Sieger. Mit weniger als 100 Zeilen Terraform-Code lässt sich ein vollständiger Cluster einrichten, und viele Wartungsaufgaben können automatisch erledigt werden. AKS ist seit der Einführung von Managed Worker Nodes recht einfach einzurichten. Der Betrieb und die Wartung bleiben jedoch schwierig: Worker Nodes müssen nach Updates manuell neu gestartet werden, gemischte Worker-Gruppen verursachen Probleme, und einige Nutzer berichten von zufälligen Systemabstürzen. Wer bereits mit AWS arbeitet, hat vermutlich schon erwartet, dass ein EKS-Cluster viel Fachwissen erfordert und die offizielle Dokumentation nicht immer alle Fragen beantwortet.
Serverless
In letzter Zeit mussten Teams hinter neuen Softwareprojekten entscheiden, ob sie auf Serverless oder Container setzen. Serverless bietet den klaren Vorteil, dass sich Nutzer nicht um die Wartung virtueller Server kümmern müssen. Allerdings gibt es erhebliche Nachteile, darunter geringere Geschwindigkeiten und Vendor Lock-in. Das hat viele davon abgehalten, die neue Technologie zu nutzen. Nachdem GCP im November 2019 Cloud Run, einen Managed Knative Service, veröffentlichte, ging AWS einen Monat später noch einen Schritt weiter und integrierte Fargate Worker Groups in EKS. Während GKE-Cluster derzeit nur den serverless Betrieb von Knative Services ermöglichen, könnt ihr mit Fargate auf EKS jeden Pod ausführen, ohne euch um Worker Nodes kümmern zu müssen.
Fargate für EKS ist nur in drei Regionen verfügbar und eine relativ neue, noch recht unausgereifte Funktion. In unserem Testlauf gab es einige Probleme, bei denen Pods nicht eingeplant wurden. Wir erwarten jedoch, dass AWS diese Probleme sehr bald behebt.
Wartung
EKS scheint der klare Gewinner bei Serverless Kubernetes zu sein, GCP ist jedoch führend bei traditionellen Worker Nodes. Das Aktualisieren traditioneller Worker Nodes kann bei AKS und sogar bei EKS schwierig sein. Mit GKE könnt ihr eure Worker Groups dagegen automatisch und ohne Ausfallzeiten aktualisieren.
Stabilität
Wenn wir sowohl die Release-Zeitpläne als auch die Erfahrungen unserer Berater berücksichtigen, bietet GKE nicht nur die meisten Funktionen – diese sind auch am längsten verfügbar und liefern die ausgereiftesten Lösungen. Im vergangenen Jahr wurden viele Probleme mit AKS gemeldet, der unausgereiftesten der drei Lösungen. EKS liegt irgendwo dazwischen, ist aber deutlich stabiler als AKS.
Unsere Schlussfolgerungen
Für mich ist GKE der klare Gesamtsieger. Die Einrichtung eines Clusters in der GCP-Konsole dauert weniger als 10 Minuten (oder erfordert rund 100 Zeilen Terraform-Code), ist äußerst zuverlässig und aktualisiert sich automatisch. Für einige Nutzer wäre AWS dennoch eine gute Wahl – aufgrund der Vielzahl an Cloud-Funktionen und seiner führenden Rolle bei serverlosen Technologien. Sobald Fargate für EKS stabiler und breiter verfügbar ist, könnte dies AWS einen Wettbewerbsvorteil verschaffen.
Google und Amazon liegen im Wettbewerb um die beste Kubernetes-Lösung auf dem Markt eng beieinander. Ich würde sie der großen Mehrheit der Nutzer empfehlen. Für Unternehmen, die bereits viele Services auf Azure betreiben und Kubernetes mit vielen Windows-Pods benötigen, könnte AKS ebenfalls eine sinnvolle Wahl sein.
Anbieter ergänzen und verändern die Funktionen ihrer Services ständig, und dieser Artikel kann nur eine Momentaufnahme der Situation im Juli 2020 liefern. Wer weiß, wo wir in einem Jahr stehen werden.
- Cloud
Subscribe to our newsletter
Related blogs