Knative - k8s-based platform-as-a-service me ke kākoʻo serverless

Knative - k8s-based platform-as-a-service me ke kākoʻo serverless

Ua lilo ʻo Kubernetes i kahua koʻikoʻi no ka waiho ʻana i nā ipu. Hāʻawi ia i ka hiki ke kāohi i nā mea āpau me ka hoʻohana ʻana i kāna mau API a me nā mea hoʻoponopono maʻamau e hoʻonui i kāna mau API me nā kumuwaiwai maʻamau.

Eia nō naʻe, pono ka mea hoʻohana e hoʻoholo i nā hoʻoholo kikoʻī e pili ana i ke ʻano o ka hoʻonohonoho ʻana, hoʻonohonoho, hoʻokele, a me ka hoʻonui ʻana i nā noi. ʻO nā pilikia e pili ana i ka hoʻonui ʻia ʻana o ka noi, ka pale ʻana, a me ke kahe ʻana o ke kaʻa e waiho ʻia ma ka manaʻo o ka mea hoʻohana. Hoʻokaʻawale kēia i nā Kubernetes mai nā paepae maʻamau ma ke ʻano he lawelawe (PaaS), e like me Cloud Foundry a me Heroku.

Loaʻa i nā paepae kahi mea hoʻohana maʻalahi a kuhikuhi ʻia i nā mea hoʻomohala noiʻi i komo pinepine i ka hoʻonohonoho ʻana i nā noi pākahi. Mālama ʻia ke alahele, ka hoʻolalelale ʻana, a me nā metric i ka mea hoʻohana e ka ʻōnaehana PaaS lalo.

Hoʻohana ʻia ke kaʻina hana kumu-i-moku e PaaS ma o ka hana ʻana i kahi kiʻi pahu maʻamau, hoʻonohonoho ʻana iā ia, hoʻonohonoho i kahi ala hou a me ka subdomain DNS no ka hele ʻana mai. Hoʻomaka ʻia kēia a pau ma ke kauoha git push.

Hāʻawi wale ʻo Kubernetes (me ka manaʻo) i nā poloka kūkulu kumu no ia mau paepae, me ka waiho ʻole ʻana i ke kaiāulu e hana iā lākou iho. Pehea Ua ʻōlelo ʻo Kelsey Hightower:

He kahua ʻo Kubernetes no ke kūkulu ʻana i nā paepae. ʻO ke kūlana maikaʻi loa no ka hoʻomaka ʻana, akā ʻaʻole hoʻopau.

ʻO ka hopena, ʻike mākou i kahi hui o nā Kubernetes i kūkulu ʻia, a me nā hui hoʻokipa e hoʻāʻo nei e hana i PaaS no nā Kubernetes, e like me OpenShift a me Rancher. Ma waena o ka ulu ʻana o ka mākeke Kube-PaaS, Knative, i hoʻokumu ʻia ma Iulai 2018 e Google a me Pivotal, ke komo nei i ke apo.

He hui pū ʻo Knative ma waena o Google a me Pivotal, me ke kōkua iki mai nā hui ʻē aʻe e like me IBM, RedHat a me Solo.im. Hāʻawi ia i nā mea PaaS like ʻole i nā Kubernetes me ke kākoʻo kiʻekiʻe no nā polokalamu hoʻonohonoho hoʻonohonoho ʻole server. ʻAʻole e like me ke kūkulu ʻana o Kubernetes, ua hoʻokomo ʻia ʻo Knative ma ke ʻano he mea hoʻohui i nā hui Kubernetes kūpono a hoʻonohonoho ʻia ma o nā kumuwaiwai mea hoʻohana.

He aha ka Knative?

Ua wehewehe ʻia ʻo Knative "He kahua hoʻokumu Kubernetes no ka hāʻawi ʻana a me ka hoʻokele ʻana i nā haʻahaʻa hana me ka hoʻohana ʻana i ka kamepiula serverless hou." ʻO Knative, ʻoiai e hoʻopaʻa ana iā ia iho ma ke ʻano he kahua, hoʻoikaika ikaika i nā ipu i ka like me nā noi HTTP concurrent. ʻO nā lawelawe i hoʻohana ʻole ʻia e hoʻohaʻahaʻa i ka zero, e hāʻawi ana i ke ʻano serverless-style on-demand scaling.

