En snabbguide till Knative Serverless Framework för nybörjare

Serverlösa ramverk har efterfrågats under de senaste åren och har sett en ökad användning bland utvecklare.

Ändå är containerbaserade applikationer redan populära, och det är Kubernetes även bland företag.

Kubernetes är utan tvekan ett bra verktyg med god potential. Dess ekosystem växer också med en mängd nya verktyg och den senaste tekniken, som Knative, som har kraften att göra Kubernetes ännu bättre.

Knative introducerades för att övervinna situationer som leder till misslyckanden och etablera en kärnstandard för molnplattformar och molnbaserad orkestrering.

Med andra ord kan Knatives serverlösa ramverk passa ett företags behov mycket bättre än andra molnbaserade serverlösa implementeringar.

I den här guiden kommer jag att prata om Knative, dess fördelar, användningsfall, installationsprocedur, arbetsprocedur och mer.

Nu kör vi!

Vad är Knative?

Knative är ett Kubernetes-baserat serverlöst ramverk som först utvecklades av Google. Den laddar och kör serverlösa funktioner baserat på ett företags krav och minimerar därmed slöseriet. Det är ett projekt med öppen källkod som lägger till komponenter för att distribuera, köra och hantera serverlösa applikationer på Kubernetes.

Det primära syftet med Knatives serverlösa ramverk är att hantera standarderna för orkestrering över plattformar. Detta implementeras genom att integrera funktionen för att skapa behållare, automatisk skalning, händelsemodeller och arbetsbelastningshantering.

Tidigare fanns det en mängd andra lösningar med öppen källkod än Knative. Varje lösning har sitt sätt att implementera, vilket kan orsaka marknadsfragmentering eftersom det saknas standardiserade metoder. Det betyder att det är nödvändigt att välja en specifik leverantör om du vill ha en viss systemfunktion.

Emellertid började migrationsproblem att komma till fronten. Och för att undvika sådana problem introducerades det Knative serverlösa ramverket. Så om du kämpar för att införliva några uppgifter, kan Knative effektivt göra det inom den Kubernetes-baserade pipeline.

Knative har tre delar:

  • Knative Build: Den bygger behållarbilder och gör dem tillgängliga från källkoden.
  • Knative Serving: Den använder Istio och Kubernetes för att ansluta och distribuera dessa containeravbildningar genom de tilldelade infrastrukturresurserna.
  • Knative Eventing: Det tillåter användare att definiera händelseutlösare och låter användare associera händelseutlösare med behållarfunktioner.

Närhelst Knative identifierar en händelse, definierar den den associerade processen för att köra den på begäran. Med Knative finns det inget behov av att allokera containernoder, kluster och poddar för arbete eftersom Knative endast binder värdresurser när en given process körs. På så sätt balanserar Knative serverlösa och containerfördelar.

Knatives kärnbegrepp

Låt oss diskutera Knative Serverless Frameworks huvudkoncept och hur de hänför sig till Knative primitiver.

Bygga

Knative-building hjälper till att använda och utöka de befintliga Kubernetes primitiver, så att du kan köra på containerbyggen från ursprunget. Det möjliggör källkoden från beroenden och arkivet, bygger behållarbilder och registrerar dem.

evenemang

Eventet hjälper dig att skapa bättre kommunikation mellan löst kopplade eventkonsumenter och producenter för att bygga den eventdrivna arkitekturen. Knative placerar dessa händelser i en kö som behövde utföras automatiskt utan utvecklarens skript.

Senare levereras dessa händelser till containrarna. Den skickar sedan flöden till evenemangsproducenterna för att utföra uppgifter. Detta kommer att minska utvecklarens arbetsbelastning när det gäller att skapa kod för anslutningsetablering.

Funktioner

En funktion är en oberoende distributionsenhet och en Knative serveringstjänst, som en mikrotjänst. Dess kod är skriven för att utföra en enda uppgift, till exempel:

  • Bearbeta en fil i en databas
  • Spara en användare i en databas
  • Utföra ett schemalagt arbete

Knativt serverlöst ramverk är utformat för att låta dig utveckla och distribuera funktioner effektivt och hantera dem.

Plugins

Utvidga eller skriv över funktionaliteten hos Knative serverlösa ramverk med plugins. Varje serverless.yml-fil innehåller en plugin-egenskap som innehåller olika plugins.

Resurser

Resurser är de Knative serverlösa infrastrukturkomponenterna som din funktion använder, inklusive:

  • AWS SQS händelsekälla
  • En schemalagd uppgift (kör var 5:e minut, 10:e minut, etc.)
  • En Kafka-händelsekälla

Och mer.

Tjänster

Tjänster är som ett projekt. Därför är en tjänst det Knative serverlösa ramverkets organisationsenhet. Även om du kan ha många tjänster för en applikation, kan du se tjänsten som en projektfil.

Det är där du kommer att kunna definiera funktioner, händelser och resurser, allt i en enda fil med titeln serverless.yml, serverless.json eller serverless.js. När du distribuerar tjänsterna med det serverlösa ramverket distribueras allt i filen på en gång.

Servering

