Knative — platformĂ« si shĂ«rbim bazuar nĂ« k8s me mbĂ«shtetje pĂ«r serverless

Knative — platformĂ« si shĂ«rbim bazuar nĂ« k8s me mbĂ«shtetje pĂ«r serverless

Platforma dominuese për vendosjen e konteinerëve, pa dyshim, është Kubernetes. Ajo ofron mundësinë për të menaxhuar gjithçka, duke përdorur API-të e saj dhe kontrolluesit përdorues që zgjasin API-të e saj përmes burimeve të përdoruesit.

MegjithatĂ«, pĂ«rdoruesi duhet ende tĂ« marrĂ« vende tĂ« detajuara se si tĂ« vendosĂ«, konfiguroni, menaxhoni dhe shkallĂ«zoni aplikacionet. Çështjet e shkallĂ«zimit tĂ« aplikacioneve, sigurisĂ« dhe kalimit tĂ« trafikimit mbeten nĂ« discretion tĂ« pĂ«rdoruesit. Kjo e veçon Kubernetes nga "platforma si shĂ«rbim" (PaaS) tĂ« zakonshme, si Cloud Foundry dhe Heroku.

Platforma ofrojnë një ndërfaqe përdoruesi të thjeshtëzuar, të orientuar drejt zhvilluesve të aplikacioneve, të cilët shpesh merren me konfigurimin e aplikacioneve të veçanta. Rrugëzimi, vendosja dhe metrikat menaxhohen në mënyrë transparente për përdoruesin nga sistemi bazë PaaS.

PunĂ«tori "burim kodi – dorĂ«zim" pĂ«rpunon PaaS duke krijuar njĂ« imazh tĂ« personalizuar tĂ« konteinerit, duke e vendosur atĂ«, duke konfiguruar njĂ« rrugĂ« tĂ« re dhe njĂ« nĂ«n-domain DNS pĂ«r trafikun e ardhshĂ«m. TĂ« gjitha kĂ«to nisin me komandĂ«n git push.

Në Kubernetes (me qëllim) ofrohen vetëm blloqet bazike për këto platforma, duke i dhënë komunitetit mundësinë për ta bërë këtë punë vetë. Siç tha Kelsey Hightower:

Kubernetes është një platformë për ndërtimin e platformave. Pozita më e mirë për të nisur, por jo për të përfunduar.

Si rezultat, ne shohim një grumbull ndërtimesh Kubernetes, si dhe hostesh që përpiqen të krijojnë PaaS për Kubernetes, siç janë OpenShift dhe Rancher. Në kontekstin e tregut në rritje Kube-PaaS, në skenë del Knative, i krijuar në korrik 2018 nga kompanitë Google dhe Pivotal.

Knative u krijua si rezultat i punës së përbashkët të Google dhe Pivotal, me mbështetje të vogël nga kompani të tjera, si IBM, RedHat dhe Solo.im. Ai ofron gjëra të ngjashme PaaS për Kubernetes me mbështetje të klasit të parë për aplikacione të bazuara në llogaritje pa server. Ndryshe nga ndërtimet e Kubernetes, Knative instalohet si një shtesë në çdo grup Kubernetes të përputhshëm, duke u konfiguruar përmes burimeve të përdoruesit.

ÇfarĂ« Ă«shtĂ« Knative?

Knative përshkruhet si «Platformë e bazuar në Kubernetes për dërgimin dhe menaxhimin e ngarkesave të punës duke përdorur llogaritë moderne pa server». Knative, duke e shpallur veten si një platformë të tillë, automatikisht shkallëzon konteinerët në përpjesëtim me kërkesat e përbashkëta HTTP. Shërbimet që nuk përdoren në fund shkallëzohen deri në zero, duke ofruar shkallëzim sipas kërkesës në stilin e llogaritjes pa server.

Knative përbëhet nga një grup kontrolluesish që instalohen në çdo klaster Kubernetes dhe ofrojnë këto mundësi:

  • ndĂ«rtimi i aplikacioneve tĂ« kontejnerizuara nga kodi burimor (ofrohet nga komponenti Build),
  • sigurimi i aksesit tĂ« trafikut tĂ« ardhshĂ«m nĂ« aplikacione (ofrohet nga komponenti Serving),
  • dĂ«rgimi dhe automatizimi i shkallĂ«zimit tĂ« aplikacioneve sipas nevojĂ«s (po ashtu ofrohet nga komponenti Serving),
  • definimi i burimeve tĂ« ngjarjeve qĂ« çojnĂ« nĂ« aktivizimin e aplikacioneve (ofrohet nga komponenti Eventing).

