Programmēšana

Pieci veidi, kā Kubernetes veikt bez servera

Nosauciet to par “bez servera”, sauciet par “notikumu vadītu skaitļošanu” vai “funkcijas kā pakalpojums (FaaS)”. Ideja ir tāda pati: dinamiski piešķirt resursus atsevišķu funkciju, galvenokārt mikropakalpojumu, darbībai, kuras tiek izsauktas atbildē. uz pasākumiem. Bezserveru skaitļošanas platformas ļauj lietojumprogrammu izstrādātājiem koncentrēties uz lietotni, nevis uz pamata infrastruktūru un visu tās pārvaldības informāciju.

Lielākā daļa mākoņpakalpojumu sniedzēju piedāvā sava veida bez serveriem platformu, taču jūs pats varat izveidot tikai divas sastāvdaļas. Viens no tiem ir konteineru orķestrēšanas sistēma Kubernetes, kas ir kļuvusi par standarta platformu komponētu, elastīgu lietojumprogrammu veidošanai. Otrais ir jebkura no vairākām sistēmām, ko izmanto, lai izveidotu bez servera lietojumprogrammu modeļus Kubernetes.

Lielākajai daļai Kubernetes bez servera ietvaru ir šādas kopīgas funkcijas:

  • Izvieto jebkurā vidē, kas atbalsta Kubernetes lokāli vai attālināti, tostarp tādās vidēs kā OpenShift.
  • Atbalsta skriešanas kodu, kas rakstīts jebkurā valodā, un daži kopīgi izpildlaiki ir fasēti kopā ar sistēmu.
  • Aktivizē koda izpildi ar daudzu veidu notikumiem - HTTP gala punktu, rindas ziņojumu vai kādu citu āķi.

Viena no galvenajām priekšrocībām, kad Kubernetes izveido bez servera, ir iegūt daudz lielāku kontroli pār pamatā esošo platformu. Daudzi bez servera piedāvājumi ierobežo to darbību uzvedību, kuras tās palaiž, dažreiz padarot noteiktas lietojumprogrammu klases nepraktiskas. Izmantojot Kubernetes, jūs varat izveidot bez servera platformu, kas atbilst jūsu vajadzībām, atstājot infrastruktūru jūsu Kubernetes operatoriem un ļaujot izstrādātājiem koncentrēties uz būtiska koda rakstīšanu.

Šeit ir pieci galvenie projekti, kas Kubernetes nodrošina bez servera funkcionalitāti.

Dalīšanās

Fission izveido un uztur pārvaldītā Kubernetes kompānija Platform 9. Galvenā slavas prasība ir tā, ka tā ļauj jums izveidot FaaS lietojumprogrammas, neveidojot konteinerus, vienkārši piegādājot definīcijas failus.

Fission var uzstādīt ar Helm diagrammu vai bez tās, un to var instalēt vienā no diviem izdevumiem. Ir pilna versija ar ziņojumu rindu un InfluxDB atbalstu reģistrēšanai, kā arī noņemtais izdevums ar pamata funkciju apkalpošanu. Pirmais ir paredzēts ražošanas izvietošanai, bet otrais - kājas samitrināšanai.

Lai pievienotu kodu Fission izvietojumam, izmantojiet YAML balstītus spec failus. Fission komandrindas rīki ļauj jums izveidot YAML failus savām funkcijām un maršrutiem, kurus izmanto, lai aktivizētu to ieejas punktus. Spec fails ļauj arī nodrošināt vides mainīgos, palīgtvertnes, sējumus un koda Kubernetes piesārņojuma / pielaides vadīklas.

Dalīšanās nodrošina arī “darbplūsmas”. Darbplūsmas, kuras instalē Helm diagramma, nodod vienas funkcijas izvadi citai funkcijai. Funkcijām pat nav jābūt vienā valodā. Ņemiet vērā, ka tas maksā veiktspējas izmaksas, jo katras funkcijas izeja tiek atveidota apmaiņas formātā, lai gan darbplūsmas sistēma atbalsta daudzus primitīvus bināros veidus, lai uzturētu pieskaitāmās izmaksas (piemēram, vesels skaitlis vai vispārēja baitu straume).

