Knative — Kubernetesel pĂ”hinev teenus serverivaba toetusega.

Knative — Kubernetesel pĂ”hinev teenus serverivaba toetusega.

Kontenerite kÀitamiseks on kindlasti juhtiv platvorm Kubernetes. See pakub vÔimalust hallata peaaegu kÔike, kasutades oma API-sid ja kasutaja mÀÀratud kontrollerite, mis laiendavad selle API-d kasutajate ressursside kaudu.

Kuid kasutaja peab ikkagi tegema ĂŒksikasjalikke otsuseid selle ĂŒle, kuidas tĂ€pselt rakendusi kĂ€itada, seadistada, hallata ja skaleerida. Rakenduse skaleerimise, turvalisuse ja liikluse suunamisega seotud kĂŒsimused jÀÀvad kasutaja vastutusele. See eristab Kubernetesit tavalisest "platvormina teenus" (PaaS), nagu nĂ€iteks Cloud Foundry ja Heroku.

Platvormid pakuvad lihtsat kasutajaliidest, mis on suunatud rakenduste arendajatele, kes tihti tegelevad ĂŒksikute rakenduste seadistamisega. Suunamine, kĂ€itamine ja mÔÔdikud hallatakse kasutaja jaoks lĂ€bipaistvalt PaaS-i pĂ”hiteenusega.

Töövoog "allikas – tarnimine" töötleb PaaS, luues kasutaja mÀÀratud konteineripildi, selle kĂ€itamise, uue marsruudi seadistamise ja DNS-i alamdomeeni, et suunata saabuvat liiklust. KĂ”ik see kĂ€ivitatakse kĂ€su peale. git push.

Kubernetes pakub (sihilikult) vaid baasmooduleid platvormide jaoks, vĂ”imaldades kogukonnal selle töö ise Ă€ra teha. Kuidas ĂŒtles Kelsey Hightower:

Kubernetes on platvormide ehitamise platvorm. Parim koht alustamiseks, kuid mitte lÔpetamiseks.

Tulemusena nĂ€eme hulka Kubernetes'i jaotusi ning toimetajaid, kes pĂŒĂŒavad luua Kubernetes'i jaoks PaaS-i, nĂ€iteks OpenShift ja Rancher. TĂ”usva Kube-PaaS turu taustal astub ringile Knative, mis loodi 2018. aasta juulis Google'i ja Pivotal'i poolt.

Knative on tulemus Google'i ja Pivotal'i koostööst, vĂ€ikese panusega ka teistelt ettevĂ”tetelt, nagu IBM, RedHat ja Solo.im. See pakub sarnaseid PaaS lahendusi Kubernetes'e jaoks, pakkudes esmaklassilist tuge serverivabade arvutuste rakendustele. Erinevalt Kubernetes'i jaotustest installitakse Knative igasse ĂŒhilduvasse Kubernetes'i klastri kui lisand, mida seadistatakse kasutajate ressursside kaudu.

Mis on Knative?

Knative on kirjeldatud kui „Kubernetesi pĂ”hine platvorm tööde tarnimiseks ja haldamiseks kaasaegsete serverivabade arvutuste kaudu“. Knative, olles enese kohta nii öelnud, skaleerib automaatselt konteinerid proportsionaalselt samal ajal esitatavatele HTTP-pĂ€ringutele. Kasutamata teenused skaleeritakse lĂ”puks nulli, pakkudes nĂ”udmisel skaleerimist serverivabade arvutuste stiilis.

Knative koosneb komplektist kontrollereid, mis installitakse igasse Kubernetes'i klastrisse ja mis pakuvad jÀrgmisi vÔimalusi:

  • konteineriseeritud rakenduste koostamine allikakoodist (pakub komponent Build),
  • sissetuleva liikluse suunamine rakendustele (pakub komponent Serving),
  • rakenduste tarnimine ja automaatne skaleerimine nĂ”udmisel (pakutakse samuti komponendiga Serving),
  • sĂŒndmuste allikate mÀÀramine, mis kĂ€ivitavad rakenduste töö (pakutakse komponendiga Eventing).

Peamine komponent on Serving, mis pakub jaotust, automaatset skaleerimist ja liikluse haldamist hallatavatele rakendustele. PÀrast Knative'i installimist jÀÀb tÀielik juurdepÀÀs Kubernetes API-le, mis vÔimaldab kasutajatel hallata rakendusi. tavalise Samuti teenib see Knative teenuste tÔrkeotsinguks, töötades koos nende samade API primitiividega, mida need teenused kasutavad (moodulid, teenused jne).

Serving automatiseerib ka blue-green liikluse suunamise, tagades liikluse jagamise uute ja vanade rakenduse versioonide vahel, kui kasutaja tarnib rakenduse uuendatud versiooni.

Knative sĂ”ltub ĂŒhilduva ingress-kontrolleri installimisest. Artikli kirjutamise ajal toetatakse Gloo API Gateway ja Istio Service Mesh. See seadistab saadaval oleva ingressi liikluse suunamiseks hallatavatele Knative rakendustele.

