Was ist Knative?
Knative ermöglicht die Ausführung serverloser Workloads auf Kubernetes-Clustern und macht die Erstellung und Orchestrierung von Containern mit Kubernetes schneller und einfacher.
Schwarzer und blauer Hintergrund
Was ist Knative?

Knative (sprich Kay-NAY-tive) ist eine Erweiterung der Kubernetes-Container-Orchestrierungsplattform, die es ermöglicht, serverlose Workloads auf Kubernetes-Clustern auszuführen und Tools und Dienstprogramme bereitzustellen, die die Erstellung, Bereitstellung und das Management von containerisierten Anwendungen innerhalb von Kubernetes einfacher und „Kubernetes-nativer“ machen (daher der Name – „K“ für „Kubernetes“ + nativ).

Wie Kubernetes ist auch Knative eine Open-Source-Software. Es wurde ursprünglich von Google in Zusammenarbeit mit IBM, Pivotal, Red Hat, SAP und fast 50 anderen Unternehmen entwickelt. Heute wird das Open-Source-Projekt Knative von der Cloud Native Computing Foundation (CNCF) verwaltet. 

Warum Kubernetes Knative braucht

Kubernetes automatisiert und plant die Bereitstellung, das Management und die Skalierung von Containern – schlanke, ausführbare Anwendungskomponenten, die den Quellcode mit allen Betriebssystembibliotheken und Abhängigkeiten kombinieren, die für die Ausführung des Codes in jeder Umgebung erforderlich sind. 

Container ermöglichen es Anwendungskomponenten, die Ressourcen einer einzelnen Instanz eines Betriebssystems gemeinsam zu nutzen, ähnlich wie virtuelle Maschinen (VMs) es Anwendungen ermöglichen, die Ressourcen eines einzelnen physischen Computers gemeinsam zu nutzen. Container sind kleiner und ressourceneffizienter als VMs und eignen sich besser für die inkrementellen Release-Zyklen der Agile- und DevOps-Entwicklungsmethodiken und haben sich de facto zu den Recheneinheiten moderner cloudnativer Anwendungen entwickelt. Unternehmen, die Container einsetzen, berichten von weiteren Vorteilen, wie z. B. einer verbesserten App-Qualität, einem höheren Innovationsgrad und vielem mehr:

Laden Sie den vollständigen Bericht herunter: Container im Unternehmen (PDF, 1,4 MB)

Da die cloudnative Entwicklung immer häufiger eingesetzt wird und sich Container in den Unternehmen ausbreiten, erleichtern die Container-Orchestrierungs-Funktionen von Kubernetes – Planung, Lastausgleich, Zustandsüberwachung und mehr – das Management dieser Ausbreitung erheblich. Kubernetes ist Jedoch ein komplexes Tool, das von den Entwicklern verlangt, dass sie viele sich wiederholende Aufgaben – das Abrufen des Quellcodes von Anwendungen aus Repositorys, das Erstellen und Bereitstellen eines  Container-Images um den Code herum, das Konfigurieren von Netzverbindungen – außerhalb von Kubernetes mit verschiedenen Tools ausführen oder mit Vorlagen bereitstellen. Und die Einbindung von Kubernetes-verwalteten Containern in eine automatisierte CI/CD-Pipeline (kontinuierliche Integration/kontinuierliche Bereitstellung) erfordert spezielle Tools und eine kundenspezifische Codierung.

Knative beseitigt diese Komplexität mit Tools, die diese Aufgaben automatisieren, und zwar innerhalb von Kubernetes. Ein Entwickler kann den Inhalt und die Konfiguration des Containers in einer einzigen YAML-Manifest-Datei definieren, und Knative übernimmt den Rest, indem es den Container erstellt und die Netzprogrammierung durchführt, um eine Route, einen eingehenden Datenverkehr, einen Lastausgleich und mehr einzurichten. (Knative bietet auch eine Befehlszeilenschnittstelle, Knative CLI, die es Entwicklern ermöglicht, auf Knative-Funktionen zuzugreifen, ohne YAML-Dateien zu bearbeiten.)

Container serverlos machen

Serverlose Datenverarbeitung ist ein cloudnatives Ausführungsmodell, das die Entwicklung von Anwendungen noch einfacher und deren Ausführung noch kostengünstiger macht. Das serverlose Datenverarbeitungsmodell

  • stellt Datenverarbeitungsressourcen nach Bedarf bereit, skaliert transparent auf der Grundlage von Anfragen – und auf Null, wenn keine Anfragen mehr gestellt werden;

  • verlagert alle Aufgaben des Infrastrukturmanagements – Skalierung, Planung, Patching, Bereitstellung usw. – an den Cloud-Anbieter, sodass die Entwickler ihre Zeit und ihren Aufwand auf Entwicklung und Innovation konzentrieren können, und

  • ermöglicht es Cloud-Kunden, nur für genutzte Ressourcen, aber nie für ungenutzte Kapazitäten zu zahlen.

Kubernetes allein kann keine serverlosen Anwendungen ohne spezielle Software ausführen, die Kubernetes in die serverlose Plattform eines bestimmten Cloud-Anbieters integriert. Knative ermöglicht es jedem Container, als serverloser Workload auf jedem Kubernetes-Cluster zu laufen – unabhängig davon, ob der Container um eine serverlose Funktion oder einen anderen Anwendungscode (z. B. Microservices) herum aufgebaut ist – indem der Code abstrahiert und das Netzrouting, die Ereignisauslösung und die automatische Skalierung gehandhabt werden.

So funktioniert Knative: Knative-Komponenten

Knative sitzt am Anfang von Kubernetes und fügt drei Hauptkomponenten, sogenannte Primates, hinzu: Build, Serving und Eventing. 

Erstellung


Die Knative-Buildkomponente automatisiert den Prozess der Umwandlung von Quellcode in einen Container. Dieser Prozess umfasst in der Regel mehrere Schritte, darunter:

  • Abrufen von Quellcode aus einem Code-Repository, wie z. B. GitHub
  • Installation der zugrundeliegenden Abhängigkeiten – wie Umgebungsvariablen und Softwarebibliotheken –, die der Code zur Ausführung benötigt
  • Build-Erstellung von Container-Images
  • Einstellen von Container-Images in ein Register, wo Kubernetes (und andere Entwickler) sie finden können

Knative nutzt Kubernetes-APIs und andere Tools für seinen Build-Prozess. Ein Entwickler kann ein einziges Manifest (in der Regel eine YAML-Datei) erstellen, in dem alle Variablen angegeben sind – Speicherposition des Quellcodes, erforderliche Abhängigkeiten usw. – und Knative nutzt das Manifest zur Automatisierung des Container-Builds. 

Bereitstellung


Die Serving-Komponente stellt Container als skalierbare Knative-Services bereit und führt sie aus. Serving bietet die folgenden wichtigen Funktionen:

  • Die Konfiguration definiert und verwaltet den Zustand eines Service. Außerdem bietet sie ein Versionsmanagement: Bei jeder Änderung der Konfiguration wird eine neue Version des Service erstellt, und die vorherigen Versionen werden gespeichert.

  • Durch intelligentes Service-Routing können Entwickler den Datenverkehr an verschiedene Versionen des Service weiterleiten. Angenommen, Sie haben eine neue Version eines Service erstellt, möchten diese aber erst für eine Untergruppe von Benutzern bereitstellen, bevor Sie alle Benutzer migrieren. Durch intelligentes Service-Routing können Sie einen bestimmten Prozentsatz der Benutzeranfragen an den neuen Service und den Rest der Anfragen an eine frühere Version weiterleiten. Wenn Sie mehr Vertrauen in den neuen Service gewinnen, können Sie mehr Datenverkehr an ihn weiterleiten.

  • Automatische Skalierung. Knative kann Services bis in den Bereich von Tausenden von Instanzen skalieren; es kann sie auch bis auf Null skalieren – das heißt, überhaupt keine Instanzen des Containers –, was für die Unterstützung serverloser Anwendungen entscheidend ist.

Knative Serving leiht sich intelligentes Service-Routing von Istio, einer anderen Anwendung im Kubernetes-Ökosystem – ein Open-Source-Servicenetz für Kubernetes. Istio bietet außerdem eine Authentifizierung für Serviceanfragen, eine automatische Verschlüsselung des Datenverkehrs für eine sichere Kommunikation zwischen Services und detaillierte Metriken über Microservices und serverlose Funktionsabläufe, die Entwickler und Administratoren zur Optimierung der Infrastruktur nutzen können. (Für mehr Details darüber, wie Knative Istio nutzt, lesen Sie „Istio und Knative: Erweiterung von Kubernetes für eine neue Entwicklerfahrung.“)

Eventing


Die Eventing-Komponente von Knative ermöglicht es verschiedenen Ereignissen, ihre containerbasierten Services und Funktionen auszulösen.Knative stellt diese Ereignisse in eine Warteschlange und leitet sie an die entsprechenden Container weiter, sodass keine Scripts geschrieben oder Middleware für die Funktion implementiert werden muss. Knative verwaltet auch Kanäle, d. h. Warteschlangen mit Ereignissen, aus denen Entwickler auswählen können, sowie den Bus, eine Nachrichtenübermittlungsplattform, die Ereignisse an Container übermittelt. Außerdem können Entwickler Feeds einrichten, die ein Ereignis mit einer Aktion verbinden, die ihre Container ausführen sollen.

Knative-Eventquellen erleichtern Entwicklern die Erstellung von Verbindungen zu Event-Erstellern von Drittanbietern. Knative Eventing stellt automatisch die Verbindung zum Ereignisproduzenten her und leitet die generierten Ereignisse weiter. Sie brauchen nicht herauszufinden, wie man das programmatisch macht – Knative übernimmt die ganze Arbeit.

Knative-Anwendungsfälle

