Knative - k8s-based platform-as-a-service nga walay server nga suporta

Knative - k8s-based platform-as-a-service nga walay server nga suporta

Ang Kubernetes sa walay duhaduha nahimong dominanteng plataporma alang sa pag-deploy sa sudlanan. Naghatag kini og katakus nga makontrol ang halos bisan unsang butang gamit ang mga API ug kostumbre nga mga controller nga nagpalugway sa mga API niini gamit ang naandan nga mga kapanguhaan.

Bisan pa, ang tiggamit kinahanglan gihapon nga maghimo detalyado nga mga desisyon bahin sa eksakto kung giunsa ang pag-deploy, pag-configure, pagdumala, ug pag-scale sa mga aplikasyon. Ang mga isyu sa pag-scale sa aplikasyon, proteksyon, ug dagan sa trapiko nagpabilin sa pagkabuotan sa tiggamit. Kini nagpalahi sa Kubernetes gikan sa naandan nga mga plataporma isip serbisyo (PaaS), sama sa Cloud Foundry ug Heroku.

Ang mga plataporma adunay gipayano nga user interface ug gitumong sa mga nag-develop sa aplikasyon nga kasagarang nalambigit sa pag-set up sa indibidwal nga mga aplikasyon. Ang pagruta, deployment, ug metrics gidumala nga transparent sa user pinaagi sa nagpahiping PaaS system.

Ang source-to-ship workflow gidumala sa PaaS pinaagi sa paghimo og custom container image, pag-deploy niini, pag-set up og bag-ong ruta ug DNS subdomain para sa umaabot nga trapiko. Kining tanan gilunsad sa sugo git push.

Ang Kubernetes (tinuyo) naghatag lamang sa kinauyokan nga mga bloke sa pagtukod alang sa maong mga plataporma, nga nagbilin sa komunidad nga gawasnon sa pagbuhat sa buluhaton sa ilang kaugalingon. Giunsa Kelsey Hightower miingon:

Ang Kubernetes usa ka plataporma alang sa pagtukod og mga plataporma. Ang labing kaayo nga posisyon alang sa pagsugod, apan dili pagtapos.

Ingon usa ka sangputanan, nakita namon ang usa ka hugpong sa mga Kubernetes nga gitukod, ingon man ang mga nag-host nga mga kompanya nga naningkamot sa paghimo og PaaS para sa Kubernetes, sama sa OpenShift ug Rancher. Taliwala sa nagkadako nga merkado sa Kube-PaaS, ang Knative, nga gitukod kaniadtong Hulyo 2018 sa Google ug Pivotal, nagsulod sa ring.

Ang Knative usa ka kolaborasyon tali sa Google ug Pivotal, nga adunay gamay nga tabang gikan sa ubang mga kompanya sama sa IBM, RedHat ug Solo.im. Nagtanyag kini og susama nga mga butang sa PaaS sa Kubernetes nga adunay top-notch nga suporta alang sa serverless computing-based nga mga aplikasyon. Dili sama sa pagtukod sa Kubernetes, ang Knative gi-install isip add-on sa bisan unsang compatible nga Kubernetes cluster ug gi-configure pinaagi sa mga kapanguhaan sa user.

Unsa ang Knative?

Ang Knative gihulagway nga "Usa ka Kubernetes-based nga plataporma alang sa paghatud ug pagdumala sa mga workloads gamit ang modernong serverless computing." Ang Knative, samtang nagsingil sa kaugalingon ingon nga usa ka plataporma, aktibo nga nag-autoscale sa mga sulud sa proporsyon sa kadungan nga mga hangyo sa HTTP. Ang wala magamit nga mga serbisyo sa kadugayan gipaubos sa zero, nga naghatag us aka istilo nga wala’y server nga on-demand scaling.

Ang Knative naglangkob sa usa ka set sa mga controller nga nag-install sa bisan unsang Kubernetes cluster ug naghatag sa mosunod nga mga kapabilidad:

  • pagtukod og mga containerized nga aplikasyon gikan sa source code (gihatag sa component pagtukod),
  • paghatag og access sa umaabot nga trapiko sa mga aplikasyon (nga gihatag sa component Pag-alagad),
  • pagpadala ug awtomatik nga pag-scale sa mga aplikasyon sa panginahanglan (gihatag usab sa sangkap Pag-alagad),
  • pag-ila sa mga tinubdan sa mga panghitabo nga mosangpot sa paglunsad sa aplikasyon (nga gihatag sa component Panghitabo).

Usa ka mahinungdanong bahin mao ang Pag-alagad, nga naghatag og provisioning, auto-scaling, ug pagdumala sa trapiko alang sa gidumala nga mga aplikasyon. Human ma-install ang Knative, aduna ka pay hingpit nga access sa Kubernetes API, nga nagtugot sa mga tiggamit sa pagdumala sa mga aplikasyon ordinaryo paagi, ug nagsilbi usab sa pag-debug sa mga serbisyo sa Knative, nga nagtrabaho sa parehas nga mga primitibo sa API nga gigamit sa kini nga mga serbisyo (mga module, serbisyo, ug uban pa).

Uban sa tabang sa Pag-alagad, ang asul-berde nga pag-ruta sa trapiko awtomatiko usab, nga nagsiguro sa pagbulag sa trapiko tali sa bag-o ug daan nga mga bersyon sa aplikasyon kung ang tiggamit maghatag usa ka bag-ong bersyon sa aplikasyon.