Viens no trūkumiem, kas sākotnēji bija saistīts ar FaaS, bija tas, ka pirmo reizi, kad tika izsaukta funkcija, bija jūtama kavēšanās palaist ar to saistīto konteineru. Fission uztur konteinerus iepriekš sasildītus, lai samazinātu latentumu, pirmo reizi darbojoties.

Fission piedāvā citas ērtības gan izstrādātājiem, gan administratoriem. Pakalpojumu var izvietot kopā, kurai nav ārējas piekļuves internetam, un kodu pēc pieprasījuma var ātri ielādēt klasterī. Funkciju darbību var arī ierakstīt un atskaņot, lai palīdzētu atkļūdot.

Fission projekts ir pieejams ar ļoti liberālu Apache licenci, tāpēc to var brīvi pārstrādāt pēc nepieciešamības.

Izveicīgs

Sākotnēji Google izveidoja, lai Kubernetes darbinātu bez servera lietotnes, un Knative koncentrējas uz modeļiem, kas kopīgi izvietošanai bez servera izvietošanā. Lai efektīvi izmantotu Knative, nepieciešama tieša pieredze daudzu Kubernetes komponentu pārvaldībā.

Papildus Kubernetes, Knative nepieciešama maršrutēšanas sistēma vai pakalpojumu tīkls, piemēram, Istio, taču var izmantot arī citas iespējas, piemēram, Ambassador un Gloo. Tas nozīmē nedaudz vairāk darba iestatīšanas, taču projektā ir detalizēti norādījumi par katras opcijas izmantošanu dažādos mākoņpakalpojumos un Kubernetes vidēs, ieskaitot vaniļas Kubernetes.

Knative darbojas galvenokārt, izmantojot vai paplašinot esošos Kubernetes rīkus un funkcionalitāti. Lietotnes vai funkcijas tiek konfigurētas, izmantojot YAML failus, un tiek piegādātas kā jūsu izveidotie Docker konteineri. Definīciju pievienošana, modificēšana vai dzēšana tiek veikta, izmantojot kubectl komandrindas lietotne. Lai iegūtu metriku par Knative lietotnēm, izmantojiet Grafana. Mērogošanu var veikt, izmantojot paša Knative autoskaleru vai jebkuru citu ar Kubernetes saderīgu mērogotāju, ieskaitot pielāgotu.

Knative ir smagā attīstības stadijā, un daudzi tā īpašie rīki joprojām ir neskaidrā stāvoklī. Tie ietverknctl, CLI speciāli Knative, kas ietaupa jums grūtības izmantot citus Kubernetes rīkus, lai pārvaldītu Knative, ja vēlaties vienkārši koncentrēties uz Knative; un ko, rīks Go lietotņu veidošanai vietnē Knative, novēršot konteinera izveides darbību.

Kubeless

Kubeless izveidoja Bitnami, vienkāršu tīmekļa lietojumprogrammu skursteņu vienkāršu instalētāju izstrādātāji. Kubeless izmanto Kubernetes vietējās pielāgoto resursu definīcijas, lai apstrādātu funkcijas, tāpēc starp Kubernetes metaforām un Kubeless funkcionalitāti ir nedaudz mazāk abstrakcijas.

Visizplatītākie valodu izpildlaiki tiek nodrošināti ar platformu: .NET, Java, Python, Node.js, PHP, Ruby, Go un pat jauno Ballerina valodu mākoņdatošanas attīstībai. Runtimes ir tikai Docker attēli, lai gan Kubeless ir īpašs iepakojuma formāts Dockerfiles izmantošanai, lai izveidotu pielāgotus izpildlaikus.

Vēl viena ērta Kubeless funkcija ir tās CLI, kas komandai ir identisks AWS Lambda CLI. Tas ir ārkārtīgi ērti, ja vēlaties pāriet no AWS Lambda, bet vēlaties saglabāt dažus no esošajiem pārvaldības skriptiem vai vienkārši nav jāapgūst pilnīgi jauna komandu kopa.

