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.
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.)
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
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.
Knative sitzt am Anfang von Kubernetes und fügt drei Hauptkomponenten, sogenannte Primates, hinzu: Build, Serving und Eventing.
Die Knative-Buildkomponente automatisiert den Prozess der Umwandlung von Quellcode in einen Container. Dieser Prozess umfasst in der Regel mehrere Schritte, darunter:
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.
Die Serving-Komponente stellt Container als skalierbare Knative-Services bereit und führt sie aus. Serving bietet die folgenden wichtigen Funktionen:
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.“)
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.
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.
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.
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.
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.
Eine neue IBM Studie belegt die zunehmende Verbreitung von Containern und Kubernetes.
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.
Container sind Teil einer hybriden Cloud-Strategie, mit der Sie Workloads von überall aus erstellen und verwalten können.