Kubernetes: Open-Source-Automatisierung für Container
Container sind in der Software so genannte komplette Laufzeitumgebungen, die sich bequem von einem Computer zum nächsten verschieben lassen. Eine stark vereinfachte Erklärung: Hinter dem Begriff der Laufzeitumgebung befindet sich ein kompletter Zustand eines Computersystems. Also Software die verwendet wird inkl. aller untereinander vorhandener Verknüpfungen. Aber im Gegensatz zur Virtualisierung sind diese Container soweit „abstrahiert“, dass sie kein Betriebssystem mehr besitzen. Das ist dahingehend praktisch, falls Software bzw. Dienste wie etwa der eigene Web-Shop oder die CRM-Datenbank umziehen müssen. Statt einer neuen Infrastruktur in Form von Server, Betriebssystem und aller benötigten Programme wird im Zielsystem nur noch der Container aufgesetzt. Dies ist natürlich im großen Maßstab auch extrem kostenrelevant, weswegen wir Carlos Sanchez, Engineer beim Software-Spezialisten CloudBees gefragt haben, uns ein kurzes Q&A zur Open-Source-Infrastrukturumgebung für Container, Kubernetes, zu geben.
Wie würden Sie für die, die nicht wissen, was Kubernetes ist, diese Technologie zusammenfassen?
Kubernetes ist ein Open-Source-System mit dem man die Bereitstellung, Skalierung und den Betrieb von Containern automatisieren kann. Es handelt sich um eine Cluster-Technologie, die es ermöglicht, Container im großen Maßstab zu betreiben und Anwendungen isoliert über große Rechenzentren hinweg auszuführen.
Wie und warum hat aus Ihrer Sicht Kubernetes überhaupt an Bedeutung erlangt und warum brauchen wir Kubernetes?
Die Docker-Technologie hat Container wirklich erfolgreich gemacht. Google betreibt seit einigen Jahren Milliarden von Containern. Kubernetes wiederum ist aus Googles Erfahrungen mit dieser Größenordnung an Container hervorgegangen. Das hat dazu geführt, dass Google die Technologie in die Open-Source-Welt gebracht hat, um anderen Unternehmen das Management von Containern zu erleichtern. Wir brauchen Kubernetes, weil Container für große und kleine Unternehmen immer wichtiger werden und Entwicklungsteams sich damit konfrontiert sehen, in massiv verteilten Umgebungen zu operieren und Software schneller mit DevOps und Continuous Delivery zu liefern. Alles, was in diesem Zusammenhang den effizienten Betrieb und das Management von Containern vereinfacht, wurde von Unternehmen immer wieder verstärkt nachgefragt.
Im Wesentlichen ist Kubernetes ein Open-Source-System – aber wie viele Entwickler tragen tatsächlich einen Code zu einem solchen infrastrukturellen System bei?
Insgesamt sind es derzeit mehr als 1.400 Beteiligte. Beispielsweise gehören Google, Red Hat und Microsoft zu den 1.400. Amazon und Alibaba sind in letzter Zeit zu den größten Unternehmen geworden, die sich dieser Technologie annehmen. Als Überwachungsinstanz dieser Technologie fungiert die Cloud Native Computing Foundation.
Bedeutet die Technologie von Container letztendlich, dass jede einzelne Komponente mehr Rechenschaft ablegen muss, wenn es darum geht, ihren Zweck und ihre Fähigkeit, einen bestimmten Output oder eine bestimmte Funktion zu liefern?
Container werden typischerweise mit Microservices-Architekturen in Verbindung gebracht. Von jeder Komponente wird erwartet, dass sie einen bestimmten Auftrag erfüllt. Die Komponenten haben einen Zweck und sie haben Ein- und Ausgänge, die durch diesen Auftrag und APIs gekennzeichnet sind. Auch muss jede Komponente in der Lage sein, die übertragenen Aufgaben zu erfüllen. Darüber hinaus sollten die Komponenten unabhängig sein und eine sehr spezifische Rolle in der Architektur spielen, in der Hunderte oder Tausende dieser Dienste nebeneinander existieren.
Wann muss man nicht auf Kubernetes zurückgreifen?
Kubernetes ist ein komplexes System. Es ist nur dann sinnvoll, die Technologie einzusetzen, wenn das Unternehmen über die Größenordnung verfügt, das den Einsatz wirklich rechtfertigt. Wenn beispielsweise nur eine oder zwei virtuelle Maschinen verwendet werden oder wenn keine anspruchsvollen Anforderungen gegeben sind, ist der Einsatz von Kubernetes nicht notwendig – Docker sollte dafür ausreichen. Die aktuellen Cloud-Angebote von Google oder Azure machen es wirklich einfach, mit Kubernetes zu beginnen und von dort aus, wenn notwendig, zu skalieren.
Können Sie uns die Kubernetes Pods erklären?
Ein Kubernetes Pod ist im Wesentlichen eine Gruppe von Containern, die zusammen im selben Host laufen. Diese Container haben bestimmte Eigenschaften, z.B. teilen sie sich denselben Netzwerkraum und dieselben Ressourcen.
Wie stellt sich das Fehlerpotential im Hinblick auf den Umgang und die Implementierung von Kubernetes dar?
Das fängt bereits bei der Installation an… Es handelt sich um eine komplexe Software, die ein gewisses Know-how erfordert. Aus diesem Grund greift man in der Regel stattdessen auf Google Kubernetes Engine oder Azure Container Services zurück. Allerdings gibt es eine zunehmende Anzahl von Tools, sowohl im Open Source als auch im kommerziellen Bereich. Tools wie kops, kube-aws oder kubeadm helfen dabei, eine korrekte Installation durchzuführen. Wenn keine der genannten Anwendungen bei der Installation eingesetzt wird, ist es wahrscheinlicher, dass während des Installationsvorgangs ein Fehler unterläuft.
Wie steht CloudBees zu Kubernetes?
Wir haben uns verpflichtet, Kubernetes zu unterstützen. Auch die Branche hat sich eindeutig dafür entschieden und unsere Lösung CloudBees Jenkins Enterprise läuft bereits auf diesem System.
Wie wird sich Kubernetes Ihrer Meinung nach in den nächsten Jahren entwickeln?
Es wird eine zunehmende Zahl und Vielfalt von Kubernetes-Angeboten unterschiedlicher Anbieter geben – nicht nur von Cloud-, sondern auch von OS-Anbietern. Kubernetes wird das De-facto-Betriebssystem für Cluster. Darüber hinaus wird Kubernetes sich zu einem Standard-API entwickeln, das es Unternehmen ermöglicht, Cluster-Architekturen auszuführen. Zurzeit sehen wir, dass Cloud-Anbieter ihre Infrastruktur so modulieren, um Kubernetes ohne Server betreiben zu können. Anbieter werden Kubernetes demnach als Service anbieten, mit dem Unternehmen Container in der Cloud betreiben können, ohne sich wieder um Maschinen kümmern zu müssen.
Beispielsweise hat AWS (Amazon Web Services) bereits angekündigt, ein solches Angebot zu offerieren, und dieser Trend wird sich auch bei anderen Anbietern durchsetzen