Istio Service Mesh vÔib osutuda suureks sÔltuvuseks Knative'i kasutajatele, kes soovivad seda proovida ilma Istio juhtpaneeli installimata, kuna Knative sÔltub ainult vÀravast.

Selle pÔhjusel eelistab enamik kasutajaid Gloo-d Knative'i vÀravaks, mis pakub sarnast funktsioonide kogumit nagu Istio (rÀÀkides ainult Knative'i kasutamise eesmÀrgist), kasutades aga mÀrksa vÀhem ressursse ja tuues kaasa madalamad tegevuskulud.

Kontrollime Knative'i toimimist stendis. Kasutan vÀrskelt paigaldatud klastri, mis töötab GKE-s:

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

Alustame Knative'i ja Gloo paigaldamist. Seda saab teha igas jÀrjekorras:

# стаĐČĐžĐŒ 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
# ...

Kontrollime, et kÔik Podid on olekus '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 on valmis suunama, loome automaatselt skaleeritava Knative teenuse (kutsume seda kservice'iks) ja suuname sellele liikluse.

Knative teenused pakuvad kergemat viisi rakenduste tarnimiseks Kubernetesesse — vĂ”rreldes tavalise Deployment+Service+Ingress mudeliga. Töötame nĂ€iteks jĂ€rgmisega:

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: Knative user

Kopeerisin selle faili, pÀrast mida rakendasin selle oma Kubernetes klastrisse jÀrgmiselt:

kubectl apply -f ksvc.yaml -n default

Saame vaadata Knative poolt pÀrast 'helloworld-go' tarnimist loodud ressursse klastris kservice:

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

Meie 'helloworld-go' pood kĂ€ivitatakse kservice'i kasutamisel. Kui liiklust pole, kĂ€rbitakse pod'ide arvu nullini. Ja vastupidi, kui samadele ajal tehtud pĂ€ringute arv ĂŒletab teatud seadistatava lĂ€vivÀÀrtuse, suureneb pod'ide arv.

kubectl get ingresses.networking.internal.knative.dev -n default
NAME            READY   REASON
helloworld-go   True

Knative seadistab oma ingressi kasutades erilist 'ingress' ressursi sisemises Knative API-s. Gloo kasutab seda API-d oma konfigureerimiseks, et pakkuda PaaS-ile iseloomulikke omadusi, sealhulgas blue-green juurutusmudelit, automaatset TLS-i rakendamist, ajutisi piire ja muid tÀiustatud marsruutimise funktsioone.

MÔne aja pÀrast nÀeme, et meie pod'id on kadunud (kuna ei olnud sissetulevat liiklust):

kubectl get pod -n default

Ressursse ei leitud.
kubectl get deployment -n default
NIMI                             SOOVITUD   PRAEGUNE   UUSIM   SAADAVAL   VANUS
helloworld-go-fjp75-deployment   0         0         0            0           9m46s

LĂ”puks proovime nendega ĂŒhendust vĂ”tta. URL-i Knative Proxy jaoks on lihtne ja vaevata saada kasutades glooctl:

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

Ilma seadistamiseta glooctl vÔime aadressi ja sadama vaadata kube teenusest:

kubectl get svc -n gloo-system knative-external-proxy
NIMI                     TÜÜP           KLIENDI-IP     VÄLJAS-IP      SADAM(A)                      VANUS
knative-external-proxy   LoadBalancer   10.16.11.157   35.190.151.188   80:32168/TCP,443:30729/TCP   77m

KĂ€ivitame andmeid cURL-i abil:

curl -H "Host: helloworld-go.default.example.com" http://35.190.151.188
Hello Knative user!

Knative pakub peaaegu PaaS-i arendajatele otse 'kasti seest' Kubernetes'i peal, kasutades kÔrge jÔudlusega tÀisfunktsionaalset API Gloo vÀravat. See mÀrkus kajastab vaid veidikene Knative'i laialdasi kohandamisvÔimalusi ja tÀiendavaid funktsioone. Gloo puhul kehtib sama!

Kuigi Knative on endiselt noor projekt, annab selle meeskond uusi versioone vÀlja iga kuue nÀdala tagant ning rakendab arenenud funktsioone, nagu automaatne TLS-i juurutamine ja automaatne juhtpaneeli skaleerimine. On suur vÔimalus, et pÀrast paljude pilveteenuste pakkujate koostööd ning Google'i uue Cloud Run'i pakkumise aluseks, vÔib Knative saada peamiseks valikuks serveriteta arvutuste ja PaaS-i korraldamiseks Kubernetes'is. JÀlgige uudiseid!

LÀÀnesillaga toimetusest
Meie jaoks on lugejate arvamus oluline, seetĂ”ttu palume teil osaleda lĂŒhikeses kĂŒsitluses, mis on seotud Knative'i, Kubernetes'i ja serveriteta arvutuste tulevaste artiklitega:

Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. Logige sisse, palun.

Kas tÔlkida ja kirjutada rohkem artikleid ja juhendeid Knative'i ja serveriteta arvutuste kohta?

  • Jah, palun.

  • AitĂ€h, pole vaja.

HÀÀletas 28 kasutajat. 4 kasutajat piirasid end.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster