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

By rik

Under de senaste åren har intresset för serverlösa ramverk ökat kraftigt bland utvecklare, vilket lett till en markant ökning av deras användning.

Trots detta är containerbaserade applikationer redan etablerade och populära, och Kubernetes är en viktig teknik för många företag.

Kubernetes är utan tvekan ett kraftfullt verktyg med stor potential, och dess ekosystem växer kontinuerligt med nya verktyg och den senaste tekniken, som Knative. Knative har potentialen att ytterligare förbättra Kubernetes funktionalitet.

Knative skapades för att hantera situationer som kan leda till fel och för att etablera en standard för molnplattformar och molnbaserad orkestrering.

Med andra ord kan Knatives serverlösa ramverk vara ett bättre alternativ än andra molnbaserade implementeringar för att möta ett företags specifika behov.

Denna guide utforskar Knative, dess fördelar, användningsområden, installationsprocess, arbetssätt och mycket mer.

Låt oss börja!

Vad är Knative?

Knative är ett serverlöst ramverk byggt ovanpå Kubernetes, som ursprungligen utvecklades av Google. Det laddar och kör serverlösa funktioner baserat på ett företags specifika krav och minimerar därmed resursslöseri. Som ett projekt med öppen källkod tillhandahåller det komponenter för att distribuera, köra och hantera serverlösa applikationer på Kubernetes.

Huvudsyftet med Knatives serverlösa ramverk är att standardisera orkestreringen mellan olika plattformar. Detta uppnås genom att integrera funktioner för att skapa containrar, automatisk skalning, händelsemodeller och hantering av arbetsbelastning.

Tidigare fanns det flera andra öppna källkodslösningar än Knative. Varje lösning hade sitt eget implementeringssätt, vilket ledde till fragmentering på marknaden på grund av avsaknaden av standardiserade metoder. Detta innebar att användare behövde välja en specifik leverantör för att få tillgång till vissa systemfunktioner.

Emellertid blev migrationsproblem allt mer uppenbara. För att lösa dessa problem introducerades Knative som ett serverlöst ramverk. Knative kan effektivt hantera olika uppgifter inom den Kubernetes-baserade pipeline om du har svårigheter att integrera dem.

Knative består av tre huvuddelar:

  • Knative Build: Bygger containeravbilder och gör dem tillgängliga från källkoden.
  • Knative Serving: Använder Istio och Kubernetes för att ansluta och distribuera dessa containeravbilder via tilldelade infrastrukturresurser.
  • Knative Eventing: Tillåter användare att definiera händelseutlösare och associera dem med containerfunktioner.

När Knative identifierar en händelse, definierar den den associerade processen för att köra den på begäran. Med Knative behöver du inte allokera containernoder, kluster och poddar i förväg, eftersom Knative endast allokerar resurser när en specifik process körs. På detta sätt balanserar Knative fördelarna med både serverlös teknik och containerisering.

Knatives Kärnbegrepp

Låt oss granska de centrala koncepten i Knative Serverless Framework och deras relation till Knatives grundläggande element.

Bygg

Knative-bygg hjälper till att utnyttja och utöka befintliga Kubernetes-funktioner, så att du kan utföra containerbyggen direkt från källkoden. Det möjliggör hämtning av källkod från olika beroenden och arkiv, bygger containeravbilder och registrerar dem.

Event

Event-hantering underlättar bättre kommunikation mellan löst kopplade händelsekonsumenter och -producenter för att skapa händelsedriven arkitektur. Knative placerar dessa händelser i en kö som körs automatiskt utan behov av utvecklarens skript.

Dessa händelser levereras sedan till containrarna och skickar flöden till händelseproducenterna för att utföra uppgifter. Detta minskar utvecklarens arbetsbörda när det gäller att skriva kod för anslutningsetablering.

Funktioner

En funktion är en oberoende enhet för distribution och en Knative-serveringstjänst, som en mikrotjänst. Koden är skriven för att utföra en enskild uppgift, exempelvis:

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

Knative serverlösa ramverk är utformat för att låta dig utveckla, distribuera och hantera funktioner effektivt.

Plugins

Du kan utöka eller skriva över funktionaliteten hos Knative serverlösa ramverk med hjälp av plugins. Varje serverless.yml-fil innehåller en plugin-egenskap som kan innehålla olika plugins.