Kubeless darbojas arī kā spraudnis Serverless Framework - sistēmai bez serveriem paredzētu lietojumprogrammu veidošanai dažādās arhitektūrās. Ja jūs jau izmantojat Serverless vai Kubeless, jums būs vieglāk pievienot kādu no tiem, nevis izmantot kaut ko citu.

OpenFaaS

OpenFaaS piķis ir “vienkāršas servera funkcijas”. Vienkārši izstrādātāji nozīmē "nav daudz grūtāk par Docker konteinera izvietošanu".

OpenFaaS var izvietot vai nu Kubernetes, vai Docker Swarm klasterī (vietējai testēšanai vai zemas pieprasījuma lietošanai). Jūs izmantojat OpenFaaS CLI, lai izveidotu, virzītu un izvietotu Docker attēlus kopā, lai palaistu funkcijas. Esošās veidnes nodrošina iepriekš izveidotus veidus, kā izvietot lietotnes, kas rakstītas Go, Python, Node.js, .NET, Ruby, Java vai PHP 7, lai gan jūs vienmēr varat izveidot savu. OpenFaaS CLI nodrošina arī veidus, kā pārvaldīt klastera noslēpumus, savukārt iebūvētais tīmekļa interfeiss ļauj izveidot jaunas funkcijas un tās pārvaldīt.

Cita OpenFaaS versija, OpenFaaS Cloud, pārsaiņo OpenFaaS ar vairākiem izstrādātājiem paredzētām funkcijām, ieskaitot integrāciju ar Git (ieskaitot GitHub un GitLab paš mitinātos izdevumus), CI / CD, noslēpumu pārvaldību, HTTPS un iespēju plūsmas notikumiem uz Slack un citiem izlietnes. OpenFaas Cloud ir pieejams kā bezmaksas atvērtā koda produkts un mitinātā versijā, kuru pašlaik var izmantot bez maksas.

OpenWhisk

Apache OpenWhisk tiek apmaksāts kā vispārēja bez servera platforma. Kubernetes ir tikai viena no vairākām opcijām, kas pieejamas konteineru palaišanai OpenWhisk, jo OpenWhisk atbalsta arī Mesos un Docker Compose. Neskatoties uz to, priekšroka tiek dota Kubernetes, jo tā ir paredzēta lietotņu izvietošanai, īpaši Helm diagrammas. IBM Cloud Functions pamatā ir OpenWhisk projekts, tāpēc tas var strādāt arī ar OpenWhisk CLI komandām.

Atšķirībā no lielākās daļas citu bez servera Kubernetes ietvaru, OpenWhisk ir rakstīts Scala valodā, nevis Go (kurā ir rakstīti gan Kubernetes, gan Docker). Tas, visticamāk, ir problēma tikai tad, ja vēlaties uzlauzt OpenWhisk un jums ir tikai pieredze ar Go.

Lielākā daļa populāro lietojumprogrammu izpildlaika opciju ir fasētas ar OpenWhisk: Java, Node.js, Python, Ruby, PHP un .NET. Turklāt ir iekļautas arī daudzas ezotērikas un progresīvas iespējas: Scala, Ballerina, Swift un Rust. Runtimes ir tikai Docker konteineri, tāpēc ir viegli nodrošināt savus.

Viena ērta OpenWhisk izvietošanas funkcija ir “zip darbības”. Piešķiriet .zip koda un palīgfailu arhīvam OpenWhisk, izmantojot kodu pakotnes manifesta failu, un OpenWhisk no tā izveidos darbību. OpenWhisk CLI ietver arī rīkus, lai koda direktoriju koku pārveidotu par šādu arhīvu. Pakalpojumu pakotņu katalogs ļauj ērti pievienot jūsu lietojumprogrammu trešo personu piedāvājumiem, piemēram, GitHub, Slack, Apache Kafka vai Jira.

$config[zx-auto] not found$config[zx-overlay] not found