Eine Kurzanleitung zum Knative Serverless Framework für Anfänger

Serverlose Frameworks haben in den letzten Jahren an Popularität gewonnen und werden von Entwicklern immer häufiger eingesetzt.

Gleichzeitig erfreuen sich containerbasierte Anwendungen und insbesondere Kubernetes in Unternehmen großer Beliebtheit.

Kubernetes ist zweifellos ein leistungsstarkes Werkzeug mit erheblichem Potenzial. Sein Ökosystem wächst stetig mit einer Vielzahl neuer Tools und zukunftsweisender Technologien, wie beispielsweise Knative, das das Potenzial hat, Kubernetes noch effizienter zu machen.

Knative wurde entwickelt, um typische Fallstricke zu überwinden und einen einheitlichen Standard für Cloud-Plattformen und Cloud-native Orchestrierung zu etablieren.

Das serverlose Knative Framework kann die Anforderungen von Unternehmen oft besser erfüllen als andere cloudbasierte serverlose Lösungen.

In diesem Leitfaden werde ich Knative, seine Vorzüge, Anwendungsfälle, den Installationsprozess, die Funktionsweise und weitere Aspekte näher beleuchten.

Los geht’s!

Was ist Knative?

Knative ist ein auf Kubernetes basierendes serverloses Framework, das ursprünglich von Google entwickelt wurde. Es lädt und führt serverlose Funktionen basierend auf den jeweiligen Anforderungen eines Unternehmens aus und minimiert so Ressourcenverschwendung. Es handelt sich um ein Open-Source-Projekt, das Komponenten bereitstellt, um serverlose Anwendungen auf Kubernetes bereitzustellen, auszuführen und zu verwalten.

Der Hauptzweck des serverlosen Knative Frameworks ist die Verwaltung von Standards für die plattformübergreifende Orchestrierung. Dies wird durch die Integration von Funktionen für die Containererstellung, die automatische Skalierung, das Ereignismanagement und das Workload-Management erreicht.

In der Vergangenheit gab es neben Knative eine Vielzahl von Open-Source-Lösungen. Jede dieser Lösungen hatte ihren eigenen Bereitstellungsansatz, was zu einer Fragmentierung des Marktes aufgrund fehlender standardisierter Verfahren führte. Dies zwang Unternehmen, sich für einen bestimmten Anbieter zu entscheiden, wenn sie eine bestimmte Systemfunktionalität wünschten.

Migrationsprobleme traten jedoch immer häufiger auf. Um solche Schwierigkeiten zu vermeiden, wurde das serverlose Knative Framework ins Leben gerufen. Wenn Sie also Schwierigkeiten bei der Integration von Aufgaben haben, kann Knative dies effizient innerhalb einer Kubernetes-basierten Pipeline bewerkstelligen.

Knative besteht aus drei Hauptkomponenten:

  • Knative Build: Diese Komponente erstellt Container-Images aus dem Quellcode und stellt diese bereit.
  • Knative Serving: Diese Komponente nutzt Istio und Kubernetes, um diese Container-Images über die zugewiesenen Infrastrukturressourcen zu verbinden und bereitzustellen.
  • Knative Eventing: Diese Komponente ermöglicht es Benutzern, Ereignisauslöser zu definieren und diese mit containerisierten Funktionen zu verknüpfen.

Sobald Knative ein Ereignis erkennt, wird der entsprechende Prozess definiert, um ihn bei Bedarf auszuführen. Mit Knative ist keine Zuweisung von Containerknoten, Clustern und Pods erforderlich, da Hosting-Ressourcen nur bei der Ausführung eines bestimmten Prozesses zugewiesen werden. Auf diese Weise vereint Knative die Vorteile von serverlosen Umgebungen und Containertechnologien.

Kernkonzepte von Knative

Lassen Sie uns die wesentlichen Konzepte des serverlosen Knative Frameworks und ihre Beziehungen zu den Knative-Primitiven näher betrachten.

Bauen

Knative-Building hilft bei der Nutzung und Erweiterung der vorhandenen Kubernetes-Primitive, wodurch die Ausführung von Container-Builds direkt aus dem Quellcode ermöglicht wird. Es aktiviert den Quellcode aus den jeweiligen Abhängigkeiten und dem Repository, erstellt Container-Images und registriert diese.

Ereignisse

Das Eventing ermöglicht eine verbesserte Kommunikation zwischen lose gekoppelten Ereigniskonsumenten und -produzenten zur Realisierung einer ereignisgesteuerten Architektur. Knative reiht diese Ereignisse in eine Warteschlange ein, die automatisch ohne das Zutun von Entwicklerskripten abgearbeitet wird.

Diese Ereignisse werden dann an die entsprechenden Container weitergeleitet und anschließend an die Ereignisproduzenten zurückgesendet, um bestimmte Aufgaben auszuführen. Dies reduziert den Arbeitsaufwand für Entwickler bei der Erstellung von Code für die Verbindungsherstellung.

Funktionen

Eine Funktion ist eine unabhängige Deployment-Einheit und ein Knative Serving Service, ähnlich einem Microservice. Ihr Code ist so geschrieben, dass er eine einzelne Aufgabe ausführt, wie beispielsweise:

  • Die Bearbeitung einer Datei in einer Datenbank
  • Das Speichern eines Benutzers in einer Datenbank
  • Das Ausführen eines geplanten Jobs

Das serverlose Knative Framework wurde entwickelt, um die effektive Entwicklung, Bereitstellung und Verwaltung von Funktionen zu ermöglichen.

Plugins

Die Funktionalität des serverlosen Knative Frameworks kann einfach durch Plugins erweitert oder überschrieben werden. Jede serverless.yml-Datei enthält eine „plugin“-Eigenschaft, die verschiedene Plugins enthält.

Ressourcen

Ressourcen sind die serverlosen Infrastrukturkomponenten von Knative, die von Ihren Funktionen genutzt werden, einschließlich:

  • AWS SQS-Ereignisquelle
  • Geplante Aufgaben (Ausführung alle 5 Minuten, 10 Minuten usw.)
  • Eine Kafka-Ereignisquelle

Und viele mehr.

Dienste

Dienste sind ähnlich wie Projekte. Ein Dienst ist somit die Organisationseinheit im serverlosen Framework von Knative. Während es viele Dienste für eine Anwendung geben kann, kann ein Dienst als Projektdatei betrachtet werden.

Hier können Sie 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 gleichzeitig bereitgestellt.

Serving

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 einzelnen Instanz bis hin zu vielen Containerinstanzen skaliert werden kann.

Funktionen von Knative

Lassen Sie uns einige Funktionen des serverlosen Knative Frameworks betrachten:

  • Knative ist ein Kubernetes-basiertes serverloses Framework, das die Bereitstellung von Diensten auf Kubernetes vereinfacht.
  • Es ermöglicht die einfache Integration von Knative in unterstützte Umgebungen.
  • Entwickler können die Kubernetes-API mit Knative direkt nutzen, um serverlose Dienste bereitzustellen.
  • Es erlaubt Benutzern, serverlose Dienste mithilfe des Eventing-Systems von Knative auszulösen.

Wie funktioniert Knative?

Das serverlose Knative Framework dient als Steuerungssegment für Ereignisse 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 zusammenführt, um mit dem Benutzer und untereinander zu interagieren.

Knative bietet Benutzern mehrere Komponenten, die darauf ausgerichtet sind, grundlegende tägliche Aufgaben zu erledigen. Diese Komponenten werden immer wieder in einer Vielzahl von Anwendungen benötigt. Ein Entwickler kann jede beliebige Programmiersprache verwenden. Da Knative nur Container-Images erkennt, sind keine speziellen Sprachkenntnisse erforderlich.

Es gibt drei Kernkomponenten des serverlosen Knative Frameworks, die für seine Funktionsweise entscheidend sind.

Erstellung neuer Container

Die Build-Komponente ist für die Erstellung neuer Container verantwortlich. Sie kann Quellcode in einen Container konvertieren. Knative kann so konfiguriert werden, dass es den spezifischen Anforderungen eines Unternehmens entspricht.

Zunächst bezieht Knative den Quellcode aus einem Repository wie Github. Anschließend werden die notwendigen Abhängigkeiten hinzugefügt, damit der Code effektiv ausgeführt werden kann. Container-Images werden erstellt und in Dateien abgelegt, auf die die Kubernetes-Plattform zugreifen kann.

Die Container stehen dann Entwicklern zur Verfügung, die Kubernetes und Knative verwenden. Container werden also so lange gebaut, wie die Herkunft des Codes bekannt ist.

Bereitstellung oder Betrieb der Plattform

