Container
12.05.2022, 09:13 Uhr
Wie Unternehmen die Vorteile von Managed Kubernetes nutzen können
Kubernetes hilft beim Management von Cloud-Strukturen. Aber wie erlernt man Kubernetes? Managed Kubernetes kann hier helfen.
(Quelle: dotnetpro)
Developer greifen auf Kubernetes zurück, wenn sie in ihren Cloud-Umgebungen eine wachsende Anzahl an Containern managen (verwalten, warten, veröffentlichen) wollen. Kubernetes hat sich dank einer aktiven Community und zahlreicher nutzender Unternehmen in relativ kurzer Zeit zu einem leistungsfähigen und gleichzeitig komplexen Werkzeug entwickelt. Darüber hinaus haben sich um Kubernetes zahlreiche Ökosysteme gebildet, die zwar viele Vorteile mit sich bringen, gleichzeitig aber die Komplexität weiter hochtreiben.
Somit kann es mitunter schwer sein, spontan eine Kubernetes-Umgebung aufzusetzen.
Während erste Schritte mit Kubernetes – Open Source-Ansatz sei Dank – einfach sind, sind die Feinjustierung eines Clusters und das Management größerer Umgebungen oft schwierig. Insbesondere die Provisionierung von Clustern sowie die Bereitstellung von persistentem Speicher erfordern Infrastrukturen im Hintergrund, Kubernetes liefert hierfür nur die entsprechenden Werkzeuge. Eine wachsende Anzahl an Containern und Deployments lässt zudem den Bedarf an Infrastrukturen und Ressourcen steigen.
Unterstützung durch die Cloud
Aus diesen Gründen wollen viele User Kubernetes nicht im eigenen Rechenzentrum, sondern der Cloud betreiben. Die Cloud bietet hier ihre üblichen Vorteile: Die stets aktuellste Version ist auf einer gemanagten und beliebig skalierbaren, hochverfügbaren Infrastruktur verfügbar. Entwickler:innen müssen sich daher nicht mit Aktualisierungen abmühen. Bezahlen müssen Unternehmen dabei meist nur die Cloud-Ressourcen, die tatsächlich in Benutzung sind. Die Kosten bleiben so weitgehend transparent und kalkulierbar.
Kubernetes benötigt keine dedizierte Betriebssystemumgebung, die Gefahr eines Vendor-Lock Ins ist somit gering. Steht ein Anbieterwechsel an, weil man beispielsweise ein besseres Angebot gefunden hat, lässt sich der gesamte Workload schnell und ohne großen Aufwand transferieren.
Kubernetes benötigt keine dedizierte Betriebssystemumgebung, die Gefahr eines Vendor-Lock Ins ist somit gering. Steht ein Anbieterwechsel an, weil man beispielsweise ein besseres Angebot gefunden hat, lässt sich der gesamte Workload schnell und ohne großen Aufwand transferieren.
Die Einbindung der eigenen Anwendungen und Microservices ins Kubernetes-Cluster ist bei solchen Lösungen meist einfach und in wenigen Schritten erledigt:
Über die Webanwendung können Admins das Cluster erstellen und konfigurieren, um benötigte Ressourcen wie CPU-Kerne, Arbeitsspeicher und Storage festzulegen. Hier gibt es oftmals vorgefertigte Konfigurationen oder User können sich ihr Cluster bedarfsgerecht selbst zusammenstellen. Die Provisionierung des Clusters übernimmt die Lösung im nächsten Schritt. Für die Konfiguration bringt Kubernetes eine API mit, die über HTTPS oder über die Kommandozeile kubectl direkt angesprochen werden kann. Ist das Cluster provisioniert stellt es eine Konfig-Datei zur Anmeldung in kubectl (und gegebenenfalls Provider-eigenen Frameworks) zur Verfügung.
Im nächsten Schritt wird ein Paketmanager für Kubernetes installiert, etabliert hat sich beispielsweise Helm, über den Anwender:innen Packages suchen, bewerten und über kubectl deployen können.
Das richtige Angebot in der Masse finden
Potenzielle Provider gibt es massig, die Auswahl des passenden Service fällt oftmals schwer, da die Angebote mitunter stark differieren. Die meisten Anbieter beispielsweise bieten die Möglichkeit, alles außer der Installation des Kubernetes-Clusters selbst zu machen. Reichen Kubernetes-interne Funktionen, kommt ein reines Hosting-Angebot in Frage. Selbst ohne zusätzliche Services oder Unterstützung kommen auf Unternehmen nun aber Kosten zu, die bei einer Installation in der eigenen On-Premises-Umgebung deutlich geringer ausgefallen wären. Reines Hosting ist deshalb für wenige Anwendungsfälle geeignet. Weit attraktiver sind gemanagte Angebote. Auch hier ist das Angebot vielfältig und reicht von Ökosystemen großer Hyperscaler über Container-as-a-Service-Packages bis hin zu Managed-Kubernetes von Cloud-Native-Providern. Sich die Angebote verschiedener Anbieter im Detail anzusehen ist deshalb ein Muss.
Diese Komponenten sollten in einer solchen Plattform enthalten sein:
Einbindung von Service Mesh
Einbindung von Service Mesh
Container-basierte Microservice-Strukturen werden schnell komplex. So können Anwendungen aus mehreren hundert Services bestehen, so dass es schwer wird, den Überblick über die Interaktionen zwischen den Komponenten zu behalten. Viele Entwickler:innen nutzen deshalb ein Service Mesh, das die Kommunikation in eine dedizierte Schicht auslagert. Dies verringert die Komplexität und die Microservices selbst werden schlanker. So kann es sehr hilfreich sein, wenn die gewählte Kubernetes-Plattform die nahtlose Integration von Service Meshes anbietet.
Ausgeglichene Möglichkeiten zur (Vor-)Konfiguration
Kubernetes ist ein mächtiges Werkzeug und bietet viele Konfigurationsmöglichkeiten. Eine Plattform zum Management von Kubernetes sollte daher möglichst beides in sich vereinen: passende Voreinstellungen und Möglichkeiten, jeden Parameter bei Bedarf selbst konfigurieren zu können. Häufig gewählte Optionen wie Load Balancer, Persistent Storage und Scheduler können etwa voreingestellt sein. Usern bietet sich die Möglichkeit, schnell zu starten und die Konfiguration danach sukzessive anzupassen.
Container Registry
Bevor eine Referenzierung eines Images in einem Kubernetes Pod stattfinden kann, muss es in einer Container Registry vorliegen. Dabei kann es sich um eine individuell konfigurierte Registry oder die eines Drittanbieters handeln. Welche Funktionen die Container Registry haben sollte, hängt von der Infrastruktur des Kubernetes-Clusters ab sowie von der Komplexität des Entwicklungsprojekts. Die passenden APIs sind dabei natürlich eine Grundvoraussetzung, bei größeren Teams kann eine rollenbasierte Zugriffssteuerung wichtig sein. Zudem sind für die Registry Fähigkeiten zu Schwachstellen-Scans, die Unterstützung mehrerer verschiedener Formate und Artefakte sowie unkomplizierte Skalierungsmöglichkeiten von Vorteil.
Automatisches Provisioning und Deprovisioning von Cloud-Infrastrukturen
Cloud-Services bieten eine flexibel skalierbare Infrastruktur und es ist das Wesen eines gemanagten Service, Prozesse zu automatisieren. Die automatische Provisionierung ist daher – als Scale-In oder als Scale-Out – eine Grundfunktion, die jede Kubernetes-Plattform erfüllen sollte. Kubernetes kommt als Orchestrierungssoftware letztendlich dann zum Einsatz, wenn es darum geht, Container zu skalieren und Container-basierte Anwendungen in Clustern bereitzustellen. Wenn Kubernetes skaliert, braucht es IT-Infrastruktur, die man nach Bedarf in Betrieb nehmen und wieder abstellen kann. Besonders hybride Modelle können davon profitieren, bei Bedarf auf Cloud-Ressourcen zugreifen zu können.
Fazit
Zusammenfassend lässt sich sagen, dass Kubernetes ein komplexes Werkzeug ist, das einiges an Spezial-Know-how bei Einrichtung und Betrieb erfordert. Entwickler:innen sollten deswegen auf Managed-Kubernetes-Lösungen zurückgreifen, da sie die Arbeit durch vorkonfigurierte Basics, wie Cluster-Ausstattung, Storage und Load Balancer vereinfachen. Der Betrieb der Kubernetes-Plattform durch einen Cloud-Provider ist zudem komfortabler und weitgehend automatisch skalierbar. Allerdings ist die Wahl der passenden Plattform nicht einfach – das Angebot am Markt ist umfangreich und divers, die anfallenden Kosten variieren stark. Neben Hyperscalern haben sich spezialisierte, lokale Cloud-Anbieter etabliert, die häufig bessere Leistungen beim Support und die flexibleren Lösungen bereitstellen.
Henrik Hasenkamp ist Gründer und CEO von gridscale.
Quelle: Henrik Hasenkamp