Überblick
Kubernetes (auch bekannt als K8s oder „kube“) ist eine Open Source Container-Orchestrierungsplattform, mit der viele manuelle Prozesse im Zusammenhang mit dem Deployment, dem Management und der Skalierung von containerisierten Anwendungen automatisiert werden können.
Kubernetes wurde ursprünglich von Google Engineers als Borg-Projekt entwickelt und konzipiert. 2015 wurde es der Cloud Native Computing Foundation (CNCF) zur Verfügung gestellt. Red Hat war bei der Entwicklung von Kubernetes einer der ersten Partner von Google, sogar noch vor dem Launch, und ist mittlerweile der zweitgrößte Mitwirkende am Kubernetes-Upstream-Projekt.
Was sind Kubernetes-Cluster?
Ein aktives Kubernetes-Deployment wird als Kubernetes-Cluster bezeichnet, also als eine Gruppe von Hosts, auf denen Linux®-Container ausgeführt werden. Ein Kubernetes-Cluster besteht aus 2 Teilen: der Control Plane und den Rechenmaschinen oder Nodes.
Ein einzelner Node ist eine eigene Linux®-Umgebung und kann entweder eine physische oder eine virtuelle Maschine sein. Auf den Nodes werden Pods ausgeführt, die aus Containern bestehen.
Die Control Plane ist für den gewünschten Zustand des Clusters verantwortlich und stellt beispielsweise fest, welche Anwendungen ausgeführt werden und welche Container Images sie verwenden. Rechenmaschinen sind für die Ausführung von Anwendungen und Workloads zuständig. Die Control Plane nimmt Befehle eines Admins (oder DevOps-Teams) entgegen und leitet sie an die Rechenmaschinen weiter.
Diese Übergabe erfolgt mit einer Vielzahl von Services, die automatisch entscheiden, welcher Node am besten für die Aufgabe geeignet ist. Die Services entkoppeln die Arbeitsdefinitionen der Pods und leiten Serviceanfragen automatisch an den richtigen Pod weiter – unabhängig davon, an welcher Stelle des Clusters er sich befindet oder ob er ersetzt wurde. Der Node weist Ressourcen zu und legt die Pods in diesem Node fest, die die gewünschte Aufgabe durchführen sollen.
Kubernetes läuft aufgesetzt auf ein Betriebssystem (zum Beispiel Red Hat Enterprise Linux) und interagiert mit den Pods von Containern, die auf den Nodes ausgeführt werden.
Der gewünschte Zustand des Kubernetes-Clusters definiert, welche Anwendungen oder anderen Workloads ausgeführt werden sollen, welche Images sie verwenden, welche Ressourcen für sie verfügbar gemacht werden sollen sowie weitere Konfigurationsdetails.
Am Management von Containern ändert sich bei dieser Art von Infrastruktur wenig. Ihre Beteiligung findet auf einer höheren Ebene statt, wobei die Notwendigkeit eines Mikromanagements der einzelnen Container oder Nodes entfällt.
Worauf Sie Kubernetes ausführen, liegt ganz bei Ihnen. Sie können Bare Metal-Server, virtuelle Maschinen (VMs), Public Cloud-Anbieter, Private Clouds und Hybrid Cloud-Umgebungen verwenden. Einer der Hauptvorteile von Kubernetes ist, dass es auf diversen Infrastrukturarten ausgeführt werden kann.
Erfahren Sie mehr über die revolutionäre Bedeutung von Containern für die Open Hybrid Cloud von den Experten bei Red Hat.
Was ist der Unterschied zwischen Kubernetes und Docker?
Docker kann als Container Runtime verwendet werden, die von Kubernetes orchestriert wird. Wenn Kubernetes einen Pod für einen Node plant, gibt das Kubelet (der Service, der für das Ausführen der einzelnen Container sorgt) auf diesem Node Docker die Anweisung, die angegebenen Container zu starten.
Das Kubelet erfasst dann kontinuierlich den Status dieser Container von Docker und aggregiert diese Informationen in der Control Plane. Docker zieht Container auf diesen Node und startet und stoppt diese Container.
Der Unterschied bei der Verwendung von Kubernetes mit Docker besteht darin, dass ein automatisiertes System Docker auffordert, diese Dinge zu tun, und nicht ein Admin diese Aufgaben manuell auf sämtlichen Nodes für die verschiedenen Container ausführen muss.
Bereit für den Einstieg in Kubernetes? In diesem On-Demand-Kurs lernen Sie die Containerisierung von Anwendungen und Services, das Testen mit Docker und das Deployment in einem Kubernetes-Cluster mit Red Hat OpenShift®.
Welche Vorteile haben Kubernetes?
Kubernetes unterstützt Sie beim Bereitstellen und Verwalten von containerisierten, cloudnativen und Legacy-Anwendungen sowie von Anwendungen, die in Microservices refaktorisiert werden.
Um den sich ändernden Geschäftsanforderungen gerecht zu werden, muss Ihr Entwicklungsteam in der Lage sein, neue Anwendungen und Services schnell zu erstellen. Die cloudnative Entwicklung beginnt mit Microservices in Containern, die eine beschleunigte Entwicklung ermöglichen und die Umwandlung und Optimierung bestehender Anwendungen erleichtern.
Anwendungsentwicklung mit Kubernetes
Produktionsanwendungen umfassen mehrere Container, und diese Container müssen auf mehreren Server-Hosts bereitgestellt werden. Kubernetes liefert Ihnen die Orchestrierungs- und Managementfunktionen, die Sie für eine skalierbare Container-Bereitstellung für diese Workloads benötigen.
Mit der Kubernetes-Orchestrierung können Sie Anwendungsservices entwickeln, die sich über mehrere Container erstrecken, diese Container clusterübergreifend planen, skalieren und ihren Zustand im Zeitverlauf überwachen. Mit Kubernetes unternehmen Sie effektive Schritte zu mehr IT-Sicherheit.
Kubernetes muss dazu mit Networking, Storage, Sicherheit, Telemetrie und anderen Services integriert werden, um eine umfassende Container-Infrastruktur bieten zu können.
Sobald diese Umgebung auf den Umfang einer Produktivumgebung und mehrere Anwendungen skaliert wird, benötigen Sie die Leistung mehrerer, nebeneinander lokalisierter Container, die die einzelnen Services bereitstellen.
Linux-Container eignen sich ideal zum eigenständigen Bereitstellen und Ausführen Ihrer microservice-basierten Apps. Und mit Microservices in Containern können Sie Ihre Services, wie Storage, Networking und Sicherheit, noch leichter orchestrieren.
Dadurch vervielfacht sich die Anzahl der Container in Ihrer Umgebung, und mit der Anzahl der Container 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. Pods fügen den gruppierten Containern eine Abstraktionsschicht hinzu, die Ihnen hilft, Workloads zu planen und diesen Containern die notwendigen Services wie Networking und Storage zu liefern.
Andere Teile von Kubernetes helfen Ihnen, die Last über diese Pods zu verteilen und dafür zu sorgen, 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 vSwitch, OAuth und SELinux können Sie alle Teile Ihrer Container-Infrastruktur orchestrieren.
Kubernetes mit Red Hat
Kubernetes ist eine Open Source-Technologie. Von daher gibt es keine formalisierte Supportstruktur für diese Technologie – zumindest keine, der Sie Ihren Geschäftserfolg anvertrauen würden. Wenn während der Produktion Probleme bei der Implementierung von Kubernetes auftreten würden, wären Sie wahrscheinlich frustriert. Ebenso Ihre Kunden.
Stellen Sie sich Kubernetes wie den Motor eines Autos vor. Dieser kann zwar auch alleine laufen, bildet aber erst im Verbund mit Getriebe, Achsen und Rädern ein funktionsfähiges Fahrzeug. Die bloße Installation von Kubernetes reicht nicht aus, um eine produktionsfähige Plattform zu erhalten. Kubernetes benötigt zusätzliche Komponenten, um voll funktionsfähig zu sein. Hierzu müssen Sie beispielsweise Authentifizierung, Networking, Sicherheit, Überwachung, Protokollmanagement und weitere Tools hinzufügen. Hier kommt Red Hat OpenShift ins Spiel – diese Plattform ist das komplette Auto.
Red Hat OpenShift ist eine Kubernetes-Plattform für Unternehmen. Sie integriert alle zusätzlichen Technologiekomponenten, die Kubernetes leistungsstark und unternehmenstauglich machen, darunter Registry, Networking, Telemetrie, Sicherheit, Automatisierung und Services. Red Hat OpenShift enthält Kubernetes als zentrale Komponente der Plattform und ist ein von der CNCF zertifiziertes Kubernetes-Angebot.
Mit Red Hat OpenShift Container Platform können Entwicklungsteams neue containerisierte Apps erstellen, hosten und in der Cloud mit der Skalierbarkeit, Kontrolle und Orchestrierung bereitstellen, die erforderlich sind, um aus einer guten Idee schnell und einfach ein neues Business zu machen. Wenn Sie Ihre Kubernetes-Workloads in einem gemanagten Cloud-Service bereitstellen oder verschieben möchten, ist OpenShift auch als cloudnative Kubernetes-Plattform auf Amazon Web Services (AWS), Microsoft Azure, Google Cloud, IBM Cloud und anderen Anbietern verfügbar.
Basierend auf den Grundlagen von OpenShift können Sie Red Hat Advanced Cluster Management und Red Hat Ansible® Automation Platform zusammen verwenden, um mehrere Kubernetes-Cluster in verschiedenen Regionen und Umgebungen, einschließlich Public Cloud, On-Premises und am Edge, effizient bereitzustellen und zu verwalten.
Use Case: Entwicklung einer Cloud-Plattform für innovative Banking-Services
Emirates NBD, eine der größten Banken in den Vereinigten Arabischen Emiraten (VAE), benötigte eine skalierbare, resiliente Basis für digitale Innovationen. Allerdings konnte dies mit den aktuellen langsamen Prozessen und der komplexen IT-Umgebung nicht realisiert werden. Die Einrichtung eines Servers dauerte 2 Monate und Änderungen an großen, monolithischen Anwendungen mehr als 6 Monate.
Mit Red Hat OpenShift Container Platform für die Orchestrierung, Integration und Verwaltung von Containern entwickelte die Bank Sahab, die erste Private Cloud, die von einer Bank im Nahen Osten in großem Umfang betrieben wird. Sahab bietet Anwendungen, Systeme und andere Ressourcen für die End-to-End-Entwicklung, von der Provisionierung bis zur Produktion, über ein As-a-Service-Modell.
Mit der neuen Plattform konnte Emirates NBD die Zusammenarbeit zwischen internen Teams und den Partnern verbessern, die APIs und Microservices verwenden. Und durch die Einführung von agilen und DevOps-Entwicklungspraktiken war die Bank in der Lage, Lancierungs- und Update-Zyklen für ihre Apps entscheidend zu verkürzen.
Container haben noch viel mehr zu bieten.