Die Serving-Komponente ist für den Betrieb der Plattform zuständig. Sie umfasst:

  • Konfiguration: Die Konfiguration ist wichtig für die Verwaltung mehrerer Versionen eines Dienstes. Immer wenn eine neue Containerfunktion bereitgestellt wird, speichert Knative die bestehende Version und erstellt eine neue mit den neuesten Änderungen. Darüber hinaus definiert Knative den Status eines Dienstes.
  • Automatische Skalierung: Für ein optimales Funktionieren serverloser Container ist es unerlässlich, diese automatisch nach oben oder unten zu skalieren. Knative kann Dienste bei Bedarf automatisch auf viele Instanzen skalieren.
  • Intelligentes Service-Routing: Dies ist ein wichtiger Bestandteil der Funktionsweise von Knative. Es ermöglicht Entwicklern, den Datenfluss und die Menge des Datenverkehrs auf verschiedene vorhandene Versionen von Microservices zu lenken. Intelligentes Service-Routing kann bei der Einführung neuer Funktionen und bei Blue-Green-Bereitstellungsstrategien eingesetzt werden.

Dies ermöglicht es, einen Bruchteil der Benutzer den neuesten Tests und Versionen auszusetzen und den Datenverkehr schrittweise an die neue Version weiterzuleiten.

Eventing zur Definition von Funktionen

Die Eventing-Komponente von Knative ist für die Beschreibung der Funktionalität von Knative verantwortlich. Sie ermöglicht die Ausführung von Containern basierend auf Ereignissen. Verschiedene Ereignisse lösen bestimmte Containerfunktionen aus.

Entwickler können die Ereignisauslöser und die zugehörigen Container definieren, damit Knative seine Aufgaben erfüllen kann. Knative kümmert sich um die Verwaltung der Ereignisliste und deren Zustellung.

Vorteile von Knative

Knative bietet Dienste wie Routenverwaltung, stufenweise Freigabe und Dienstverbindung. Es verfügt über eine große Community. Lassen Sie uns untersuchen, warum Unternehmen diese Technologie einsetzen.

  • Im Gegensatz zu anderen Lösungen bietet Knative standardisierte Ereignisse und ist mit FaaS-Lösungen kompatibel. Es bietet ein CloudEvent-Standardframework, das bei der Konzeption einer serverlosen Architektur hilfreich ist.
  • Obwohl Knative keine PaaS ist, ermöglicht die serverlose Orchestrierungsplattform die Entwicklung einer serverlosen PaaS.
  • Knative zeichnet sich durch ein voll ausgereiftes und durchdachtes serverloses Design aus.
  • Es unterstützt plattformübergreifende Bereitstellungen und bietet einen universellen Standard für alle Cloud-Anbieter, wodurch die Abhängigkeit von einem bestimmten Anbieter vermieden wird.

  • Knative bietet ein flexibles Framework.
  • Es unterstützt proportionale, gestaffelte Releases.
  • Sie können das serverlose Ökosystem in einer containerisierten Umgebung erleben.
  • Knative reduziert die Komplexität in Bezug auf Management und Tools.
  • Durch die Implementierung auf Kubernetes ist eine schnelle Migration zu anderen Cloud-Anbietern möglich, die in Knative integriert sind.
  • Es bietet ein anforderungsgesteuertes Rechenmodell.
  • Es ermöglicht die Verwaltung von Workflows als Dienst.
  • Mit Knative können IoT-Daten verarbeitet, Zugriffsprüfungen durchgeführt und Konfigurationen von Sicherheitsgruppen validiert werden.
  • Es ermöglicht Entwicklern, sich auf das Codieren zu konzentrieren und schnell iterativen Code zu erstellen.
  • Es stellt sicher, dass Entwickler neue Versionen problemlos integrieren können.
  • Das ereignisbasierte Modell von Knative unterstützt die Implementierung von Designs wie Abonnements, Verbindungen zu externen Systemen und Registrierungen.

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 kann zu einer schlechten Anwendungsleistung führen, was eine der größten Herausforderungen der serverlosen Bereitstellung mit Knative darstellt.

Ein schlecht dimensionierter Ressourcenpool oder die Verwendung ungeeigneter Anwendungen können die Vorteile von Knative zunichte machen.

Sie können diese Herausforderung meistern, indem Sie Tests durchführen, um die Ressourcenmengen und den Mix 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

