Jump to section

Kubernetes (k8s) erklärt

URL kopieren

Kubernetes, auch k8s genannt (beginnt mit k, hat 8 Zeichen, endet mit s), oder kurz „kube“ ist eine Open Source-Plattform, die den Betrieb von Linux®-Containern automatisiert. Dabei werden viele der manuellen Prozesse, die mit der Bereitstellung und Skalierung von containerisierten Anwendungen einhergehen, eliminiert. Mit anderen Worten: Sie können Gruppen von Hosts, auf denen Linux-Container laufen, in Clustern zusammenfassen und diese mit Kubernetes auf einfache und effiziente Weise verwalten. Diese Cluster können Hosts in Public, Private oder Hybrid Clouds haben. Aus diesem Grund ist Kubernetes die ideale Plattform für das Hosting cloudnativer Anwendungen, die eine schnelle Skalierung benötigen (wie z. B. für das Daten-Streaming in Echtzeit mit Apache Kafka).

Kubernetes wurde ursprünglich von Google-Ingenieuren entwickelt und konzipiert. Google war einer der ersten Unterstützer der Linux-Container-Technologie und hat die Öffentlichkeit darüber informiert, dass alles bei Google in Containern ausgeführt wird. (Dies ist die Technologiebasis der Google Cloud Services.) Google generiert über 2 Milliarden Container-Bereitstellungen pro Woche, und zwar alle auf einer internen Plattform: Borg. Borg ist der Vorgänger von Kubernetes und alle Erfahrungswerte aus seiner Entwicklung im Laufe der Jahre bilden die Grundlage der heutigen Kubernetes-Technologie.

Anekdote am Rande: Die sieben Speichen des Kubernetes-Logos beziehen sich auf den ursprünglichen Projektnamen „Project Seven of Nine“ (Verweis auf den Mensch-Borg-Hybrid in der Star Trek-Serie „Voyager“).

Red Hat® war einer der ersten Partner von Google bei der Entwicklung von Kubernetes, selbst vor der Veröffentlichung, und ist mittlerweile der zweitgrößte Unterstützer des Kubernetes Upstream-Projekts. Google spendete das Kubernetes-Projekt 2015 der neu gegründeten Cloud Native Computing Foundation.

Der Hauptvorteil von Kubernetes liegt darin, dass Ihnen damit eine Plattform zur Verfügung steht, mit der Sie Container auf Clustern von physischen oder virtuellen Maschinen planen und ausführen können. Das ist besonders der Fall, wenn Sie Ihre App-Entwicklung für die Cloud optimieren möchten. Allgemeiner gesagt, können Sie mit Kubernetes eine Infrastruktur in Ihren Produktionsumgebungen implementieren, die komplett containerbasiert ist und auf die Sie sich verlassen können. Und weil sich bei Kubernetes alles um die Automatisierung von operativen Aufgaben dreht, können Sie damit praktisch dasselbe tun wie auf anderen Anwendungsplattformen oder Managementsystemen, aber eben für Ihre Container.

Mit Kubernetes können Sie:

  • Container über mehrere Hosts orchestrieren
  • Hardware besser nutzen, um die notwendigen Ressourcen für den Betrieb Ihrer Unternehmensanwendungen zu maximieren
  • Anwendungsbereitstellungen und -aktualisierungen steuern und automatisieren
  • Storage aufsetzen und hinzufügen, um zustandsbehaftete Apps auszuführen
  • Containerisierte Anwendungen und deren Ressourcen auf die Schnelle skalieren.
  • Services deklarativ verwalten, um zu gewährleisten, dass die bereitgestellten Anwendungen genau nach Plan ausgeführt werden
  • Mithilfe von Autoplacement, Autorestart, Autoreplication und Autoscaling eine Zustandsprüfung Ihrer Apps und ggf. eine Eigenreparatur durchführen

Kubernetes baut jedoch für eine vollständige Bereitstellung dieser orchestrierten Dienste auf weitere Projekte. Durch die zusätzliche Nutzung weiterer Open Source-Projekte können Sie die Leistung von Kubernetes vollständig realisieren. Zu den notwendigen Komponenten gehören unter anderem:

  • Registry − über Projekte wie Atomic Registry oder Docker Registry
  • Networking − über Projekte wie OpenvSwitch und intelligentes Edge Routing
  • Telemetrie − über Projekte wie Heapster, Kibana, Hawkular und Elastic
  • Sicherheit − über Projekte wie LDAP, SELinux, RBAC sowie OAUTH mit Multi-Tenancy Layers
  • Automatisierung − durch Ansible® Playbooks für Installationszwecke und Cluster Lifecycle Management
  • Services über einen reichhaltigen Katalog an vordefinierten Inhalten populärer App-Muster

Wie bei jeder Technologie gibt es einige spezielle Fachbegriffe, die den Zugang erschweren können. Hier finden Sie eine Liste der häufigsten Begriffe, mit denen Sie Kubernetes besser verstehen können.