Komponenti kryesor është Serving, i cili ofron dërgimin, shkallëzimin automatike dhe menaxhimin e kalimit të trafikut për aplikacionet e menaxhuara. Pas instalimit të Knative, mbetet akoma qasja e plotë në API-në e Kubernetes, që u lejon përdoruesve të menaxhojnë aplikacionet në mënyrën më të zakonshme, si dhe shërben për ndihmën e shërbimeve Knative, duke punuar me të njëjtat primitive API që këto shërbime përdorin (modulet, shërbimet, etj.).

Me ndihmën e Serving gjithashtu automatizohet kalimi i trafikut blue-green, duke siguruar ndarjen e trafikshëm midis versioneve të reja dhe atyre të vjetra të aplikacionit kur përdoruesi dërgon një version të përditësuar të aplikacionit.

Knative varet nga instalimi i një kontrolluesi ingress të përputhshëm. Në momentin e shkrimit të këtij artikulli, mbështeten Gloo API Gateway dhe Istio Service Mesh. Ai do të konfigurojë ingress-in e disponueshëm për të rregulluar trafikun drejt aplikacioneve të menaxhuara nga Knative.

Istio Service Mesh mund të bëhet një varësi e madhe për përdoruesit Knative që dëshirojnë ta provojnë atë pa instaluar panelin e kontrollit Istio, pasi Knative varet vetëm nga gateway.

Për këtë arsye, shumica e përdoruesve preferojnë Gloo si portë për Knative, duke ofruar një grup të ngjashëm mundësish me Istio (kur flasim për qëllimin e përdorimit vetëm të Knative), si dhe duke përdorur ndjeshëm më pak resurse dhe duke krijuar kostot më të ulëta të funksionimit.

Le të shohim Knative në veprim në një skenë. Do të përdor një klaster të sapoinstaluar, të nisur në GKE:

kubectl get namespace
NAME          STATUS   AGE
default       Aktiv   21h
kube-public   Aktiv   21h
kube-system   Aktiv   21h

Të fillojmë me instalimin e Knative dhe Gloo. Kjo mund të bëhet në çdo rend:

# стаĐČĐžĐŒ Knative-Serving
kubectl apply -f 
 https://github.com/knative/serving/releases/download/v0.8.0/serving-core.yaml
namespace/knative-serving created
# ...
# стаĐČĐžĐŒ Gloo
kubectl apply -f 
  https://github.com/solo-io/gloo/releases/download/v0.18.22/gloo-knative.yaml
namespace/gloo-system created
# ...

Kontrollojmë që të gjitha Pods janë në statusin 'Running':

kubectl get pod -n knative-serving
NAME                              READY   STATUS    RESTARTS   AGE
activator-5dd55958cc-fkp7r        1/1     Running   0          7m32s
autoscaler-fd66459b7-7d5s2        1/1     Running   0          7m31s
autoscaler-hpa-85b5667df4-mdjch   1/1     Running   0          7m32s
controller-85c8bb7ffd-nj9cs       1/1     Running   0          7m29s
webhook-5bd79b5c8b-7czrm          1/1     Running   0          7m29s
kubectl get pod -n gloo-system
NAME                                      READY   STATUS    RESTARTS   AGE
discovery-69548c8475-fvh7q                1/1     Running   0          44s
gloo-5b6954d7c7-7rfk9                     1/1     Running   0          45s
ingress-6c46cdf6f6-jwj7m                  1/1     Running   0          44s
knative-external-proxy-7dd7665869-x9xkg   1/1     Running   0          44s
knative-internal-proxy-7775476875-9xvdg   1/1     Running   0          44s

Gloo është gatshëm për ruterimin, le të krijojmë një shërbim Knative që mund të përshtatet automatikisht (të cilin do ta quajmë kservice) dhe të drejtojmë trafikun tek ai.

ShĂ«rbimet Knative ofrojnĂ« njĂ« mĂ«nyrĂ« mĂ« tĂ« lehtĂ« pĂ«r tĂ« shpĂ«rndarĂ« aplikacione nĂ« Kubernetes — nĂ« krahasim me modelin e zakonshĂ«m Deployment+Service+Ingress. Do tĂ« punojmĂ« me njĂ« shembull tĂ« tillĂ«:

apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
 name: helloworld-go
 namespace: default