Zu den funktionalen Herausforderungen von Knative gehören:

  • Knative ist auf Funktionen angewiesen, die einem zustandslosen Modell entsprechen. Das bedeutet, dass keine Daten innerhalb der Komponente gespeichert werden. Die Entwicklung der Funktionen ist keine schwierige Phase, erfordert jedoch eine leichte Änderung der Herangehensweise, was bedeutet, dass ein einzelner Fehler die Leistung der Software beeinträchtigen kann.
  • Geschäftsdaten bestehen aus Transaktionen mit mehreren Schritten, und zustandslose Funktionen müssen den Kontext über alle Schritte hinweg bewahren. Knative verfügt nicht über diese Fähigkeit in der gleichen Weise wie serverlose Public-Cloud-Tools.

Regelmäßige Überwachung und Behebung von Problemen können dabei helfen, die Leistung auf einem angemessenen Niveau zu halten.

Operative Herausforderungen

Im Vergleich zu serverlosen Angeboten in einer Public Cloud gibt es bei Knative einige betriebliche Herausforderungen. Administratoren haben in der Public Cloud keine Kontrolle über die zugrunde liegenden Server. Sie müssen jedoch Server zusammen mit Kubernetes, Containern, Knative und Istio selbst verwalten.

Knative erhöht die betriebliche und Entwicklungskomplexität für Unternehmen, die sich bereits für Kubernetes und Container entschieden haben, nur geringfügig. Für diejenigen, die sich für Service Meshes und Microservices interessieren, stellt Knative eine natürliche Erweiterung dar.

Anwendungsfälle von Knative

Knative eignet sich am besten für Anwendungen, die variable Ereignisanzahlen erzeugen, die innerhalb oder über vorgegebene Zeiträume auftreten. Zu den spezifischen Anwendungsfällen des serverlosen Knative Frameworks gehören:

Entscheidend ist die Eventorientierung. Wenn IT-Teams eine Anwendung nicht als eine Reihe von Ereignissen statt Transaktionen betrachten können, ist Knative aus funktionalen und Effizienzgründen möglicherweise keine gute Wahl.

Voraussetzungen und Installation von Knative

Wie in den vorherigen Abschnitten erläutert, ist Knative eine Reihe von Komponenten, wie Eventing und Serving, die auf einem Service-Mesh und einem Workload-Orchestrierungscluster laufen. Es gibt Befehlszeilenprogramme, die für den reibungslosen Betrieb installiert werden müssen. Daher benötigen wir einige Abhängigkeiten, um die Installation fortzusetzen.

Voraussetzungen

Es gibt verschiedene Möglichkeiten, Kubernetes zu installieren. Docker Desktop bietet einen einfachen Kubernetes-Cluster, der verschiedenen Zwecken dient. Der einfachste Ansatz ist die Verwendung von Kubernetes in Docker, um den Kubernetes-Cluster zusammen mit den Docker-Containerknoten auszuführen. Der komfortabelste Weg, mit dem Cluster zu arbeiten, ist die Verwendung des Knative-Befehlszeilentools.

Die Knative CLI bietet eine schnelle und benutzerfreundliche Schnittstelle für die Erstellung von Ressourcen. Sie hilft bei komplexen Aufgaben wie Traffic-Splitting und Autoscaling. Der einfachste Weg ist das Herunterladen der kompatiblen Binärdatei von der GitHub-Seite.

Installation

Sobald alle Voraussetzungen erfüllt sind, 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 das serverlose Computing durch die automatische Skalierung von Anwendungen revolutioniert. Es hat einen erheblichen Einfluss auf das interoperable und modulare System.

Es wird erwartet, dass Knative in Zukunft aktuelle Mängel beheben und sich zu einer der effizientesten Technologien für den Betrieb serverloser Architekturen entwickeln wird.

Die Knative-Technologie ist für Entwickler von großer Bedeutung, da sie Vorteile gegenüber serverlosen Alternativen bietet. Knative hilft Ihnen, viel Zeit zu sparen, da die Erstellung und Wartung von Kubernetes-Erweiterungen entfällt. Entwickler sind mit der Knative-Technologie zufrieden, da sie einfach zu bedienen ist und eine hervorragende Alternative zu herkömmlichen serverlosen Lösungen darstellt.

Wenn Sie also die Leistung der Kubernetes-Umgebung in Ihren Cloud-Workflows maximieren möchten, sollten Sie Knative in Erwägung ziehen und sich selbst von den Vorteilen überzeugen.