Serverlose Frameworks sind seit einigen Jahren gefragt und werden von Entwicklern zunehmend angenommen.
Dennoch sind Container-basierte Anwendungen bereits beliebt, ebenso wie Kubernetes bei Unternehmen.
Kubernetes ist ohne Zweifel ein großartiges Tool mit großem Potenzial. Sein Ökosystem wächst auch mit einer Vielzahl neuer Tools und den neuesten Technologien, wie z. B. Knative, das die Kraft hat, Kubernetes noch besser zu machen.
Knative wurde eingeführt, um Situationen zu überwinden, die zum Scheitern führen, und einen Kernstandard für Cloud-Plattformen und Cloud-native Orchestrierung zu etablieren.
Mit anderen Worten, das serverlose Knative-Framework kann die Anforderungen eines Unternehmens viel besser erfüllen als andere cloudbasierte serverlose Bereitstellungen.
In diesem Leitfaden werde ich über Knative, seine Vorteile, Anwendungsfälle, Installationsverfahren, Arbeitsverfahren und mehr sprechen.
Auf geht’s!
Inhaltsverzeichnis
Was ist Knative?
Knative ist ein Kubernetes-basiertes serverloses Framework, das zuerst von Google entwickelt wurde. Es lädt und führt serverlose Funktionen basierend auf den Anforderungen eines Unternehmens aus und minimiert so die Verschwendung. Es ist ein Open-Source-Projekt, das Komponenten hinzufügt, um serverlose Anwendungen auf Kubernetes bereitzustellen, auszuführen und zu verwalten.
Der Hauptzweck des Serverless-Frameworks von Knative besteht darin, die Standards für die plattformübergreifende Orchestrierung zu verwalten. Dies wird durch die Integration der Funktionen der Containererstellung, der automatischen Skalierung, der Ereignismodelle und des Workload-Managements implementiert.
Früher gab es neben Knative eine Vielzahl von Open-Source-Lösungen. Jede Lösung hat ihre eigene Art der Bereitstellung, was zu einer Fragmentierung des Marktes führen kann, da es an standardisierten Verfahren mangelt. Dies bedeutet, dass die Auswahl eines bestimmten Anbieters erforderlich ist, wenn Sie eine bestimmte Systemfunktion wünschen.
Allerdings kamen Migrationsprobleme an die Front. Und um solche Probleme zu vermeiden, wurde das Knative Serverless Framework eingeführt. Wenn Sie also Schwierigkeiten haben, Aufgaben zu integrieren, kann Knative dies effizient innerhalb der Kubernetes-basierten Pipeline erledigen.
Knative hat drei Teile:
- Knative Build: Es baut Container-Images und stellt sie aus dem Quellcode zur Verfügung.
- Knative Serving: Es verwendet Istio und Kubernetes, um diese Container-Images über die zugewiesenen Infrastrukturressourcen zu verbinden und bereitzustellen.
- Knative Eventing: Es ermöglicht Benutzern, die Ereignisauslöser zu definieren und die Ereignisauslöser mit containerisierten Funktionen zu verknüpfen.
Immer wenn Knative ein Ereignis identifiziert, definiert es den zugehörigen Prozess, um es bei Bedarf auszuführen. Mit Knative müssen keine Container-Knoten, Cluster und Pods für die Arbeit zugewiesen werden, da Knative Hosting-Ressourcen nur festschreibt, wenn ein bestimmter Prozess ausgeführt wird. Auf diese Weise balanciert Knative Serverless- und Container-Vorteile aus.
Kernkonzepte von Knative
Lassen Sie uns die Hauptkonzepte des Knative Serverless Framework und ihre Beziehung zu den Knative-Primitiven diskutieren.
Bauen
Knative-Building hilft dabei, die vorhandenen Kubernetes-Primitive zu nutzen und zu erweitern, sodass Sie Container-Builds vom Ursprung ausführen können. Es aktiviert den Quellcode aus den Abhängigkeiten und dem Repository, erstellt Container-Images und registriert sie.
Veranstaltungen
Das Ereignis hilft Ihnen, eine bessere Kommunikation zwischen lose gekoppelten Ereigniskonsumenten und -produzenten zum Erstellen der ereignisgesteuerten Architektur zu schaffen. Knative stellt diese Ereignisse in eine Warteschlange, die automatisch ohne das Skript der Entwickler ausgeführt werden musste.
Später werden diese Ereignisse an die Container geliefert. Anschließend sendet es Feeds an die Ereignisproduzenten, um Aufgaben auszuführen. Dadurch wird die Arbeitsbelastung des Entwicklers beim Erstellen von Code für den Verbindungsaufbau verringert.
Funktionen
Eine Funktion ist eine unabhängige Deployment-Einheit und ein Knative Serving Service, wie ein Microservice. Sein Code ist so geschrieben, dass er eine einzelne Aufgabe ausführt, wie zum Beispiel:
- Bearbeiten einer Datei in einer Datenbank
- Speichern eines Benutzers in einer Datenbank
- Ausführen einer geplanten Arbeit
Knative Serverless Framework wurde entwickelt, damit Sie Funktionen effektiv entwickeln, bereitstellen und verwalten können.
Plugins
Erweitern oder überschreiben Sie die Funktionalität des serverlosen Knative-Frameworks einfach mit Plugins. Jede serverless.yml-Datei enthält eine Plug-in-Eigenschaft, die verschiedene Plug-ins enthält.
Ressourcen
Ressourcen sind die serverlosen Infrastrukturkomponenten von Knative, die Ihre Funktion verwendet, einschließlich:
- AWS SQS-Ereignisquelle
- Eine geplante Aufgabe (Ausführung alle 5 Minuten, 10 Minuten usw.)
- Eine Kafka-Ereignisquelle
Und mehr.
Dienstleistungen
Dienstleistungen sind wie ein Projekt. Daher ist ein Dienst die Organisationseinheit des serverlosen Frameworks von Knative. Obwohl Sie viele Dienste für eine Anwendung haben können, können Sie sich den Dienst als eine Projektdatei vorstellen.
Hier können Sie die Funktionen, Ereignisse und Ressourcen definieren, alles in einer einzigen Datei mit den Namen „serverless.yml“, „serverless.json“ oder „serverless.js“. Wenn Sie die Dienste mit dem serverlosen Framework bereitstellen, wird alles in der Datei auf einmal bereitgestellt.
Portion
Knative-Serving ist in Istio und Kubernetes integriert und unterstützt die Anwendungsbereitstellung. Es ermöglicht die schnelle Entwicklung serverloser Container, die Netzwerkprogrammierung und die automatische Skalierung für Istio-Komponenten. Knative-Serving betrachtet Container als skalierbaren Dienst, der von einer Instanz bis zu vielen Containerinstanzen reichen kann.
Funktionen von Knative
Lassen Sie uns einige der Funktionen des serverlosen Knative-Frameworks besprechen:
- Knative ist ein Kubernetes-basiertes serverloses Framework, mit dem Sie Dienste für Kubernetes bereitstellen können.
- Es integriert Knative einfach in die unterstützte Umgebung
- Entwickler können die Kubernetes-API mithilfe von Knative direkt verwenden, um serverlose Dienste bereitzustellen
- Es ermöglicht Benutzern, serverlose Dienste mit Hilfe des Eventing-Systems von Knative auszulösen
Wie funktioniert Knative?
Knative Serverless Framework fungiert als Event-Steering-Segment und verbindet Istio und Kubernetes. Kubernetes fungiert als Orchestrator für Microservices und Container. Istio hingegen ist eine Open-Source-Mesh-Technologie, die verschiedene Komponenten zusammenbringt, um mit dem Benutzer und sich selbst zu interagieren.
Knative bietet Benutzern mehrere Komponenten, die darauf ausgerichtet sind, grundlegende tägliche Arbeiten auszuführen. Diese Komponenten kommen immer wieder in einer Vielzahl von Anwendungen zum Einsatz. Ein Entwickler kann jede Programmiersprache verwenden. Daher benötigen Sie keine besonderen Sprachkenntnisse, da Knative nur Container-Images erkennt.
Es gibt drei Komponenten des serverlosen Knative-Frameworks, die der Schlüssel zu seiner Funktionsweise sind.
Bau neuer Container
Die Build-Komponente ist für das Erstellen neuer Container verantwortlich. Es kann Quellcodes in einen Container konvertieren. Knative kann so konfiguriert werden, dass es unternehmensspezifischen Anforderungen entspricht.
Zuerst zieht Knative den Quellcode aus der Bibliothek wie Github. Anschließend werden zugrunde liegende Abhängigkeiten hinzugefügt, damit der Code effektiv ausgeführt wird. Container-Images werden dann erstellt und in Dateien abgelegt, auf die die Kubernetes-Plattform zugreifen kann.
Der Container wird Entwicklern zur Verfügung gestellt, die Kubernetes und Knative verwenden. Container werden also gebaut, solange die Herkunft des Codes bekannt ist.
Bereitstellung oder Betrieb der Plattform
Die Serving-Komponente ist für den Betrieb der Plattform verantwortlich. Es involviert:
- Konfiguration: Die Konfiguration ist bei der Verwaltung mehrerer Versionen des Dienstes sicher. Jedes Mal, wenn eine neue Funktion eines Containers bereitgestellt wird, speichert Knative die vorhandene Version und erstellt eine neue mit den neuesten Änderungen und Funktionen. Darüber hinaus definiert Knative den Zustand eines Dienstes.
- Automatische Skalierung: Damit serverlose Container besser funktionieren, müssen Sie in der Lage sein, die Container automatisch nach oben oder unten zu skalieren. Knative kann Dienste bei Bedarf automatisch auf viele skalieren.
- Intelligentes Service-Routing: Es ist ein wichtiger Bestandteil des Knative-Arbeitsmechanismus. Es ermöglicht Entwicklern, den Fluss und die Menge des Datenverkehrs auf verschiedene vorhandene Versionen der Microservices zu lenken. Bei der Einführung neuer Funktionen und Blue-Green-Bereitstellungsstrategien kann intelligentes Service-Routing verwendet werden.
Es ermöglicht Ihnen, einen Bruchteil der Benutzer den neuesten Tests und Versionen auszusetzen und einen großen Datenverkehr schrittweise an die neue Version weiterzuleiten.
Eventing zum Definieren von Funktionen
Die Eventing-Komponente von Knative ist für die Beschreibung der Funktion von Knative verantwortlich. Es ermöglicht die Ausführung der Container basierend auf Ereignissen zu definieren. Verschiedene Ereignisse lösen bestimmte Funktionen von Containern aus.
Entwickler können die Ereignisauslöser und die zugehörigen Container definieren, damit Knative seine Arbeit erledigen kann. Knative kümmert sich um die Liste der Ereignisse und die Zustellung der Ereignisse.
Vorteile von Knative
Knative bietet Dienste wie Routenverwaltung, stufenweise Freigabe und Dienstverbindung. Es verfügt über eine große Community. Lassen Sie uns diskutieren, wie Knative Unternehmen dazu bringt, diese Technologie zu übernehmen.
- Im Gegensatz zu anderen Lösungen verfügt Knative über Standardereignisse und ist mit der FaaS-Lösung kompatibel. Es bietet ein CloudEvent-Standardframework, das beim Entwerfen einer serverlosen Architektur hilft.
- Obwohl Knative kein PaaS ist, können Sie mit der serverlosen Orchestrierungsplattform ein serverloses PaaS erstellen.
- Knative hat ein vollwertiges und ausgereiftes serverloses Design.
- Es unterstützt plattformübergreifend und bietet Ihnen einen universellen Standard unter den Cloud-Anbietern, um die Chance auszuschließen, Anbieter an eine bestimmte Lösung zu binden.
- Knative bietet ein flexibles Framework.
- Es unterstützt proportionale gestaffelte Freigaben.
- Sie können das serverlose Ökosystem in einer containerisierten Umgebung erleben.
- Knative entfernt die Zuverlässigkeit von Management und Tools.
- Durch die Implementierung von Kubernetes können Sie schnell zu anderen Cloud-Anbietern migrieren, die in Knative integriert sind.
- Es bietet ein anforderungsgesteuertes Rechenmodell.
- Es ermöglicht Ihnen, Workflows als Dienst zu verwalten.
- Mit Knative können Sie IoT-Daten verarbeiten, Zugriffsprüfungen durchführen und Konfigurationen Ihrer Sicherheitsgruppen validieren.
- Es ermöglicht Entwicklern, sich auf die Codierung zu konzentrieren und schnell iterativen Code zu erstellen.
- Es stellt sicher, dass Entwickler neue Versionen integrieren.
- Das ereignisbasierte Modell von Knative hilft bei der Implementierung von Designs, einschließlich Abonnement, Verbindung zum externen System und Registrierung.
Herausforderungen von Knative (und einige Lösungen)
Effizienz-Herausforderungen
Ein Knative Framework, das geeignete Anwendungen unterstützt, bietet eine bessere Leistung bei minimalen Kosten. Ein falscher Anwendungsmix kann jedoch zu höheren Kosten und nicht ausgelasteten Containerressourcen führen. Dies könnte zu einer schlechten Anwendungsleistung führen, was die größte Herausforderung der serverlosen Bereitstellung von Knative darstellt.
Daher können ein schlecht dimensionierter Ressourcenpool oder falsche Anwendungen viele Knative-Vorteile zunichte machen.
Sie können diese Herausforderung meistern, indem Sie Tests durchführen, um die Ressourcenmengen und die Mischung der Anwendungen auf Knative zu überprüfen. Messen Sie die Ereignislasten, indem Sie jeweils die durchschnittlichen und maximalen Lasten berechnen und den Gesamtverbrauch an Ressourcen schätzen. Wiederholen Sie dies für mehrere Anwendungen, um eine Testkonfiguration zu erstellen und auszuführen, um die Schätzungen zu validieren.
Funktionale Herausforderungen
Die funktionellen Herausforderungen von Knative könnten sein:
- Knative hängt von Funktionen ab, die zu einem zustandslosen Modell passen. Das bedeutet, dass keine Daten in der Komponente selbst gespeichert werden. Die Entwicklung der Funktionen ist keine schwierige Phase, erfordert jedoch eine leichte Änderung der Herangehensweise, was bedeutet, dass ein einziger Fehler die Leistung der Software ruinieren kann.
- Geschäftsdaten bestehen aus Transaktionen mit mehreren Schritten, und zustandslose Funktionen behalten den Kontext über alle Schritte hinweg bei. Knative verfügt nicht über diese Fähigkeit wie die serverlosen Public-Cloud-Tools.
Regelmäßige Überwachung und Behebung von Problemen können Ihnen dabei helfen, Ihre Leistung auf einem angemessenen Niveau zu halten.
Operative Herausforderungen
Im Vergleich zu den serverlosen Angeboten in einer Public Cloud gibt es bei Knative eine betriebliche Herausforderung. Administratoren kontrollieren die zugrunde liegenden Server nicht mit der Public Cloud. Aber sie müssen Server zusammen mit Kubernetes, Containern, Knative und Istio selbst verwalten.
Knative erweitert die Betriebs- und Entwicklungskomplexität für Unternehmen, die sich bereits für Kubernetes und Container entschieden haben, nur minimal. Diejenigen, die sich für Service Mesh und Microservices einsetzen, werden Knative als natürliche Erweiterung empfinden.
Anwendungsfälle von Knative
Für Anwendungen, die zu einer variablen Anzahl von Ereignissen führen, die innerhalb oder über zeitlich festgelegte Grenzen bleiben, ist Knative am besten geeignet. Zu den spezifischen Anwendungsfällen des serverlosen Knative-Frameworks gehören:
Wesentlich ist die Veranstaltungsorientierung. Wenn IT-Teams sich eine Anwendung nicht als eine Reihe von Ereignissen statt Transaktionen vorstellen können, ist Knative aus Funktions- und Effizienzgründen möglicherweise keine gute Wahl.
Voraussetzungen und Installation von Knative
Wie wir in den obigen Abschnitten gesehen haben, ist Knative eine Reihe von Komponenten wie Eventing und Serving, die auf einem Service-Mesh- und Workload-Orchestrierungs-Cluster ausgeführt werden. Es gibt Befehlszeilenprogramme, die wir für einen einfachen Betrieb installieren müssen. Daher benötigen wir einige Abhängigkeiten, um sicherzustellen, dass wir mit der Installation fortfahren können.
Voraussetzungen
Es gibt mehrere Möglichkeiten, Kubernetes zu installieren. Docker Desktop ermöglicht einen einfachen Kubernetes-Cluster, der verschiedenen Zwecken dient. Der einfache Ansatz besteht darin, Kubernetes in Docker zu verwenden, um den Kubernetes-Cluster zusammen mit den Docker-Containerknoten auszuführen. Der bequeme Weg, mit dem Cluster zu arbeiten, ist die Verwendung des Knative-Befehlszeilentools.
Die Knative CLI bietet eine einfache und schnelle Schnittstelle zum Erstellen ihrer Ressourcen. Es hilft bei komplexen Aufgaben wie Traffic-Splitting und Autoscaling. Der bequeme Weg ist, die kompatible Binärdatei von der GitHub-Seite herunterzuladen.
Installation
Sobald wir alle Voraussetzungen erfüllt haben, können wir mit der Installation der Komponenten fortfahren. Für die Entwicklungsumgebung gibt es ein Quickstart-Plugin. Das Plugin hilft bei der Installation eines lokalen Knative-Clusters mit dem Knative-Client. Sie können das Quickstart-Plugin von der offiziellen Release-Seite herunterladen.
Fazit: Die Zukunft von Knative
Knative hat serverloses Computing durch die Bereitstellung einer automatischen Skalierung von Anwendungen ersetzt. Es hat einen erheblichen Einfluss auf das interoperable und modulare System.
In Zukunft wird erwartet, dass Knative aktuelle Mängel abdeckt und zu einer der effizientesten Technologien für den Betrieb der serverlosen Architektur wird.
Die Knative-Technologie ist für Entwickler einflussreicher, da sie ihre Vorteile gegenüber serverlosen Alternativen betrachtet. Knative hilft Ihnen dabei, viel Zeit zu sparen, indem es die Erstellung und Wartung der Kubernetes-Erweiterungen überflüssig macht. Entwickler sind mit der Knative-Technologie ziemlich zufrieden, da sie einfach zu bedienen und eine großartige Alternative zu serverlosen Lösungen ist.
Wenn Sie also die Leistung der Kubernetes-Umgebung in Ihren Cloud-Workflows maximieren möchten, übernehmen Sie die Knative-Technologie und überzeugen Sie sich selbst von den Vorteilen.