spec:
 template:
   spec:
     containers:
       - image: gcr.io/knative-samples/helloworld-go
         env:
           - name: TARGET
             Value: Përdorues Knative

E kam kopjuar këtë në një file, pastaj e aplikova atë në klasterin tim Kubernetes në këtë mënyrë:

kubectl apply -f ksvc.yaml -n default

Mund tĂ« shohim burimet e krijuara nga Knative nĂ« klaster pas shpĂ«rndarjes sĂ« ‘helloworld-go’ kservice:

kubectl get pod -n default
NAME                                              READY   STATUS    RESTARTS   AGE
helloworld-go-fjp75-deployment-678b965ccb-sfpn8   2/2     Running   0          68s

Pod-i me imazh ‘helloworld-go’ niset kur shpĂ«rndahet kservice. NĂ«se nuk ka trafiku — numri i pod-eve do tĂ« reduktohet nĂ« zero. Dhe anasjelltas, nĂ«se numri i kĂ«rkesave tĂ« njĂ«kohshme tejkalon njĂ« vlera e caktuar, numri i pod-eve do tĂ« rritet.

kubectl get ingresses.networking.internal.knative.dev -n default
NAME            READY   REASON
helloworld-go   E vërtetë

Knative konfiguron ingress-in e tij duke përdorur një burim të veçantë 'ingress' në API-në e brendshme të Knative. Gloo e merr këtë API si konfigurimin e tij për të ofruar karakteristika tipike të PaaS, duke përfshirë modelin blue-green të shpërndarjes, zbatimin automatik të TLS, skedat e kohës dhe veçori të tjera të avancuara të ruterimit.

Pas pak kohe, ne vërejmë se pod-et tona janë zhdukur (pasi nuk kishte trafik në hyrje):

kubectl get pod -n default

Nuk janë gjetur burime.
kubectl get deployment -n default
EMRI                             DËSHIRUAR   AKTUAL   DERGIM I DËSHIRUAR   I DISPONUESHËM   MOSHA
helloworld-go-fjp75-deployment   0         0         0            0           9m46s

Së fundmi, ne do të mundohemi t'i qasemi atyre. Të marrim URL-në për Knative Proxy është e lehtë dhe e thjeshtë me anë të glooctl:

glooctl proxy url --name knative-external-proxy
http://35.190.151.188:80

Pa instaluar glooctl mund të shikoni adresën dhe portin në kube service:

kubectl get svc -n gloo-system knative-external-proxy
EMRI                     LLOJI           CLUSTER-IP     EXTERNAL-IP      PORT(S)                      MOSHA
knative-external-proxy   LoadBalancer   10.16.11.157   35.190.151.188   80:32168/TCP,443:30729/TCP   77m

Le të ekzekutojmë pak të dhëna me anë të cURL:

curl -H "Host: helloworld-go.default.example.com" http://35.190.151.188
Përshëndetje përdorues i Knative!

Knative ofron një pothuajse-PaaS për zhvilluesit mbi Kubernetes 'nga kutia', duke përdorur një gateway API Gloo me performancë të lartë dhe të plotë. Kjo shënim vetëm i preku lehtësisht numrin e gjithanshëm të mundësive të Knative, të cilat janë të disponueshme për t'u konfiguruar, si dhe veçori shtesë. Igloo është po ashtu!

Pavarësisht faktit se Knative është ende një projekt i ri, ekipi i tij lëshon versione të reja çdo gjashtë javë, duke filluar implementimin e veçorive të avancuara, si zbatimi automatik i TLS dhe auto-skalimi i panelit të kontrollit. Ka shanse të larta që për shkak të bashkëpunimit të kompanive të shumta të cloud, si dhe si bazë për ofertën e re Cloud Run nga Google, Knative mund të bëhet opsioni kryesor për organizimin e llogaritjeve pa server dhe PaaS në Kubernetes. Qëndroni të informuar!

Nga redaksia e SouthBridge
Na intereson mendimi i lexuesve, prandaj ju lutemi të merrni pjesë në një anketë të vogël në lidhje me artikujt e ardhshëm mbi Knative, Kubernetes, llogaritjet pa server:

Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. Hyni, ju lutem.

Të përkthejmë, të shkruajmë më shumë artikuj dhe udhëzime mbi Knative dhe llogaritjet pa server?

  • Po, ju lutem.

  • Faleminderit, jo.

28 përdorues votuan. 4 përdorues abstenuan.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster