Knative - k8s-yakavakirwa papuratifomu-se-sevhisi ine serverless rutsigiro

Knative - k8s-yakavakirwa papuratifomu-se-sevhisi ine serverless rutsigiro

Kubernetes pasina mubvunzo yave iyo inotungamira puratifomu yekutumirwa kwemidziyo. Inopa kugona kudzora chero chero chinhu uchishandisa maAPIs ayo uye tsika controller dzinowedzera maAPI ayo netsika zviwanikwa.

Nekudaro, mushandisi achiri kufanira kuita sarudzo dzakadzama nezve chaiyo nzira yekuisa, kugadzirisa, kutonga, uye kuyera maapplication. Nyaya dzekuyera maapplication, dziviriro, uye mafambiro emumigwagwa zvinoramba zviri pakufunga kwemushandisi. Izvi zvinomisa Kubernetes kubva kune akajairwa mapuratifomu sevhisi (PaaS), senge Cloud Foundry uye Heroku.

Iwo mapuratifomu ane akarerutswa mushandisi interface uye anonangwa kune vanogadzira maapplication avo vanowanzo batanidzwa mukumisikidza maapplication ega. Kufambisa, kutumira, uye metrics inotungamirwa pachena kune mushandisi neiyo iri pasi PaaS system.

Iyo sosi-kune-ngarava yekufamba-famba inobatwa nePaaS nekugadzira yakajairwa mudziyo mufananidzo, kuiendesa, kumisikidza nzira nyowani uye DNS subdomain yeinouya traffic. Zvese izvi zvinotangwa pakuraira git push.

Kubernetes (nemaune) inopa chete zvivharo zvekuvaka zvemapuratifomu akadaro, zvichisiya nharaunda yakasununguka kuita basa ivo pachavo. Sei Kelsey Hightower akadaro:

Kubernetes ipuratifomu yekuvaka mapuratifomu. Nzvimbo yakanaka yekutanga, asi kwete kupedza.

Nekuda kweizvozvo, tinoona boka reKubernetes rinovaka, pamwe nemakambani anotambira ari kuyedza kugadzira PaaS yeKubernetes, senge OpenShift uye Rancher. Pakati pemusika uri kukura weKube-PaaS, Knative, yakavambwa muna Chikunguru 2018 neGoogle nePivotal, iri kupinda mumhete.

Knative yaive yekudyidzana pakati peGoogle nePivotal, nerubatsiro rudiki kubva kune mamwe makambani akadai IBM, RedHat uye Solo.im. Inopa zvakafanana PaaS zvinhu kuKubernetes nepamusoro-notch rutsigiro kune serverless komputa-yakavakirwa maapplication. Kusiyana neKubernetes inovaka, Knative inoiswa seyekuwedzera pane chero inoenderana Kubernetes cluster uye inogadziriswa kuburikidza nemushandisi zviwanikwa.

Chii chinonzi Knative?

Knative inotsanangurwa se "Kubernetes-yakavakirwa papuratifomu yekuendesa uye kugadzirisa mitoro yebasa uchishandisa yemazuva ano serverless komputa." Knative, nepo ichizvibhadharira sepuratifomu yakadaro, inoshingairira autoscales midziyo maererano nezvikumbiro zvakafanana zveHTTP. Masevhisi asina kushandiswa anopedzisira adzika kusvika ku zero, achipa serverless-maitiro pa-kuda kuyera.

Knative ine seti yevatongi vanoisa mune chero Kubernetes cluster uye inopa anotevera kugona:

  • kuvaka zvikumbiro zvemukati kubva kusource code (inopihwa nechikamu Vakai),
  • kupa mukana kune inouya traffic kune zvikumbiro (inopihwa nechikamu kushumira),
  • kuendesa uye otomatiki kuyera kwezvishandiso pane zvinodiwa (zvakare zvinopihwa nechikamu kushumira),
  • kuratidza kwainobva zviitiko zvinotungamira kune kutangwa kweapp (inopihwa nechikamu Evening).

Chinhu chakakosha Kushumira, iyo inopa kupa, auto-scaling, uye traffic manejimendi kune inogadziriswa application. Mushure mekuisa Knative, iwe uchine mukana wakazara weKubernetes API, uchibvumira vashandisi kubata maapplication. zvakajairika nzira, uye inoshandawo kugadzirisa Knative masevhisi, ichishanda neiyo API primitives inoshandiswa nemasevhisi aya (module, masevhisi, nezvimwewo).

Nerubatsiro rweKushumira, bhuruu-girinhi traffic routing zvakare inozviitira, kuve nechokwadi chekuparadzaniswa kwetraffic pakati peshanduro nyowani neyekare dzechishandiso kana mushandisi aunza yakagadziridzwa vhezheni yechishandiso.