Resurser

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

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

Och mycket mer.

Tjänster

Tjänster kan liknas vid projekt. I Knatives serverlösa ramverk är en tjänst en organisatorisk enhet. Även om en applikation kan ha flera tjänster, kan man betrakta en tjänst som en projektfil.

Det är här du definierar funktioner, händelser och resurser, allt i en enda fil med namnet serverless.yml, serverless.json eller serverless.js. När du distribuerar tjänster med det serverlösa ramverket distribueras allt innehåll i filen samtidigt.

Servering

Knative-serving är inbyggt i Istio och Kubernetes och stöder applikationsdistribution. Det underlättar snabb utveckling av serverlösa containrar, nätverksprogrammering och automatisk skalning för Istio-komponenter. Knative-serving betraktar containrar som en skalbar tjänst, som kan anpassas från en enskild instans till flera instanser.

Funktioner i Knative

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

  • Knative är ett Kubernetes-baserat serverlöst ramverk som låter dig distribuera tjänster till Kubernetes.
  • Knative integreras enkelt 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 möjliggör att serverlösa tjänster kan utlösas med hjälp av Knatives händelsesystem.

Hur fungerar Knative?

Knative serverlösa ramverk fungerar som ett händelsestyrningssegment och kopplar samman Istio och Kubernetes. Kubernetes fungerar som en orkestrator för mikrotjänster och containrar. Istio är en öppen källkodsteknik som förenar olika komponenter för att interagera med användare och sinsemellan.

Knative ger användarna flera komponenter för att utföra grundläggande dagliga uppgifter. Dessa komponenter kan återanvändas i olika applikationer. Utvecklare kan använda valfritt programmeringsspråk. Knative känner endast igen containeravbilder, vilket gör att du inte behöver specifika språkkunskaper.

Det finns tre huvudkomponenter i Knative serverlösa ramverk som är nyckeln till dess funktion.

Bygga nya containrar

Byggkomponenten ansvarar för att skapa nya containrar. Den konverterar källkod till en container. Knative kan konfigureras för att möta specifika affärsbehov.

Först hämtar Knative källkoden från ett bibliotek som Github. Sedan läggs underliggande beroenden till för att koden ska fungera effektivt. Containeravbilder skapas och placeras i filer som Kubernetes-plattformen kan komma åt.

Containern görs tillgänglig för utvecklare som använder Kubernetes och Knative. På detta sätt byggs containrar så länge kodens ursprung är känt.

Servera eller driva plattformen

Serveringskomponenten ansvarar för driften av plattformen och inkluderar:

  • Konfiguration: Konfigurationen är säker vid hantering av flera versioner av tjänsten. Varje gång en ny funktion distribueras i en container sparar Knative den befintliga versionen och skapar en ny med de senaste ändringarna och funktionerna. Knative definierar även tillståndet för en tjänst.
  • Automatisk skalning: För att serverlösa containrar ska fungera effektivt måste de kunna skalas upp eller ned automatiskt. Knative kan automatiskt skala tjänster till många instanser om det behövs.
  • Intelligent tjänstrouting: En viktig del av Knatives arbetsmekanism. Den låter utvecklare styra flödet och mängden trafik till olika versioner av mikrotjänster. Intelligent tjänstrouting kan användas i samband med introduktion av nya funktioner och blågrön-distributionsstrategier.

Detta gör att du kan exponera en bråkdel av användarna för de senaste testerna och versionen och gradvis omdirigera mer trafik till den nya versionen.

Eventing för att definiera funktioner

Eventing-komponenten i Knative är ansvarig för att beskriva Knatives funktion. Den definierar hur containrar körs baserat på händelser. Olika händelser triggar specifika funktioner i containrarna.

Utvecklare kan definiera händelseutlösare och tillhörande containrar för att låta Knative göra sitt jobb. Knative hanterar listan över händelser och leveransen av dessa.

Fördelar med Knative

Knative tillhandahåller tjänster som routningshantering, stegvis lansering och tjänsteanslutning, och har ett stort community. Låt oss undersöka hur Knative påverkar företag som anammar denna teknik.

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

  • Knative ger ett flexibelt ramverk.
  • Det stöder stegvis utrullning.
  • Du kan uppleva det serverlösa ekosystemet i en containermiljö.
  • Knative minskar behovet av egen hantering och egna verktyg.
  • Du kan snabbt migrera till andra molnleverantörer som är integrerade med Knative genom att implementera Kubernetes.
  • Det erbjuder en begäransdriven 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å programmering och snabbt skapa iterativ kod.
  • Det ser till att utvecklare införlivar nya versioner.
  • Knatives händelsebaserade modell hjälper till att implementera design, inklusive prenumeration, anslutning till externa system och registrering.