Knative-serving är inbyggt i Istio och Kubernetes som stöder applikationsdistribution. Det möjliggör snabb utveckling av serverlösa behållare, nätverksprogrammering och automatisk skalning för Istio-komponenter. Knative-serving betraktar containrar som en skalbar tjänst som kan sträcka sig från en instans till många containerinstanser.

Funktioner av Knative

Låt oss diskutera några av funktionerna i det Knative serverlösa ramverket:

  • Knative är ett Kubernetes-baserat serverlöst ramverk som låter dig distribuera tjänster till Kubernetes.
  • Det integrerar enkelt Knative med den miljö som stöds
  • Utvecklare kan direkt använda Kubernetes API med hjälp av Knative för att distribuera serverlösa tjänster
  • Det gör det möjligt för användare att trigga serverlösa tjänster med hjälp av Knatives eventsystem

Hur fungerar Knative?

Knative serverlösa ramverk fungerar som ett händelsestyrningssegment och kopplar samman Istio och Kubernetes. Kubernetes fungerar som orkestrator för mikrotjänster och containrar. Istio, å andra sidan, är en mesh-teknik med öppen källkod som sammanför olika komponenter för att interagera med användaren och sig själva.

Knative ger användarna flera komponenter som är inriktade på att utföra grundläggande dagliga arbeten. Dessa komponenter används om och om igen i en mängd olika applikationer. En utvecklare kan använda vilket programmeringsspråk som helst. Därför behöver du inga specifika språkkunskaper eftersom Knative endast känner igen behållarbilder.

Det finns tre komponenter i det Knative serverlösa ramverket som är nycklarna till dess funktion.

Bygger nya containrar

Byggkomponenten ansvarar för att bygga nya containrar. Det kan konvertera källkoder till en behållare. Knative kan konfigureras för att möta affärsspecifika behov.

Först drar Knative ut källkoden från biblioteket som Github. Sedan läggs underliggande beroenden till så att koden körs effektivt. Behållarbilder konstrueras sedan och placeras i filer som Kubernetes-plattformen kan komma åt.

Behållaren görs tillgänglig för utvecklare som använder Kubernetes och Knative. Sålunda byggs containrar så länge kodens ursprung är känt.

Servera eller driva plattformen

Serveringskomponenten ansvarar för driften av plattformen. Det involverar:

  • Konfiguration: Konfigurationen är säker vid hantering av flera versioner av tjänsten. Varje gång det sker en distribution av den nya funktionen i en container, sparar Knative den befintliga versionen och skapar en ny med de senaste ändringarna och funktionerna. Dessutom definierar Knative tillståndet för en tjänst.
  • Automatisk skalning: För att bättre fungera serverlösa behållare måste du kunna autoskala behållarna antingen uppåt eller nedåt. Knative kan autoskala tjänster till många om det behövs.
  • Intelligent tjänst routing: Det är en viktig del av Knatives arbetsmekanism. Det låter utvecklare styra flödet och mängden trafik till olika befintliga versioner av mikrotjänsterna. Samtidigt som nya funktioner och blågröna distributionsstrategier introduceras, kan intelligent servicerouting användas.

Det låter dig exponera en bråkdel av användarna för de senaste testerna och versionen och gradvis dirigera stor trafik till den nya versionen.

Eventing för att definiera funktioner

Eventing-komponenten i Knative är ansvarig för att beskriva Knatives funktion. Det gör det möjligt att definiera hur behållarna körs baserat på händelser. Olika händelser utlöser specifika funktioner hos containrar.

Utvecklare kan definiera händelseutlösare och tillhörande behållare för att låta Knative göra sitt jobb. Knative hanterar listan över evenemang och leverans av evenemangen.

Fördelarna med Knative

Knative tillhandahåller tjänster som rutthantering, stegvis frigivning och tjänstanslutning. Det har ett stort samhälle. Låt oss diskutera hur Knative påverkar företag att ta till sig denna teknik.

  • Till skillnad från andra lösningar har Knative standardhändelser och är kompatibel med FaaS-lösningen. Det erbjuder ett CloudEvent-standardramverk som hjälper till att designa serverlös arkitektur.
  • Även om Knative inte är en PaaS, låter den dig skapa en serverlös PaaS med den serverlösa orkestreringsplattformen.
  • Knative har en fullfjädrad och mogen serverlös design.
  • Den stöder plattformsoberoende och ger dig en universell standard bland molnleverantörer för att eliminera chansen att binda leverantörer med en specifik lösning.

  • Knative ger en flexibel ram.
  • Den stöder proportionella fasade utgåvor.
  • Du kan uppleva det serverlösa ekosystemet i en containermiljö.
  • Knative tar bort tillförlitlighet för hantering och verktyg.
  • Du kan snabbt migrera till andra molnleverantörer som är integrerade med Knative genom att implementera Kubernetes.
  • Den erbjuder en förfrågningsstyrd beräkningsmodell.
  • Det låter dig hantera arbetsflöden som en tjänst.
  • Med Knative kan du bearbeta IoT-data, köra tillgänglighetskontroller och validera konfigurationer av dina säkerhetsgrupper.
  • Det låter utvecklare fokusera på kodningen och låta dem skapa iterativ kod snabbt.
  • Det säkerställer att utvecklare kommer att införliva nya versioner.
  • Knatives händelsebaserade modell hjälper till att implementera design, inklusive prenumeration, anslutning till det externa systemet och registrering.

