Knative - pjattaforma-as-a-service bbażata fuq k8s b'appoġġ bla server

Knative - pjattaforma-as-a-service bbażata fuq k8s b'appoġġ bla server

Kubernetes bla dubju sar il-pjattaforma dominanti għall-iskjerament tal-kontejners. Jipprovdi l-abbiltà li jikkontrolla kważi kull ħaġa billi juża l-APIs u l-kontrolluri tad-dwana tiegħu li jestendu l-APIs tiegħu b'riżorsi tad-dwana.

Madankollu, l-utent xorta jrid jieħu deċiżjonijiet dettaljati dwar eżattament kif juża, jikkonfigura, jimmaniġġja, u jkabbar l-applikazzjonijiet. Kwistjonijiet ta 'skala ta' applikazzjoni, protezzjoni, u fluss tat-traffiku jibqgħu fid-diskrezzjoni tal-utent. Dan jiddistingwi lil Kubernetes minn pjattaformi konvenzjonali bħala servizz (PaaS), bħal Cloud Foundry u Heroku.

Il-pjattaformi għandhom interface tal-utent simplifikata u huma mmirati lejn l-iżviluppaturi tal-applikazzjonijiet li l-aktar spiss ikunu involuti fit-twaqqif ta 'applikazzjonijiet individwali. Ir-rotot, l-iskjerament u l-metriċi huma ġestiti b'mod trasparenti għall-utent mis-sistema PaaS sottostanti.

Il-fluss tax-xogħol mis-sors għall-vapur huwa mmaniġġjat minn PaaS billi toħloq immaġni ta 'kontejner apposta, tiskjeraha, twaqqaf rotta ġdida u subdomain DNS għat-traffiku li jkun dieħel. Dan kollu huwa mniedi fuq kmand git push.

Kubernetes (intenzjonalment) jipprovdi biss il-blokki tal-bini ewlenin għal pjattaformi bħal dawn, u jħalli lill-komunità ħielsa li tagħmel ix-xogħol huma stess. Kif Kelsey Hightower qal:

Kubernetes hija pjattaforma għall-bini ta 'pjattaformi. L-aħjar pożizzjoni biex tibda, iżda mhux tispiċċa.

Bħala riżultat, naraw mazz ta 'bini ta' Kubernetes, kif ukoll kumpaniji li jospitaw li qed jippruvaw joħolqu PaaS għal Kubernetes, bħal OpenShift u Rancher. Fost is-suq Kube-PaaS li qed jikber, Knative, imwaqqfa f'Lulju 2018 minn Google u Pivotal, qed tidħol fiċ-ċirku.

Knative kienet kollaborazzjoni bejn Google u Pivotal, bi ftit għajnuna minn kumpaniji oħra bħal IBM, RedHat u Solo.im. Joffri affarijiet PaaS simili għal Kubernetes b'appoġġ mill-aqwa għal applikazzjonijiet ibbażati fuq kompjuters bla servers. B'differenza mill-bini ta' Kubernetes, Knative huwa installat bħala add-on fuq kwalunkwe cluster Kubernetes kompatibbli u kkonfigurat permezz tar-riżorsi tal-utent.

X'inhu Knative?

Knative hija deskritta bħala "Pjattaforma bbażata fuq Kubernetes għat-twassil u l-ġestjoni ta' xogħolijiet bl-użu ta' kompjuters moderni mingħajr servers." Knative, filwaqt li kontijiet lilu nnifsu bħala tali pjattaforma, awtoskala b'mod attiv il-kontenituri fi proporzjon għal talbiet HTTP konkorrenti. Servizzi mhux użati eventwalment jitnaqqsu għal żero, u jipprovdu skalar fuq talba fuq l-istil serverless.

Knative jikkonsisti f'sett ta' kontrolluri li jinstallaw fi kwalunkwe cluster Kubernetes u jipprovdu l-kapaċitajiet li ġejjin:

  • bini ta' applikazzjonijiet f'kontejners mill-kodiċi tas-sors (provdut mill-komponent Jibnu),
  • jipprovdu aċċess għat-traffiku deħlin għall-applikazzjonijiet (provduti mill-komponent Notifika),
  • twassil u skalar awtomatiku tal-applikazzjonijiet fuq talba (forniti wkoll mill-komponent Notifika),
  • l-identifikazzjoni tas-sorsi tal-avvenimenti li jwasslu għal tnedija tal-applikazzjoni (provduta mill-komponent Eventing).

Komponent ewlieni huwa Serving, li jipprovdi forniment, auto-scaling, u ġestjoni tat-traffiku għal applikazzjonijiet ġestiti. Wara li tinstalla Knative, għad għandek aċċess sħiħ għall-API Kubernetes, li tippermetti lill-utenti jimmaniġġjaw l-applikazzjonijiet ordinarju mod, u sservi wkoll biex tiddibaggja servizzi Knative, li taħdem bl-istess primitives API li jużaw dawn is-servizzi (moduli, servizzi, eċċ.).

Bl-għajnuna ta 'Serving, ir-rotot tat-traffiku blu-aħdar huwa wkoll awtomatizzat, u jiżgura separazzjoni tat-traffiku bejn verżjonijiet ġodda u qodma tal-applikazzjoni meta l-utent iwassal verżjoni aġġornata tal-applikazzjoni.