Ang Knative mismo nagdepende sa pag-instalar sa usa ka compatible nga ingress controller. Sa panahon sa pagsulat niini nga artikulo gisuportahan Gloo API Gateway ΠΈ Istio Service Mesh. I-configure niini ang magamit nga pagsulod aron maruta ang trapiko sa mga aplikasyon nga gidumala sa Knative.

Ang Istio Service Mesh mahimong usa ka dako nga pagsalig alang sa mga tiggamit sa Knative nga gusto nga sulayan kini nga wala i-install ang Istio control panel, tungod kay ang Knative nagdepende lamang sa ganghaan.

Tungod niini nga hinungdan, kadaghanan sa mga tiggamit mas gusto ang Gloo ingon usa ka ganghaan sa Knative, nga naghatag usa ka parehas nga hugpong sa mga kapabilidad sa Istio (alang sa katuyoan sa paggamit lamang sa Knative), samtang gigamit usab ang labi ka gamay nga mga kapanguhaan ug adunay gamay nga gasto sa operasyon.

Atong sulayan ang Knative sa aksyon sa baruganan. Gigamit nako ang bag-ong na-install nga cluster nga nagdagan sa GKE:

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

Atong sugdan ang pag-instalar sa Knative ug Gloo. Mahimo kini sa bisan unsang han-ay:

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

Among gisusi nga ang tanang Pods anaa sa β€œRunning” status:

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

Andam na si Gloo sa pagruta, maghimo ta ug auto-scaling Knative nga serbisyo (tawagon nato kini nga kservice) ug i-ruta ang trapiko niini.

Ang Knative nga mga serbisyo naghatag ug mas sayon ​​nga dalan sa paghatud sa mga aplikasyon ngadto sa Kubernetes kay sa naandan nga Deployment+Service+Ingress nga modelo. Magtrabaho kami uban niini nga pananglitan:

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

Gikopya nako kini sa usa ka file, dayon gipadapat kini sa akong Kubernetes cluster niining paagiha:

kubectl apply -f ksvc.yaml -n default

Makita namo ang mga kahinguhaan nga gihimo sa Knative sa cluster pagkahuman sa paghatud sa among 'helloworld-go' kservice:

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

Ang pod nga adunay among 'helloworld-go' nga imahe gilansad kung ang kservice ma-deploy. Kung walay trapiko, ang gidaghanon sa mga pod makunhuran ngadto sa zero. Ug vice versa, kung ang gidaghanon sa dungan nga mga hangyo molapas sa usa ka piho nga ma-configure nga threshold, ang gidaghanon sa mga pod modaghan.

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

Gi-configure sa Knative ang pagsulod niini gamit ang usa ka espesyal nga kapanguhaan nga 'ingress' sa internal nga Knative API. Gigamit ni Gloo kini nga API isip configuration niini aron mahatagan ang mga feature nga sama sa PaaS, lakip ang blue-green nga deployment model, automatic TLS enforcement, timeouts, ug uban pang advanced routing features.

Paglabay sa pipila ka panahon, among nakita nga ang among mga pod nawala na (tungod kay wala'y umaabot nga trapiko):

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

Sa katapusan atong sulayan nga maabot sila. Dali ug dali nimo makuha ang URL para sa Knative Proxy gamit glooctl:

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

Walay instalar glooctl makita nimo ang adres ug pantalan sa serbisyo sa 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

Magdagan kita pipila ka datos gamit ang cURL:

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

Naghatag ang Knative og halos-PaaS para sa mga developers sa ibabaw sa out-of-the-box nga Kubernetes gamit ang high-performance, full-stack API gateway ni Gloo. Ang kini nga post nakakuha ra sa sulud sa daghang mga kapilian sa pag-customize sa Knative ug dugang nga mga bahin. Parehas sa Gloo!

Bisan pa sa kamatuoran nga ang Knative usa pa ka batan-ong proyekto, ang team niini nagpagawas sa bag-ong mga bersyon matag unom ka semana, ug ang pagpatuman sa mga advanced features nagsugod na, sama sa automatic TLS deployment, automatic scaling sa control panel. Adunay usa ka maayo nga higayon nga, ingon usa ka sangputanan sa kolaborasyon tali sa daghang mga kompanya sa panganod, ug ingon sukaranan sa bag-ong pagtanyag sa Cloud Run sa Google, ang Knative mahimong panguna nga kapilian alang sa wala’y server nga pag-compute ug PaaS sa Kubernetes. Sunda ang balita!

Gikan sa mga Editor sa SouthBridge
Ang mga opinyon sa mga magbabasa importante kanamo, busa gihangyo ka namo nga moapil sa usa ka mubo nga survey nga may kalabutan sa umaabot nga mga artikulo mahitungod sa Knative, Kubernetes, serverless computing:

Ang mga rehistradong tiggamit lamang ang makaapil sa survey. Sign in, walay sapayan.

Ipadayon ba nako ang pagsulat sa mga artikulo ug mga giya bahin sa Knative ug serverless computing?

  • Oo palihug.

  • Dili, salamat.

28 ka tiggamit ang miboto. 4 ka tiggamit ang nag- abstain.

Source: www.habr.com

Idugang sa usa ka comment