Zusammenfassend lässt sich sagen, dass Knative mehrere Anwendungsfälle für Kubernetes-Benutzer unterstützt, die die Entwicklung von containerisierten Anwendungen vereinfachen oder ihre Nutzung von Containern auf die nächste Stufe heben möchten.

Kubernetes optimieren. Durch die Beseitigung sich wiederholender Build- und Konfigurationsaufgaben macht Knative Entwickler, die mit Kubernetes arbeiten, produktiver. Jedes Entwicklungsteam, das mit dem Management einer wachsenden Anzahl von Kubernetes-Clustern zu kämpfen hat, ist ein idealer Kandidat für Knative.

Die Reise in die serverlose Umgebung beschleunigen. Serverlose Umgebungen können entmutigend sein, wenn sie manuell eingerichtet und gemanagt werden müssen.Mit Knative können Unternehmen schnell serverlose Workloads einrichten. Was die Entwickler betrifft, so erstellen sie lediglich einen Container, der von Knative als serverlose Funktion im Hintergrund ausgeführt wird.

Agile- und DevOps-Lebenszyklen unterstützen. Knative ermöglicht es Entwicklern, neue Container und Container-Versionen schneller zu erstellen und erleichtert so die Bereitstellung von containerisierten Anwendungen in kleinen, schnellen, iterativen Schritten als Teil eines Agile- oder DevOps-Workflows. Und Knative-Services lassen sich problemlos in automatisierte CI/CD-Pipelines integrieren, ohne dass spezielle Software oder individuelle Programmierung erforderlich ist.

Neue Funktionen reibungslos einführen. Wenn den Kunden neue Versionen bereitgestellt werden, können Softwareprobleme auftreten, die sich auf die Geschäftsprozesse auswirken können. Die Konfiguration und das Routing von Knative ermöglichen es den Entwicklern, neue Containerversionen nur einem Teil des Benutzerstamms zugänglich zu machen und diesen Kreis im Laufe der Zeit bei der Behebung von Problemen schrittweise zu erweitern – oder, falls nötig, schnell auf ältere Versionen zurückzugreifen.

Entwickler auf Codierung und Innovation fokussiert halten. DevOps kann Entwicklern die Möglichkeit geben, ihre eigenen Umgebungen zu verwalten. Letztendlich wollen sich die Entwickler aber auf die Entwicklung fehlerfreier Software und innovativer neuer Funktionen konzentrieren und nicht auf die Konfiguration von Nachrichten-Bus-Warteschlangen für das Ereignis-Triggering oder die Verwaltung der Skalierbarkeit von Containern. Mit Knative können Entwickler mehr Zeit mit dem verbringen, was sie am besten können.

Relevante Lösungen
Red Hat OpenShift on IBM Cloud

Mit Red Hat OpenShift on IBM Cloud haben OpenShift-Entwickler eine schnelle und sichere Möglichkeit zur Containerisierung und Bereitstellung von Unternehmens-Workloads in Kubernetes-Clustern.

Red Hat OpenShift kennenlernen
IBM Cloud Satellite

Stellen Sie Apps konsistent über On-Premises-, Edge-Computing- und Public-Cloud-Umgebungen von jedem beliebigen Cloud-Provider bereit und führen Sie sie unter Verwendung einer Gruppe gängiger Cloud-Services einschließlich Toolchains, Datenbanken und KI aus.

IBM Cloud Satellite erkunden
IBM Cloud Code Engine

Als vollständig verwaltete serverlose Plattform können Sie mit der IBM Cloud Code Engine Ihren Container, Anwendungscode oder Stapeljob auf einer vollständig verwalteten Container-Laufzeitumgebung ausführen.

IBM Cloud Code Engine erkunden
Ressourcen Container im Unternehmen

Eine neue IBM Studie belegt die zunehmende Verbreitung von Containern und Kubernetes.

Was bedeutet serverlos?

Der Begriff „serverlos" bezeichnet ein Modell für die Entwicklung und Ausführung von Cloud-Anwendungen, mit dem Entwickler Code erstellen und ausführen können, ohne Server verwalten oder für nicht genutzte Funktionen der Cloudinfrastruktur bezahlen zu müssen.

Flexible, resiliente, sichere IT für Ihre Hybrid Cloud

Container sind Teil einer hybriden Cloud-Strategie, mit der Sie Workloads von überall aus erstellen und verwalten können.

Machen Sie den nächsten Schritt

Red Hat OpenShift on IBM Cloud ermöglicht OpenShift-Entwicklern schnelle, sichere Containerisierung und Bereitstellung von Unternehmens-Workloads in Kubernetes-Clustern. Stellen Sie hoch verfügbare, vollständig verwaltete Kubernetes-Cluster für Ihre containerisierten Anwendungen mit einem einzigen Klick bereit.Da IBM die OpenShift Container Platform (OCP) verwaltet, haben Sie mehr Zeit, sich auf Ihre Kernaufgaben zu konzentrieren.

Mehr über Red Hat OpenShift in der IBM Cloud erfahren