Knative innifsu jiddependi fuq l-installazzjoni ta 'kontrollur ta' dħul kompatibbli. Fiż-żmien tal-kitba dan l-artikolu huwa appoġġjat Gloo API Gateway и Istio Service Mesh. Se tikkonfigura d-dħul disponibbli biex it-traffiku jmur lejn applikazzjonijiet immexxija minn Knative.

Istio Service Mesh jista 'jkun dipendenza kbira għall-utenti Knative li jridu jippruvawha mingħajr ma jinstallaw il-pannell tal-kontroll Istio, peress li Knative jiddependi biss fuq il-portal.

Għal din ir-raġuni, il-biċċa l-kbira tal-utenti jippreferu Gloo bħala portal għal Knative, li jipprovdi sett ta 'kapaċitajiet simili għal Istio (għall-iskop li juża Knative biss), filwaqt li juża wkoll ferm inqas riżorsi u jkollu spejjeż operattivi aktar baxxi.

Ejja nittestjaw Knative fl-azzjoni fuq l-istand. Se nkun qed nuża cluster installat frisk li jaħdem fil-GKE:

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

Ejja nibdew ninstallaw Knative u Gloo. Dan jista' jsir fi kwalunkwe ordni:

# ставим 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
# ...

Aħna niċċekkjaw li l-Pods kollha jkunu fl-istatus "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 huwa lest għar-routing, ejja noħolqu servizz Knative auto-scaling (ejja nsejħulha kservice) u nirrodjaw it-traffiku lejh.

Is-servizzi knative jipprovdu triq eħfef biex jitwasslu applikazzjonijiet lil Kubernetes mill-mudell konvenzjonali Deployment+Service+Ingress. Aħna se naħdmu b'dan l-eżempju:

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

Ikkupjajt dan għal fajl, imbagħad applikajt lill-grupp Kubernetes tiegħi b'dan il-mod:

kubectl apply -f ksvc.yaml -n default

Nistgħu naraw ir-riżorsi maħluqa minn Knative fil-cluster wara li nwasslu l-'helloworld-go' tagħna kservice:

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

Il-pod bl-immaġni tagħna 'helloworld-go' jitnieda meta l-kservice jiġi skjerat. Jekk ma jkunx hemm traffiku, in-numru ta 'miżwed jitnaqqas għal żero. U viċi versa, jekk in-numru ta 'talbiet simultanji jaqbeż ċertu limitu konfigurabbli, in-numru ta' imżiewed jiżdied.

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

Knative tikkonfigura l-ingress tagħha billi tuża riżors speċjali ta ''ingress' fl-API interna ta' Knative. Gloo juża din l-API bħala l-konfigurazzjoni tiegħu biex jipprovdi karatteristiċi simili għal PaaS, inkluż mudell ta 'skjerament blu-aħdar, infurzar awtomatiku TLS, timeouts, u karatteristiċi avvanzati oħra ta' routing.

Wara xi żmien, naraw li l-imżiewed tagħna sparixxew (għax ma kien hemm l-ebda traffiku deħlin):

kubectl get pod -n default

No resources found.
kubectl get deployment -n default
NAME                             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
helloworld-go-fjp75-deployment   0         0         0            0           9m46s

Fl-aħħar nippruvaw nilħquhom. Tista 'faċilment u faċilment tikseb il-URL għal Knative Proxy bl-użu glooctl:

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

Mingħajr installat glooctl tista' tara l-indirizz u l-port fis-servizz kube:

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

Ejja nħaddmu xi dejta billi tuża cURL:

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

Knative jipprovdi kważi-PaaS għall-iżviluppaturi fuq quċċata ta 'Kubernetes out-of-the-box bl-użu ta' prestazzjoni għolja, gateway API full-stack ta 'Gloo. Din il-kariga scratched biss il-wiċċ tal-għażliet ta 'adattament estensivi ta' Knative u karatteristiċi addizzjonali. L-istess ma' Gloo!

Minkejja l-fatt li Knative għadu proġett żgħir, it-tim tiegħu joħroġ verżjonijiet ġodda kull sitt ġimgħat, u bdiet l-implimentazzjoni ta 'karatteristiċi avvanzati, bħall-iskjerament awtomatiku ta' TLS, skalar awtomatiku tal-pannell tal-kontroll. Hemm ċans tajjeb li, bħala riżultat ta 'kollaborazzjoni bejn kumpaniji multipli tal-cloud, u bħala l-bażi tal-offerta l-ġdida ta' Cloud Run ta 'Google, Knative tista' ssir l-għażla primarja għall-kompjuters mingħajr server u PaaS fuq Kubernetes. Segwi l-aħbarijiet!

Mill-Edituri ta' SouthBridge
L-opinjonijiet tal-qarrejja huma importanti għalina, għalhekk nitolbuk tieħu sehem fi stħarriġ qasir relatat ma' artikli futuri dwar Knative, Kubernetes, serverless computing:

Utenti reġistrati biss jistgħu jipparteċipaw fl-istħarriġ. Idħol, ta 'xejn.

Tkompli tikteb artikli u gwidi dwar Knative u serverless computing?

  • Iva jekk jogħġbok.

  • Le grazzi.

Ivvutaw 28 utent. 4 utent astjenew.

Sors: www.habr.com

Żid kumment