Control Plane: Die Maschine, die die Kubernetes-Knoten kontrolliert. Hier werden alle Task-Zuordnungen ausgegeben.

Nodes: Diese Maschinen führen die angeforderten und zugewiesenen Tasks aus. Diese werden von der Kubernetes-Control-Plane kontrolliert.

Pod: Eine Gruppe aus einem oder mehreren Containern, die in einem einzelnen Knoten implementiert wurde. Alle Container in einem Pod teilen sich die IP-Adresse, IPC, Hostname und andere Ressourcen. Mit Pods lassen sich Netzwerk und Storage weg vom zugrundeliegenden Container abstrahieren. Auf diese Weise lassen sich die Container im Cluster einfacher verschieben.

Replication Controller: Dieses Tool kontrolliert, wie viele identische Kopien eines Pods irgendwo auf dem Cluster laufen sollen.

Service: Damit werden Arbeitsdefinitionen von den Pods entkoppelt. Kubernetes Service-Proxies befördern Serviceanfragen automatisch an den richtigen Pod, egal wo sich dieser im Cluster befindet und selbst wenn er ersetzt wurde.

Kubelet: Dieser Dienst läuft auf den Knoten, liest die Container-Manifeste aus und stellt sicher, dass die definierten Container gestartet und in Betrieb sind.

kubectl: Dies ist das Befehlszeilen-Konfigurationstool für Kubernetes.

Kubernetes Cluster diagram

 

Ein funktionierendes Kubernetes-Deployment wird als Cluster bezeichnet. Man kann sich ein Kubernetes-Cluster in zwei Teilen vorstellen: die Control Plane und die Rechenmaschinen bzw. Nodes.

Jeder Node ist seine eigene Linux®-Umgebung und kann entweder eine physische oder eine virtuelle Maschine sein. Auf jedem Node werden Pods ausgeführt, die sich aus Containern zusammensetzen.

Die Control Plane ist für die Aufrechterhaltung des gewünschten Zustands des Clusters verantwortlich, z. B. welche Anwendungen ausgeführt werden und welche Container-Images sie verwenden. Die Compute-Maschinen führen die Anwendungen und Workloads aus.

Kubernetes läuft auf einem Betriebssystem (z. B. Red Hat® Enterprise Linux®) und interagiert mit Pods von Containern, die auf den Nodes laufen.

Die Kubernetes-Control-Plane nimmt die Befehle eines Administrators (oder DevOps-Teams) entgegen und leitet diese Anweisungen an die Rechenmaschinen weiter.

Diese Weiterleitung arbeitet mit einer Vielzahl von Diensten, um automatisch zu entscheiden, welcher Node am besten für die Aufgabe geeignet ist. Anschließend werden Ressourcen zugewiesen und die Pods in diesem Node werden mit der angeforderten Arbeit betraut.

Der gewünschte Zustand eines Kubernetes-Clusters definiert, welche Anwendungen oder andere Workloads ausgeführt werden sollen, welche Images sie verwenden, welche Ressourcen ihnen zur Verfügung gestellt werden sollen und ähnliche Konfigurationsdetails.

Aus Sicht der Infrastruktur ändert sich wenig daran, wie Sie Container verwalten. Die Kontrolle über die Container findet lediglich auf einer höheren Ebene statt, was Ihnen eine bessere Kontrolle ermöglicht, ohne dass Sie jeden einzelnen Container oder Node mikromanagen müssen.

Ihre Arbeit besteht darin, Kubernetes zu konfigurieren und Nodes, Pods und die Container darin zu definieren. Kubernetes übernimmt die Orchestrierung der Container.

Wo Sie Kubernetes ausführen, bleibt Ihnen überlassen. Dies kann auf Bare-Metal-Servern, virtuellen Maschinen, öffentlichen Cloud-Anbietern, in Private Clouds und Hybrid Cloud-Umgebungen sein. Einer der Hauptvorteile von Kubernetes ist, dass es auf vielen verschiedenen Arten von Infrastrukturen funktioniert.

Echte Produktions-Apps erstrecken sich über mehrere Container. Diese Container müssen auf mehreren Server-Hosts bereitgestellt werden. Sicherheit für Container ist mehrschichtig und kann daher sehr komplex sein. Und genau hier kann Kubernetes helfen. Es liefert Ihnen die Orchestrierungs- und Managementfunktionen, die Sie für eine sehr große Container-Bereitstellung mit diesen Workloads benötigen. Mit der Kubernetes-Orchestrierung können Sie Anwendungsservices entwickeln, die sich über mehrere Container erstrecken, diese Container als Cluster planen, skalieren und ihren Zustand über einen längeren Zeitraum überwachen. Mit Kubernetes machen Sie die ersten echten Schritte hin zu einer besseren IT-Sicherheit.

Kubernetes muss außerdem mit Networking-, Storage-, Sicherheits-, Telemetrie- und anderen Services integriert werden, damit eine umfassende Container-Infrastruktur vorliegt.

Kubernetes explained - diagram

Das ist natürlich davon abhängig, wie Sie Container in Ihrer Umgebung verwenden. In einer rudimentären Anwendung von Linux-Containern werden diese als effiziente, schnelle virtuelle Maschinen behandelt. Sobald diese Umgebung auf den Umfang einer Produktionsumgebung und mehrere Anwendungen skaliert wird, benötigen Sie die Leistung mehrerer, nebeneinander lokalisierter Container, die die einzelnen Services bereitstellen. Das erhöht die Anzahl der Container in Ihrer Umgebung erheblich und mit der Anhäufung von Containern wächst auch die Komplexität.

Kubernetes behebt eine Vielzahl der allgemeinen Probleme, die durch die wachsende Anzahl von Containern entstehen können, indem es sie in sogenannten „Pods“ zusammenfasst. Diese Pods fügen den gruppierten Containern eine Abstraktionsebene hinzu, die Ihnen hilft, Workloads zu planen und diesen Containern die notwendigen Dienste wie Vernetzung und Storage zu liefern. Mithilfe anderer Bestandteile von Kubernetes können Sie die Last über diese Pods verteilen und sicherstellen, dass die richtige Anzahl an Containern für Ihre Workloads ausgeführt wird.

Mit der richtigen Implementierung von Kubernetes und der Unterstützung anderer Open Source-Projekte wie Open vSwitchOAuth und SELinux können Sie alle Teile Ihrer Container-Infrastruktur orchestrieren.

Kubernetes ist eine Open Source-Technologie. Es existiert keine formelle Supportstruktur für diese Technologie oder zumindest keine, der man seinen Geschäftserfolg anvertrauen würde. Wenn während der Produktion Probleme bei der Implementierung von Kubernetes auftreten würden, wären Sie sicher nicht sonderlich zufrieden. Gleiches gilt für Ihre Kunden.

Und genau hier kommt Red  Hat® OpenShift® ins Spiel. OpenShift ist Kubernetes für Unternehmen und noch vieles mehr. OpenShift integriert alle zusätzlichen Technologiekomponenten, die Kubernetes leistungsstark und unternehmenstauglich machen, darunter Registry, Networking, Telemetrie, Sicherheit, Automatisierung und Services. Mit OpenShift können Ihre Ingenieure neue containerisierte Apps erstellen, sie hosten und in der Cloud mit der entsprechenden Skalierbarkeit, Kontrolle und Orchestrierung bereitstellen, die aus einer guten Idee schnell und einfach Geschäftsmöglichkeiten schafft.

Und das Beste ist: OpenShift wird von Red Hat, dem weltweit führenden Anbieter von Open Source-Lösungen unterstützt und entwickelt.

Was ist mit Docker?

Die Docker-Technologie tut immer noch das, wofür sie entwickelt wurde. Wenn Kubernetes einen Pod für einen Knoten einplant, gibt Kubelet auf diesem Knoten Docker die Anweisung, die spezifischen Container zu starten. Kubelet erfasst dann kontinuierlich den Status dieser Container von Docker und sammelt diese Informationen in der Control Plane. Docker zieht Container auf diesen Knoten und startet und stoppt diese Container ganz normal. Der Unterschied ist, dass ein automatisiertes System Docker auffordert, diese Dinge zu tun, anstelle eines Administrators, der dies manuell auf allen Knoten für alle Container tut.

Weiterlesen

ARTIKEL

Vergleich zwischen Containern und VMs

Linux-Container und virtuelle Maschinen (VMs) sind paketierte Computing-Umgebungen, die verschiedene IT-Komponenten vereinen und vom Rest des Systems isolieren.

ARTIKEL

Was ist Container-Orchestrierung?

Mithilfe der Container-Orchestrierung werden Deployment, Management, Skalierung und Vernetzung von Containern automatisiert.

ARTIKEL

Was ist ein Linux-Container?

Ein Linux-Container besteht aus Prozessen, die vom System isoliert sind und auf einem eigenen Image ausgeführt werden, das alle benötigten Dateien zur Unterstützung der Prozesse bereitstellt.

Mehr über Container erfahren

Produkte

Eine Plattform, die es Ihnen ermöglicht, Unternehmensanwendungen schnell und effizient über die von Ihnen gewünschte Infrastruktur bereitzustellen.

Ressourcen

Analystenbericht

Red Hat wurde von Forrester unter den Multicloud-Plattformen für die Container-Entwicklung zum Marktführer ernannt

Datenblatt

Red Hat OpenShift Container Platform

Training

Kostenloser Trainingskurs

Running Containers with Red Hat Technical Overview

Kostenloser Trainingskurs

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Kostenloser Trainingskurs

Developing Cloud-Native Applications with Microservices Architectures