Kubernetes (oder K8s) gilt als die beliebteste und ausgereifteste Lösung für die Container-Orchestrierung. Container und Microservices sind in vielen Unternehmen gelebte Realität. Denn sie garantieren eine agile und schnelle Entwicklung neuer Anwendungen sowie kürzere Time-to-Market.
Inhalt
Wofür braucht man Kubernetes?
Wie funktioniert Kubernetes?
Das Tool basiert auf einer hochverfügbaren API, die über Kommandozeile via kube-ctl administriert werden kann. In der Kubernetes-Terminologie spricht man von einer hochverfügbaren Control Plane, Workern (auch Nodes genannt) und Pods. Auf den Workern laufen die Pods, welche mehrere Container beinhalten können. Mehr über den Architekturaufbau und die grundlegende Funktionsweise lesen Sie auch in unserem Beitrag zur Container-Orchestrierung.
Wie läuft die Container-Orchestrierung?
Kubernetes stellt sicher, dass alle in den Pods befindlichen Container auf die Worker ausgerollt werden. Im Falle von Ausfällen oder extremen Lastsituationen verteilt das System die Pods/Container auf die Worker im Cluster.
Für diese Orchestrierung überwacht K8s laufende Container/Pods und deren Konfiguration anhand von Health Checks. Auch die Anzahl der für die verschiedenen Services benötigten Container kontrolliert das System. So stellt es sicher, dass alle benötigten Container jederzeit betriebsbereit sind.
Gibt es Änderungen an der Konfiguration oder ein Update der Software während eines Deployments, kann Kubernetes dies automatisch verteilen (Rollout). Kommt es im Laufe dieses Deployments oder danach zu Störungen, kann der Rollout pausiert oder wieder rückgängig gemacht werden (Rollback).
Zudem setzt Kubernetes die Container eines Deployments selbständig dort ein, wo die entsprechenden Ressourcen zur Verfügung stehen. Dazu können Mindest- und Höchstwerte der Ressourcennutzung auf Basis von CPU und RAM individuell für einzelne Container festgelegt werden.
Durch einen vorgeschalteten Ingress-Controller stellt Kubernetes eigenständig sicher, dass bei Lastspitzen eine gleichmäßige Verteilung des eingehenden Traffics auf die jeweiligen Services stattfindet.
Was ist ein Kubernetes Cluster?
Ein Kubernetes Cluster setzt sich aus mehreren Nodes zusammen, die für eine reibungslose Orchestrierung sorgen. Es ist immer mindestens eine Worker Node sowie eine Master Node enthalten. Der Master behält jederzeit den Status des Clusters im Auge und registriert, welche Anwendungen hier in welchen Container Images ausgeführt werden. Die Worker kümmern sich um die tatsächliche Ausführung von Anwendungen und Workloads.
Ein Kubernetes Cluster kann über unterschiedliche virtuelle und physische Hosts verteilt und in dedizierten Rechenzentren oder in Cloud-Umgebungen betrieben werden. Solche Cluster-Infrastrukturen sind heute wesentlich komplexer als noch vor einigen Jahren. Das ergibt sich auch aus der zunehmenden Nutzung heterogener Infrastrukturen vom Rechenzentrum über Private-, Public- bis zu Hybrid- und Multi-Cloud-Umgebungen. Die Container-Orchestrierung übernimmt dabei die komplexe und effiziente Verwaltung.
Was hat Kubernetes mit DevOps zu tun?
Der Einsatz von Kubernetes unterstützt Unternehmen dabei, ihre DevOps-Bestrebungen umzusetzen, also die Zusammenarbeit von Softwareentwicklung (Dev) und IT-Betrieb (Ops). Früher sorgten oft uneinheitliche Integrations- und Deployment-Mechanismen für Konfliktpotenzial zwischen Entwicklern und IT-Betrieb. In Kubernetes stehen heute vereinheitlichte Mechanismen für Softwareintegration und -deployment bereit. Dadurch ist es möglich, Anwendungen deutlich einfacher und schneller auszurollen, zu skalieren und zu überwachen.
So muss der IT-Betrieb beispielsweise nicht jedes Mal aufwendig neue Systeme aufsetzen, wenn neue Tests anstehen. Oder die Netzwerk- und Speicher-Settings anpassen, wenn die Entwickler zusätzliche Ressourcen benötigen. Die Entwickler wiederum können über Kubernetes ihre Software inklusive aller Abhängigkeiten auf einfache Weise ausrollen und betreiben. Das minimiert den Arbeitsaufwand und löst Probleme, die es bisher oftmals zwischen unterschiedlichen Umgebungen gab – beispielsweise zwischen Testbetrieb und Produktion.
Kubernetes: Vorteile für DevOps
- Entwickler bauen ihre Software einmalig und können sie überall laufen lassen (build once, run everywhere).
- Für Test und Produktion stehen zuverlässige und einheitliche Umgebungen bereit.
- DevOps-Teams konfigurieren einmalig und können dann eine Vielzahl von Services und Anwendungen auf der entsprechenden Umgebung laufen lassen (config once, run anything).
- Der IT-Betrieb verfügt über eine einheitliche Lösung für Entwicklung, Bereitstellung und Skalierung von Software.
Was ist Managed Kubernetes oder Kubernetes as a Service?
Um interne DevOps-Teams zu entlasten, greifen Unternehmen gern auf gemanagte Angebote in der Cloud zurück. Hier übernimmt der Cloud Provider zahlreiche Routineaufgaben rund um die Infrastruktur und erlaubt dem Kunden einen besseren Fokus auf Entwicklung und Innovationen.
So bietet beispielsweise plusserver mit Managed Kubernetes umfassende Dienstleistungen rund um das Setup, die initiale Konfiguration und den Betrieb der Kubernetes-Umgebung inklusive Monitoring und 24/7 Tech-Support. Zudem stellt der Provider sicher, dass die Worker Nodes der Kunden jederzeit verfügbar sind.
Die hauseigene plusserver Kubernetes Engine (PSKE) basiert auf SAP Gardener und ermöglicht es – via API, Kommandozeile oder über eine grafische Oberfläche -, Container Cluster einfach zu verwalten. Auch CI/CD-Pipelines lassen sich mit Hilfe der Lösung einfach realisieren. Zudem haben die Kunden die Wahl, ob sie ihre Container Cluster in der hauseigenen pluscloud open in deutschen Rechenzentren oder bei einem Hyperscaler wie AWS betreiben möchten. Die PSKE ist Multi-Cloud-fähig und erleichtert durch automatische Day-2-Operations der Unternehmens-IT die tägliche Arbeit.
Wie ist Kubernetes entstanden?
Das Open-Source-System wurde ursprünglich von Google entwickelt und zunächst intern bei Google eingesetzt und getestet. Später übergab Google das System für die weitere Entwicklung der Cloud Native Computing Foundation (CNCF). Auch die führenden Public-Cloud-Plattformen wie Microsoft Azure, Google Cloud Platform und Amazon AWS unterstützen das Open-Source-Tool.
Last but not least: Wie spricht man Kubernetes eigentlich aus?
Bei der Aussprache von Kubernetes scheiden sich ein wenig die Geister. Von „so, wie man’s schreibt“ bis hin zu klangvolleren Sprechweisen wie „Kübernets“ ist alles anzutreffen. Laut Wikipedia gilt aber: die deutsche Aussprache ist schlicht [ˌkuːbɐˈneːtəs], im Englischen ist es etwas melodiöser: [ˌkuːbərˈnetiːz].