Der Begriff Kubernetes beschreibt ein portables, Open-Source-basiertes System zur Containerorchestrierung bzw. eine Plattform zur Verwaltung containerisierter Anwendungen.
Um Kubernetes (auch „K8s“ oder einfach nur „Kube“ genannt) zu verstehen, müssen Sie zunächst wissen, was Containerorchestrierung ist. Eine Containerarchitektur teilt die verschiedenen Services, die eine Anwendung ausmachen, in separate Container auf, die dann in einem Cluster physischer oder virtueller Maschinen bereitgestellt werden. Doch wenn eine solche Containerarchitektur eingesetzt wird, müssen diese Container auch orchestriert werden – und zwar mit einem Tool, das die Bereitstellung, Skalierung, Konnektivität und Verfügbarkeit der Container verwaltet und automatisiert.
Kubernetes ist ein System zur Containerorchestrierung, das die Organisation und Bereitstellung von Containerprozessen verwaltet und automatisiert. Das von Google entwickelte Kubernetes wurde 2014 zum Open-Source-Projekt. Seither kann Kubernetes mit nur wenigen Einschränkungen von jedem verwendet werden.
Kubernetes ist bei Unternehmen äußerst beliebt, da das Tool zahlreiche Vorteile bietet. Hier die drei wichtigsten Vorteile von Kubernetes:
Automatisierung spielt eine immer zentralere Rolle für Geschäftsprozesse. Je mehr Prozesse Unternehmen automatisieren, desto weiter steigen Effizienz und Produktivität, wodurch sich Mitarbeiter auf wichtigere Aufgaben konzentrieren können. Kubernetes ermöglicht Unternehmen die Automatisierung des alltäglichen Betriebs ihrer Containerarchitektur. So können sie gewährleisten, dass Mitarbeiter ihre Zeit möglichst effizient nutzen. Darüber hinaus steigt mit der Automatisierung des Betriebs auch die Genauigkeit, da keine Gelegenheiten für menschliche Fehler entstehen. Die Betriebsautomatisierung ist also ein äußerst leistungsstarkes Werkzeug.
Die Zeit von Entwicklern ist eine wertvolle Ressource. Deshalb profitieren Unternehmen, wenn sich ihre Entwickler auf wichtige Arbeiten konzentrieren können, während Tools Routineaufgaben übernehmen. Indem die Infrastruktur mit Kubernetes abstrahiert wird, kann Kubernetes Computing, Konnektivität und Speicher managen. Kubernetes verwaltet diese Aufgaben sowie die Architektur, sodass Entwickler mehr Zeit haben, sich auf die eigentlichen Anwendungen zu konzentrieren.
Kubernetes führt Zustandsprüfungen für Entwickler durch, um zu gewährleisten, dass alle Container ordnungsgemäß funktionieren. Das System kann außerdem Container neu starten, die nicht richtig funktionieren oder vollständig ausfallen. Doch Kubernetes übernimmt nicht nur die wichtige Verwaltung des Containerzustands, sondern gewährleistet auch, dass Benutzern nur voll funktionsfähige und verfügbare Services bereitgestellt werden. Wenn etwas nicht funktioniert, bekommen Benutzer es nicht zu Gesicht, bis es von Kubernetes zurückgesetzt wurde.
Bei Kubernetes kommen verschiedene Architekturelemente zum Einsatz – einige von ihnen werden vielen Entwicklern vertraut sein, andere gibt es so nur bei Kubernetes. Im Folgenden finden Sie eine Liste von Kubernetes-Begriffen, die Sie kennen sollten.
Die höchste Ebene der Kubernetes-Organisation ist das Cluster. „Cluster“ beschreibt eine Gruppe von Maschinen, die Kubernetes ausführen, sowie alle Container, die von dem Cluster verwaltet werden. Bei Kubernetes besitzt das Cluster einen Master, also eine Maschine, die alle anderen Maschinen im Cluster steuert. Hierbei kann immer nur ein Master den Scheduler und den Controller-Manager ausführen.
Jedes Kubernetes-Cluster enthält Knoten, die nächste Ebene in der Organisationshierarchie. Bei Knoten kann es sich um die physischen Maschinen selbst oder um virtuelle Maschinen (VMs) handeln. Kubernetes übernimmt die Bereitstellung von Anwendungen innerhalb dieser Knoten – egal, worauf diese Anwendungen ausgeführt werden.
Innerhalb der Knoten gibt es Pods. Pods werden von Knoten ausgeführt. Sie sind das grundlegendste Objekt, das in Kubernetes erstellt und verwaltet werden kann. Jeder Pod stellt eine einzige Instanz einer in Kubernetes ausgeführten Anwendung dar und verfügt über mindestens einen Container. Innerhalb der Pods startet, stoppt und repliziert Kubernetes alle Prozesse in diesen Containern. Mit Pods ist es möglich, Benutzern statt der verschiedenen Container nur die eigentliche Anwendung anzuzeigen.
Je nach Benutzeranfrage werden Pods in Knoten erstellt und gelöscht, um die Anforderungen der Anfrage zu erfüllen. Aufgrund der Komplexität der Pod-Verwaltung nutzt Kubernetes einen Controller, um Pods zu erstellen, hochzufahren und zu löschen.
Mit Kubernetes-Services ist es möglich, dass sich das Front-End auch bei ständigen Anpassungen der Back-End-Pods nicht verändert, sondern eine gleichbleibende Benutzer-Experience bereitstellt. Ein Service beschreibt, wie der Zugriff auf eine Gruppe von Pods über das Netzwerk erfolgt. Indem der Pod-Zugriff auf diese Weise gesteuert wird, bleibt die Anwendung für den Benutzer gleich, selbst wenn Pods am Back-End erstellt oder gelöscht werden.
Richtlinien geben vor, was ein Pod innerhalb des Systems tun kann und was nicht. So können Kubernetes-Richtlinien beispielsweise beschränken, wie viel CPU, RAM oder Speicherplatz ein Pod nutzen kann, damit er nicht zu viele Ressourcen beansprucht. Die Einschränkungsoptionen innerhalb der Richtlinien hängen davon ab, was eingeschränkt wird. Beim Arbeitsspeicher nutzen Richtlinien absolute Bedingungen wie „100 MB“. Bei CPUs hingegen werden relative Bedingungen wie „50 %“ eingesetzt.
Die korrekte Einrichtung von Kubernetes ist eine wichtige Aufgabe. Nachdem das erledigt ist, besteht der nächste Schritt im externen Zugriff auf Cluster. Hierfür stehen verschiedene Tools zur Verfügung, doch am häufigsten kommt Ingress zum Einsatz. Ingress ist eine API, die den externen Zugriff auf Cluster über HTTP verwaltet. Die Einrichtung von Ingress kann kompliziert sein, doch einmal eingerichtet, bietet es eine einfache, aber leistungsstarke Möglichkeit, extern auf die Services eines Clusters zuzugreifen.
Nachdem alle Kubernetes-Komponenten eingerichtet wurden, braucht es eine Methode, um sie alle zu verwalten. Das Kubernetes-Dashboard ist eine webbasierte Benutzeroberfläche, mit der Entwickler sämtliche Clusterressourcen verwalten und etwaige Probleme beheben können. Das Dashboard muss separat installiert werden, da die Installation nicht automatisch erfolgt, doch die Einrichtung ist ebenso einfach wie die Verwendung.
Oftmals verfügen Unternehmen über Informationen, die geheim bleiben müssen. Kubernetes bietet eine Funktion, die zusätzliche Sicherheit für vertrauliche Informationen bietet. Ein Kubernetes-Geheimnis (bzw. Kubernetes-Secret) ist ein spezieller Containertyp mit eingeschränktem Zugriff, von dem Kubernetes weiß, dass er vertrauliche Daten enthält.
Ein Geheimnis ist nur zugänglich, wenn es für Pods im Cluster erforderlich ist. Alle anderen Pods, die möglicherweise Sicherheitsrisiken mit sich bringen könnten, erhalten keinen Zugriff. Allerdings schränkt ein Geheimnis nicht ein, welche Benutzer auf Informationen zugreifen dürfen. Stattdessen stellt es Anwendungen nur die Daten bereit, die sie brauchen, um zu funktionieren, gewährt also keinen uneingeschränkten Zugriff auf diese Daten.
kubectl ist eine Befehlszeilenschnittstelle (CLI, Command-Line Interface), mit der Vorgänge in Clustern verwaltet werden. Diese CLI kommuniziert mit der Kubernetes-API. Für kubectl wird eine standardisierte Syntax verwendet: kubectl [Befehl] [TYP] [NAME] [Flags].
Manche Benutzer müssen über kleinere Geräte auf Kubernetes zugreifen – mit einem Minikube ist genau das möglich. Minikube ist ein Open-Source-Tool, mit dem Benutzer Kubernetes auf einem Laptop oder einer lokalen Maschine ausführen können. Hierzu reduziert Minikube die Größe und Komplexität von Kubernetes auf ein Ein-Knoten-Cluster. Mit Minikube erhalten nicht nur Entwickler, sondern auch IT-Mitarbeiter und Mitglieder der Chefetage Zugang zu leistungsstarken Kubernetes-Funktionen über ein komfortables Gerät. Minikube funktioniert am besten, wenn auch kubectl installiert ist.
Die primäre Aufgabe von Kubernetes besteht darin, Anwendungen zu erstellen, zu verwalten und bereitzustellen. Aber wie erreicht Kubernetes das? Entwickler richten Kubernetes ein, definieren ein Cluster und erstellen Knoten. Daraufhin erzeugt und entfernt Kubernetes die nötigen Pods, um zu gewährleisten, dass Benutzer Anwendungen reibungslos ausführen können. Um Kubernetes zu nutzen und zu verwalten, können Entwickler mit Minikube auf eine lokale Maschine zugreifen, mit Ingress den externen Zugriff managen oder über das Dashboard auf andere Tools zugreifen.
Welche Möglichkeiten bietet Kubernetes Unternehmen? Mit Kubernetes lassen sich einige wichtige Ziele erreichen:
- Container über mehrere Hosts hinweg orchestrieren
- Anwendungen skalieren
- Integrität von Anwendungen prüfen
- Bereitstellung steuern und automatisieren
- Speicher zur Prozessausführung verwalten und hinzufügen
- Hardwarespeicherplatz zur Ausführung von Unternehmensanwendungen maximieren
- Anwendungen überall bereitstellen
- Entwicklungsproduktivität steigern
In Gesprächen über Kubernetes werden oft auch andere Projekte erwähnt. Jedes von ihnen ist ein eigenständiges Projekt, das unterschiedliche Aufgaben für Entwickler erledigen kann. Diese anderen Projekte werden oft mit Kubernetes verwechselt oder sogar als das Gegenteil dargestellt. Doch diese Projekte sind mit Kubernetes kompatibel.
Docker gab es schon vor Kubernetes, und es hat sogar zur Entwicklung von Kubernetes beigetragen. Docker ist ein Tool, mit dem Entwickler alle Komponenten, die zum Ausführen einer Anwendung erforderlich sind, in sogenannte „Boxes“ aufteilen können, die gespeichert und nach Bedarf geöffnet werden können. Docker ist eine Methode, um Container zu erstellen. Doch nachdem Anwendungen in „Boxes“ gespeichert wurden, muss es möglich sein, diese Container zu verwalten und zu gewährleisten, dass die richtigen Boxes gespeichert und geöffnet werden.
Und genau dafür wurde Kubernetes entworfen. Kubernetes wurde als Tool entwickelt, das Containeranwendungen organisieren und verwalten kann – Anwendungen, wie sie von Docker erstellt werden. Ziel bei der Entwicklung war es, dass Kubernetes Container an die richtigen Orte führt, weshalb das System mit dem griechischen Wort für „Kapitän“ benannt ist.
Kubernetes und Docker sind keine Konkurrenten. Kubernetes kann mit oder ohne Docker verwendet werden, da beide Tools in der Verwaltung containerbasierter Anwendungen unterschiedliche Rollen übernehmen. Doch sie können auch kombiniert werden, um zusätzliche Vorteile zu erzielen. So kann Kubernetes Docker verwenden, um containerbasierte Anwendungen bereitzustellen und zu verwalten.
Mesos ist ein weiteres Projekt, dessen Name oft fällt, wenn es um Kubernetes geht. Mesos ist ein Apache-Projekt, das als Reaktion auf Google Borg entwickelt wurde. Mesos bietet ebenfalls Services zur Containerorchestrierung, doch das Programm unterstützt neben containerisierten Komponenten auch nicht containerisierte. Dank dieses breiten Spektrums können viele Programme in Mesos ausgeführt werden, darunter auch Kubernetes.
Die Einführung von Kubernetes ist in der Regel Teil eines breiteren Programms, beispielsweise zur Transformation der Anwendungsumgebung oder zur Umstellung auf ein cloudnatives System, und zwar durch Bereitstellung neuer Anwendungen und Services. ServiceNow verfügt über verschiedene Angebote, die Sie bei dieser Transformation unterstützen können, darunter Änderungsmanagement, Beobachtbarkeit und Cloud-Management – so können Sie genau den richtigen Kubernetes-Ansatz für Ihr Unternehmen finden.
Die Einführung von Kubernetes geht Hand in Hand mit modernen Entwicklungspraktiken wie DevOps. Große und stark regulierte Unternehmen müssen beim Releaseprozess für Updates in der Cloud stets die Governance im Blick behalten. Doch es kommen noch weitere Schwierigkeiten hinzu: die Vielzahl unterschiedlicher Komponenten sowie die Geschwindigkeit und Vergänglichkeit der Codebereitstellung in containerbasierten Architekturen.
Wir verbinden die Arbeit und die Services, die über ServiceNow verwaltet werden, mit dem Entwicklungsprozess, um automatisiertes Änderungsmanagement, End-to-End-KPIs, Einblicke in Flow-Metriken sowie Audits zu ermöglichen. Darüber hinaus beinhaltet unsere Lösung ITSM Pro eine spezielle Komponente namens DevOps Config. Sie bietet Kontrollen und Einblicke speziell für die breite Palette von Konfigurationsaktivitäten, die bei der Bereitstellung eines Service in der Cloud zum Einsatz kommen. Und diese Kontrollen und Einblicke kann sich Ihr Unternehmen bei der Implementierung von Kubernetes zunutze machen.
Kubernetes verbessert nicht nur die Funktionalität von Anwendungen, sondern auch die Art und Weise, wie Unternehmen containerbasierte Anwendungen verwalten. Unternehmen müssen jedoch einige Herausforderungen meistern, um das Maß an Beobachtbarkeit zu erreichen, das für einen erfolgreichen Betrieb erforderlich ist. ServiceNow Cloud Observability bietet die benötigte Beobachtbarkeit und die erforderlichen Einblicke in Prozesse und Konfigurationen, um Ihnen die Implementierung von Kubernetes zu erleichtern.
Je intensiver Ihr Unternehmen die Cloud nutzt, desto wichtiger ist das richtige Cloud-Management. IT Operations Management von ServiceNow unterstützt Sie hierbei und ermöglicht gleichzeitig die Implementierung von Kubernetes.
Erfahren Sie mehr über ITOM und darüber, wie Ihr Unternehmen mit der Lösung Kubernetes implementieren und zur Anwendungsverwaltung nutzen kann.