Knative pachayo inoenderana nekuisa inoenderana ingress controller. Panguva yekunyora chinyorwa ichi chinotsigirwa Gloo API Gateway ΠΈ Istio Service Mesh. Ichagadzirisa inowanikwa ingress yenzira yetraffic kune Knative-inotungamirwa maapplication.

Istio Service Mesh inogona kutsamira kukuru kune vashandisi veKnative vanoda kuiedza vasina kuisa Istio control panel, sezvo Knative inongoenderana negedhi.

Nechikonzero ichi, vashandisi vazhinji vanosarudza Gloo segedhi rekuenda kuKnative, ichipa seti yakafanana yekugona kuIstio (nechinangwa chekushandisa Knative chete), nepo vachishandisa zviwanikwa zvishoma uye kuve nemutengo wakaderera wekushandisa.

Ngatiedzei Knative muchiito pakamira. Ini ndichave ndichishandisa ichangobva kuisirwa cluster inoshanda muGKE:

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

Ngatitangei kuisa Knative uye Gloo. Izvi zvinogona kuitwa nenzira ipi zvayo:

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

Isu tinotarisa kuti ese maPods ari mu "Running" mamiriro:

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 yakagadzirira nzira, ngatigadzirei auto-scaling Knative sevhisi (ngatiidaidze kservice) uye nzira traffic kwairi.

Knative masevhisi anopa nzira iri nyore yekuendesa zvikumbiro kuKubernetes pane yakajairwa Deployment+Service+Ingress modhi. Tichashanda nemuenzaniso uyu:

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

Ndakakopa izvi kune faira, ndokuzoisa kune yangu Kubernetes cluster nenzira iyi:

kubectl apply -f ksvc.yaml -n default

Tinogona kuona zviwanikwa zvakagadzirwa naKnative musumbu mushure mekuendesa yedu 'helloworld-go'. kservice:

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

Iyo pod ine yedu 'helloworld-go' mufananidzo inotangwa kana kservice yaiswa. Kana pasina traffic, huwandu hwepods huchaderedzwa kusvika zero. Uye zvakapesana, kana nhamba yezvikumbiro panguva imwe chete ichipfuura imwe nzira inogadziriswa, nhamba yemapods ichawedzera.

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

Knative inogadzirisa ingress yayo ichishandisa yakakosha 'ingress' sosi mune yemukati Knative API. Gloo inoshandisa API iyi segadziriso yayo yekupa PaaS-senge maficha, anosanganisira yebhuruu-girinhi deployment modhi, otomatiki TLS enforcement, timeouts, uye mamwe maficha epamberi ekufambisa.

Mushure mechinguva, tinoona kuti mapods edu anyangarika (nekuti pakanga pasina traffic yaiuya):

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

Pakupedzisira tichaedza kuvasvika. Iwe unogona nyore uye nyore kuwana iyo URL yeKnative Proxy uchishandisa glooctl:

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

Pasina kuiswa glooctl iwe unogona kuona kero uye chiteshi mu kube sevhisi:

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

Ngatimhanyei imwe data tichishandisa cURL:

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

Knative inopa inenge-PaaS yevagadziri pamusoro pekunze kwebhokisi Kubernetes vachishandisa Gloo's high-performance, yakazara-stack API gedhi. Iyi posvo yakangokwenya pamusoro peiyo Knative's yakakura kugadzirisa sarudzo uye mamwe maficha. Zvimwe chete neGloo!

Kunyangwe ichokwadi chekuti Knative ichiri chidiki chirongwa, timu yayo inoburitsa shanduro nyowani mavhiki matanhatu ega ega, uye kuitiswa kwemhando yepamusoro kwatanga, senge otomatiki TLS deployment, otomatiki scaling ye control panel. Pane mukana wakanaka wekuti, semhedzisiro yekubatana pakati pemakambani akawanda emakore, uye sehwaro hweGoogle nyowani Cloud Run inopa, Knative inogona kuve yekutanga sarudzo ye serverless komputa uye PaaS paKubernetes. Tevera nhau!

Kubva kuVapepeti veSouthBridge
Maonero evaverengi akakosha kwatiri, saka tinokukumbira kuti utore chikamu muongororo ipfupi ine chekuita nezveramangwana zvinyorwa nezve Knative, Kubernetes, serverless komputa:

Vashandisi vakanyoresa chete ndivo vanogona kutora chikamu muongororo. Nyorera mu, Munogamuchirwa.

Ndinofanira kuramba ndichinyora zvinyorwa uye madhairekitori nezve Knative uye serverless komputa?

  • Hongu.

  • Kwete, ndatenda.

28 vashandisi vakavhota. 4 vashandisi vakaramba.

Source: www.habr.com

Voeg