Knatives utmaningar (och vissa lösningar)

Effektivitetsutmaningar

Ett Knative Framework som stöder korrekta applikationer ger bättre prestanda till en minimal kostnad. En felaktig blandning av applikationer kan dock resultera i högre kostnader och underutnyttjade containerresurser. Detta kan leda till dålig applikationsprestanda, vilket är den största utmaningen med Knative serverlös distribution.

Således kan en resurspool av dålig storlek eller felaktiga applikationer förstöra många Knative-fördelar.

Du kan övervinna denna utmaning genom att utföra tester för att verifiera resurskvantiteter och mixen av applikationer på Knative. Mät händelselasterna genom att dimensionera medel- och maximalbelastningarna för var och en och uppskatta den totala resursförbrukningen. Upprepa detta för flera applikationer för att skapa och köra en testkonfiguration för att validera uppskattningarna.

Funktionella utmaningar

Knatives funktionella utmaningar kan vara:

  • Knative är beroende av funktioner som passar en tillståndslös modell. Det betyder att ingen data lagras i själva komponenten. Utveckling av funktionerna är ingen svår fas, men det kräver en liten förskjutning i tillvägagångssättet, vilket innebär att ett enda misstag kan förstöra programvarans prestanda.
  • Affärsdata består av transaktioner i flera steg, och tillståndslösa funktioner upprätthåller kontext över alla steg. Knative har inte den förmågan som de offentliga molnserverlösa verktygen kan göra.

Regelbunden övervakning och åtgärdande av problem kan hjälpa dig att hålla din prestation på anständiga poäng.

Operativa utmaningar

Jämfört med de serverlösa erbjudandena i ett offentligt moln finns det en driftsutmaning med Knative. Administratörer kontrollerar inte de underliggande servrarna med det offentliga molnet. Men de kommer att behöva hantera servrar tillsammans med Kubernetes, containrar, Knative och Istio själv.

Knative utökar drift- och utvecklingskomplexiteten minimalt för de företag som redan har förbundit sig till Kubernetes och containrar. De som är engagerade i servicenät och mikrotjänster kommer att finna Knative som en naturlig förlängning.

Använd fall av Knative

För applikationer som ger upphov till ett varierande antal händelser som håller sig inom eller över tidsbestämda gränser, är Knative bäst för dem. Specifika användningsfall av Knative serverlösa ramverk inkluderar:

Eventorienteringen är viktig. Om IT-team inte kan föreställa sig en applikation som en serie händelser istället för transaktioner, kanske Knative inte är ett bra val av funktionella och effektivitetsskäl.

Förutsättningar och installation av Knative

Som vi ser i avsnitten ovan är Knative en uppsättning komponenter som eventing och servering som körs på ett servicenät och arbetsbelastningsorkestreringskluster. Det finns kommandoradsverktyg som vi behöver installera för enkel användning. Därför behöver vi några beroenden för att säkerställa att vi kan fortsätta med installationen.

Förutsättningar

Det finns flera alternativ för att installera Kubernetes. Docker Desktop kommer att möjliggöra ett enkelt Kubernetes-kluster som tjänar olika syften. Det enkla tillvägagångssättet är att använda Kubernetes i Docker för att köra Kubernetes-klustret tillsammans med Docker-behållarenoderna. Det bekväma sättet att arbeta med klustret är att använda kommandoradsverktyget Knative.

Knative CLI erbjuder ett enkelt och snabbt gränssnitt för att skapa sina resurser. Det hjälper i komplexa uppgifter som trafikdelning och automatisk skalning. Det bekväma sättet är att ladda ner den kompatibla binära filen från GitHub-sidan.

Installation

När vi har alla förutsättningar kan vi fortsätta att installera komponenterna. För utvecklingsmiljön finns en snabbstartsplugin. Insticksprogrammet hjälper till att installera ett lokalt Knative-kluster med hjälp av Knative-klienten. Du kan ladda ner snabbstartsplugin från den officiella releasesidan.

Slutsats: The Future of Knative

Knative har ersatt serverlös datoranvändning genom att tillhandahålla automatisk skalning av applikationer. Det har en betydande inverkan på det interoperabla och modulära systemet.

I framtiden förväntas det att Knative kommer att täcka nuvarande brister och bli en av de mest effektiva teknikerna för att köra den serverlösa arkitekturen.

Knativ teknologi är mer inflytelserik för utvecklare genom att titta på dess fördelar jämfört med serverlösa alternativ. Knative hjälper dig att spara mycket tid genom att ersätta behovet av att bygga och underhålla Kubernetes-tilläggen. Utvecklare är ganska nöjda med Knative-tekniken eftersom den är enkel att använda och ett utmärkt alternativ till serverlösa lösningar.

Så om du vill maximera kraften i Kubernetes-miljön i dina molnarbetsflöden, använd Knative-teknik och bevittna fördelarna själv.