Knatives Utmaningar (och Lösningar)

Effektivitetsutmaningar

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

En dåligt dimensionerad resurspool eller felaktiga applikationer kan därmed omintetgöra många av Knatives fördelar.

Du kan övervinna denna utmaning genom att utföra tester för att verifiera resurskvantiteter och applikationsmixen på Knative. Mät händelselaster 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 som validerar uppskattningarna.

Funktionella Utmaningar

Funktionella utmaningar i Knative kan vara:

  • Knative är beroende av funktioner som är anpassade till en tillståndslös modell, vilket innebär att ingen data lagras i själva komponenten. Utvecklingen av funktionerna är inte svår, men det kräver ett visst skifte i arbetssättet. Ett enda misstag kan få konsekvenser för programvarans prestanda.
  • Affärsdata består av transaktioner i flera steg, och tillståndslösa funktioner bevarar kontext över alla steg. Knative saknar den förmåga som offentliga molnserverlösa verktyg kan erbjuda.

Regelbunden övervakning och åtgärdande av problem hjälper till att hålla prestandan på en acceptabel nivå.

Operativa Utmaningar

Jämfört med de serverlösa erbjudandena i ett offentligt moln finns det en driftutmaning med Knative. Administratörer kontrollerar inte de underliggande servrarna med det offentliga molnet. Men med Knative behöver de hantera servrar, Kubernetes, containrar, Knative och Istio på egen hand.

Knative ökar drifts- och utvecklingskomplexiteten minimalt för de företag som redan använder Kubernetes och containrar. De som redan arbetar med servicenät och mikrotjänster kommer att uppleva Knative som en naturlig förlängning.

Användningsfall för Knative

Knative passar bäst för applikationer som genererar ett varierande antal händelser inom eller över tidsbestämda gränser. Specifika användningsfall för Knative serverlösa ramverk inkluderar:

Händelseorientering är viktig. Om IT-team inte ser en applikation som en serie händelser snarare än transaktioner, är Knative kanske inte ett lämpligt val av funktionalitetsskäl och effektivitetsskäl.

Förutsättningar och Installation av Knative

Som vi har sett i föregående avsnitt, ä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 att förenkla användningen. Därför krävs vissa beroenden för att säkerställa att vi kan fortsätta med installationen.

Förutsättningar

Det finns flera sätt att installera Kubernetes. Docker Desktop erbjuder ett enkelt Kubernetes-kluster för olika syften. En enkel metod är att använda Kubernetes i Docker för att köra Kubernetes-klustret tillsammans med Docker-containernoderna. Det mest praktiska 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 resurser. Det underlättar komplexa uppgifter som trafikdelning och automatisk skalning. Ladda ner den kompatibla binärfilen från GitHub-sidan.

Installation

När alla förutsättningar är på plats kan vi fortsätta installera komponenterna. För utvecklingsmiljöer finns ett snabbstartsplugin. Insticksprogrammet hjälper dig att installera ett lokalt Knative-kluster med hjälp av Knative-klienten. Ladda ner snabbstartsplugin från den officiella releasesidan.

Slutsats: Framtiden för Knative

Knative har förändrat serverlös beräkning genom att möjliggöra automatisk skalning av applikationer. Det har en betydande inverkan på interoperabla och modulära system.

I framtiden förväntas Knative täcka nuvarande brister och bli en av de mest effektiva teknikerna för att implementera serverlös arkitektur.

Knative-tekniken är mer fördelaktig för utvecklare om man jämför dess fördelar med serverlösa alternativ. Knative hjälper dig att spara tid genom att eliminera behovet av att bygga och underhålla Kubernetes-tillägg. Utvecklare är nöjda med Knative-tekniken eftersom den är enkel att använda och ett utmärkt alternativ till serverlösa lösningar.

Om du vill maximera kraften i Kubernetes-miljön i dina molnarbetsflöden, bör du använda Knative-teknik och uppleva fördelarna själv.