Aia ʻo Knative i kahi pūʻulu o nā mea hoʻoponopono e hoʻokomo i nā pūʻulu Kubernetes a hāʻawi i kēia mau mea hiki:

  • ke kūkulu ʻana i nā noi pahu pahu mai ka code kumu (i hāʻawi ʻia e ka ʻāpana kūkulu),
  • ka hāʻawi ʻana i ke ala i nā kaʻa komo i nā noi (i hāʻawi ʻia e ka ʻāpana E hookauwa ana'ku na),
  • ka lawe ʻana a me ka scaling maʻalahi o nā noi ma ke koi (i hāʻawi pū ʻia e ka ʻāpana E hookauwa ana'ku na),
  • ka ʻike ʻana i nā kumu o nā hanana e alakaʻi ana i ka hoʻomaka ʻana o nā noi (i hāʻawi ʻia e ka mea Ka hanana).

ʻO kahi ʻāpana koʻikoʻi ʻo Serving, e hāʻawi ana i ka hoʻolako ʻana, ka hoʻonui ʻana, a me ka hoʻokele kaʻa no nā noi hoʻokele. Ma hope o ka hoʻokomo ʻana iā Knative, loaʻa iā ʻoe ke komo piha i ka Kubernetes API, e ʻae i nā mea hoʻohana e hoʻokele i nā noi maʻamau ala, a lawelawe pū i ka debug lawelawe Knative, e hana pū ana me ka API primitives e hoʻohana ai kēia mau lawelawe (modules, lawelawe, etc.).

Me ke kōkua o Serving, ʻokoʻa ʻia ka hoʻokele kaʻa polū-'ōmaʻomaʻo, e hōʻoia ana i ka hoʻokaʻawale ʻana o ke kaʻa ma waena o nā mana hou a me nā mana kahiko o ka noi ke hāʻawi ka mea hoʻohana i kahi mana hou o ka noi.

Pili ʻo Knative i ka hoʻokomo ʻana i kahi mea hoʻokele ingress kūpono. I ka wā e kākau ai ua kākoʻo ʻia kēia ʻatikala ʻO Gloo API Gateway и Istio Service Mesh. E hoʻonohonoho ʻo ia i ka komo i loaʻa e ala i nā kaʻa i nā noi hoʻokele Knative.

Hiki i ka Istio Service Mesh ke hilinaʻi nui no nā mea hoʻohana Knative e makemake ana e hoʻāʻo me ka ʻole o ka hoʻokomo ʻana i ka panel mana Istio, ʻoiai ʻo Knative e hilinaʻi wale ana ma ka ʻīpuka.

No kēia kumu, makemake ka hapa nui o nā mea hoʻohana iā Gloo ma ke ʻano he ʻīpuka i Knative, e hāʻawi ana i kahi hoʻonohonoho like o ka hiki iā Istio (no ka hoʻohana ʻana iā Knative wale nō), ʻoiai e hoʻohana ana i nā kumu waiwai liʻiliʻi a me nā kumukūʻai hana haʻahaʻa.

E ho'āʻo kākou iā Knative i ka hana ma ke kū. E hoʻohana ana au i kahi pūʻulu i hoʻokomo hou ʻia e holo ana ma GKE:

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

E hoʻomaka kākou e hoʻokomo iā Knative a me Gloo. Hiki ke hana i kēia ma kēlā me kēia kauoha:

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

Nānā mākou aia nā Pod āpau i ke kūlana "Holo":

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

Mākaukau ʻo Gloo no ka hoʻokele ʻana, e hana kākou i kahi lawelawe Knative auto-scaling (e kapa iā ia he kservice) a e hoʻokele i ke kaʻa i laila.

Hāʻawi nā lawelawe Knative i kahi ala maʻalahi i ka hāʻawi ʻana i nā noi iā Kubernetes ma mua o ke kumu hoʻohālike maʻamau Deployment+Service+Ingress. E hana mākou me kēia laʻana:

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

Ua kope wau i kēia i kahi faila, a laila hoʻopili i kaʻu hui Kubernetes penei:

kubectl apply -f ksvc.yaml -n default

Hiki iā mākou ke nānā i nā kumuwaiwai i hana ʻia e Knative i ka hui ma hope o ka hoʻopuka ʻana i kā mākou 'helloworld-go' kservice:

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

Hoʻokuʻu ʻia ka pod me kā mākou kiʻi 'helloworld-go' ke kau ʻia ka kservice. Inā ʻaʻohe kaʻa, e hoʻemi ʻia ka helu o nā pods i ʻole. A ʻo ka hope, inā ʻoi aku ka nui o nā noi like ma mua o kahi paepae configurable, e hoʻonui ʻia ka helu o nā pods.

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

Hoʻonohonoho ʻo Knative i kāna komo ʻana me ka hoʻohana ʻana i kahi kumuwaiwai 'ingress' kūikawā ma ka API Knative kūloko. Hoʻohana ʻo Gloo i kēia API e like me kona hoʻonohonoho ʻana e hāʻawi i nā hiʻohiʻona e like me PaaS, me kahi hiʻohiʻona hoʻolale polū-'ōmaʻomaʻo, hoʻokō TLS maʻalahi, manawa manawa, a me nā hiʻohiʻona holomua ʻē aʻe.

Ma hope o kekahi manawa, ʻike mākou ua nalowale kā mākou pods (no ka mea, ʻaʻohe kaʻa komo):

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

ʻO ka hope e hoʻāʻo mākou e hōʻea iā lākou. Hiki iā ʻoe ke maʻalahi a maʻalahi i ka URL no Knative Proxy me ka hoʻohana ʻana glooctl:

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

Me ka hoʻokomo ʻole ʻia glooctl hiki iā ʻoe ke ʻike i ka helu wahi a me ke awa ma ka lawelawe 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

E holo kāua i kekahi ʻikepili me ka cURL:

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

Hāʻawi ʻo Knative i kahi kokoke-PaaS no nā mea hoʻomohala ma luna o nā Kubernetes waho o ka pahu me ka hoʻohana ʻana i ka puka API hoʻokō kiʻekiʻe o Gloo. Ua ʻoki wale kēia pou i ka ʻili o nā koho hoʻoponopono nui a Knative a me nā hiʻohiʻona hou. Pela no me Gloo!

ʻOiai he papahana ʻōpio ʻo Knative, hoʻokuʻu kāna hui i nā mana hou i kēlā me kēia pule ʻeono, a ua hoʻomaka ka hoʻokō ʻana i nā hiʻohiʻona holomua, e like me ka hoʻolaha ʻana i ka TLS maʻalahi, ka scaling maʻalahi o ka papa mana. Loaʻa ka manawa kūpono, ma muli o ka hui pū ʻana ma waena o nā hui kapua he nui, a ʻo ke kumu o ka hāʻawi ʻana o Cloud Run hou o Google, hiki iā Knative ke lilo i koho mua no ka serverless computing a me PaaS ma Kubernetes. E hahai i ka nūhou!

Mai na Luna Hooponopono o SouthBridge
He mea nui nā manaʻo o ka poʻe heluhelu iā mākou, no laila ke noi aku nei mākou iā ʻoe e komo i kahi noiʻi pōkole e pili ana i nā ʻatikala e hiki mai ana e pili ana iā Knative, Kubernetes, serverless computing:

Hiki i nā mea hoʻohana i hoʻopaʻa inoa ʻia ke komo i ka noiʻi. Eʻe, e 'oluʻolu.

Pono au e hoʻomau i ke kākau ʻana i nā ʻatikala a me nā alakaʻi e pili ana i ka Knative a me ka serverless computing?

  • ʻAe ʻoluʻolu.

  • ʻAʻole, mahalo.

28 mea hoʻohana i koho. Ua hōʻole nā ​​mea hoʻohana 4.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka