Container

Was ist Kubernetes?

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. In anderen Worten: Sie können Gruppen von Hosts, auf denen Linux-Container laufen, in Cluster zusammenfassen und Kubernetes hilft Ihnen dabei, diese Cluster auf einfache und effiziente Weise zu verwalten. Diese Cluster können Hosts in Public, Private oder Hybrid Clouds umfassen.

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, das 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.


Warum brauchen Sie Kubernetes?

Echte Produktions-Apps umfassen mehrere Container. Diese Container müssen über mehrere Server-Hosts bereitgestellt werden. Mit Kubernetes erhalten Sie die Orchestrierungs- und Managementkapazitäten für eine skalierte Container-Bereitstellung für diese Workloads. Mit der Kubernetes-Orchestrierung können Sie Anwendungsservices bauen, die mehrere Container umfassen, diese Container als Cluster planen sowie skalieren und ihre Gesundheit über die Zeit überwachen.

Kubernetes muss dazu mit Netzwerken, Storage, Sicherheit, Telemetrie und anderen Services integriert werden, um eine umfassende Container-Infrastruktur bieten zu können.

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, um die einzelnen Services bereitstellen zu können. 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 Zunahme von Containern entstehen können, indem es Container in einem „Pod“ zusammenfasst. 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. Andere Teile von Kubernetes helfen Ihnen, die Last über diese Pods zu verteilen und sicherzustellen, dass Sie die richtige Anzahl an Containern für Ihre Workloads betreiben.

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


Was können Sie mit Kubernetes tun?

Der Hauptvorteil der Verwendung von Kubernetes in Ihrer Umgebung ist, dass Ihnen damit eine Plattform zur Verfügung steht, mit der Sie Container auf Clustern von physischen oder virtuellen Maschinen einplanen und ausführen können. Allgemeiner gesagt, hilft es Ihnen dabei, eine containerbasierte Infrastruktur in Produktionsumgebungen vollständig zu implementieren und sich auf diese verlassen zu können. Und weil es bei Kubernetes um die Automatisierung von operativen Aufgaben geht, können Sie damit viele ähnliche Dinge erledigen wie auf anderen Anwendungsplattformen oder Management-Systemen, 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 Anwendungen 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 Gesundheitsprüfung Ihrer Apps und ggf. eine Selbstheilung 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 diesen notwendigen Komponenten gehören:

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

Erlernen Sie die Kubernetes-Sprache

Wie bei jeder Technologie gibt es einige spezielle Fachbegriffe, die den Zugang erschweren können. Hier finden Sie eine Liste der häufigsten Begriffe, die Ihnen beim Verständnis von Kubernetes helfen können.

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

Knoten: Diese Maschinen führen die geforderten und zugewiesenen Tasks aus. Diese werden vom Kubernetes Master kontrolliert.

Pod: Eine Gruppe aus einem oder mehreren Containern, die für einen 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: So 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.


Die Verwendung von Kubernetes in der Produktion

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 Sie während der Produktion mit Problemen bei der Implementierung von Kubernetes zu kämpfen hätten, würden Sie sicher nicht sonderlich zufrieden sein. 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.


So passt Kubernetes in Ihre Infrastruktur

Kubernetes diagram

Kubernetes läuft aufgesetzt auf ein Betriebssystem (zum Beispiel Red Hat Enterprise Linux Atomic Host) und interagiert mit den Pods von Containern, die auf den Knoten laufen. Der Kubernetes Master empfängt Befehle vom Administrator (oder dem DevOps-Team) und leitet diese Befehle an die untergeordneten Knoten weiter. Diese Übergabe arbeitet mit einer Vielzahl von Diensten, um automatisch zu entscheiden, welcher Knoten am besten für die Aufgabe geeignet ist. Er weist dann Ressourcen zu und legt die Pods in diesem Knoten fest, die die gewünschte Aufgabe durchführen sollen.

Aus Sicht der Infrastruktur ändert sich also nicht viel im Vergleich dazu, wie Sie Container vorher verwaltet haben. Ihre Kontrolle über diese Container findet auf einer höheren Ebene statt und Sie haben dadurch bessere Kontrolle, ohne dass sie jeden Container oder Node mikro-managen müssen. Ein gewisses Maß an Arbeit ist notwendig, aber diese besteht hauptsächlich darin, einen Kubernetes Master zu bestimmen, Knoten zu definieren und Pods zu festzulegen.

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, wird Kubelet auf diesem Knoten Docker anweisen, die spezifischen Container zu starten. Kubelet erfasst dann kontinuierlich den Status dieser Container von Docker und sammelt diese Informationen im Master. Docker zieht Container auf diesen Node 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.

Container bieten eine Vielzahl weiterer Einsatzmöglichkeiten