Knative - k8s-gebaseerde platform-as-'n-diens met bedienerlose ondersteuning

Knative - k8s-gebaseerde platform-as-'n-diens met bedienerlose ondersteuning

Kubernetes het ongetwyfeld die dominante platform vir houerontplooiing geword. Dit bied die vermoë om byna enigiets te beheer met behulp van sy API's en pasgemaakte beheerders wat sy API's met pasgemaakte hulpbronne uitbrei.

Die gebruiker moet egter steeds gedetailleerde besluite neem oor presies hoe om toepassings te ontplooi, op te stel, te bestuur en te skaal. Kwessies van toepassingskaal, beskerming en verkeersvloei bly volgens die gebruiker se diskresie. Dit onderskei Kubernetes van konvensionele platforms as 'n diens (PaaS), soos Cloud Foundry en Heroku.

Die platforms het 'n vereenvoudigde gebruikerskoppelvlak en is gemik op toepassingsontwikkelaars wat meestal betrokke is by die opstel van individuele toepassings. Roetering, ontplooiing en statistieke word deur die onderliggende PaaS-stelsel deursigtig vir die gebruiker bestuur.

Die bron-na-skip-werkvloei word deur PaaS hanteer deur 'n pasgemaakte houerbeeld te skep, dit te ontplooi, 'n nuwe roete en DNS-subdomein vir inkomende verkeer op te stel. Dit alles word op bevel geloods git push.

Kubernetes verskaf (doelbewus) slegs die kernboublokke vir sulke platforms, wat die gemeenskap vry laat om die werk self te doen. Hoe Kelsey Hightower gesê:

Kubernetes is 'n platform vir die bou van platforms. Die beste posisie om te begin, maar nie te eindig nie.

Gevolglik sien ons 'n klomp Kubernetes-geboue, sowel as gasheerondernemings wat probeer om PaaS vir Kubernetes te skep, soos OpenShift en Rancher. Te midde van die groeiende Kube-PaaS-mark, betree Knative, wat in Julie 2018 deur Google en Pivotal gestig is, die ring.

Knative was 'n samewerking tussen Google en Pivotal, met 'n bietjie hulp van ander maatskappye soos IBM, RedHat en Solo.im. Dit bied soortgelyke PaaS-dinge aan Kubernetes met uitstekende ondersteuning vir bedienerlose rekenaargebaseerde toepassings. Anders as Kubernetes-geboue, word Knative as 'n byvoeging op enige versoenbare Kubernetes-kluster geïnstalleer en deur gebruikershulpbronne gekonfigureer.

Wat is Knative?

Knative word beskryf as "'n Kubernetes-gebaseerde platform vir die lewering en bestuur van werkladings met behulp van moderne bedienerlose rekenaars." Knative, terwyl hy homself as so 'n platform faktureer, skaal houers aktief in verhouding tot gelyktydige HTTP-versoeke. Ongebruikte dienste skaal uiteindelik af na nul, wat bedienerlose styl op aanvraag-skaal verskaf.

Knative bestaan ​​uit 'n stel beheerders wat in enige Kubernetes-kluster installeer en die volgende vermoëns bied:

  • die bou van houer-toepassings vanaf bronkode (verskaf deur die komponent Bou),
  • die verskaffing van toegang tot inkomende verkeer aan toepassings (verskaf deur die komponent Present),
  • aflewering en outomatiese skaal van toepassings op aanvraag (ook verskaf deur die komponent Present),
  • identifisering van die bronne van gebeure wat lei tot toepassingsbekendstellings (verskaf deur die komponent Gebeurtenis).

'n Sleutelkomponent is Bediening, wat voorsiening, outo-skaal en verkeersbestuur vir bestuurde toepassings verskaf. Nadat u Knative geïnstalleer het, het u steeds volle toegang tot die Kubernetes API, wat gebruikers in staat stel om toepassings te bestuur gewone manier, en dien ook om Knative-dienste te ontfout, en werk met dieselfde API-primitiewe wat hierdie dienste gebruik (modules, dienste, ens.).

Met die hulp van Bediening word blou-groen verkeersroetering ook geoutomatiseer, wat verkeersskeiding tussen nuwe en ou weergawes van die toepassing verseker wanneer die gebruiker 'n opgedateerde weergawe van die toepassing aflewer.

Knative self hang af van die installering van 'n versoenbare ingangsbeheerder. Ten tyde van die skryf van hierdie artikel word ondersteun Gloo API Gateway и Istio Service Mesh. Dit sal beskikbare ingang konfigureer om verkeer na Knative-bestuurde toepassings te stuur.

Istio Service Mesh kan 'n groot afhanklikheid wees vir Knative-gebruikers wat dit wil probeer sonder om die Istio-kontrolepaneel te installeer, aangesien Knative net van die poort afhang.

Om hierdie rede verkies die meeste gebruikers Gloo as 'n poort na Knative, wat 'n soortgelyke stel vermoëns as Istio bied (vir die doel om slegs Knative te gebruik), terwyl hulle ook aansienlik minder hulpbronne gebruik en laer bedryfskoste het.

Kom ons toets Knative in aksie op die staanplek. Ek sal 'n vars geïnstalleerde groepering gebruik wat in GKE loop:

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

Kom ons begin Knative en Gloo installeer. Dit kan in enige volgorde gedoen word:

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

Ons kyk of alle peule in die "Lopende" status is:

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 is gereed vir roetering, kom ons skep 'n outo-skaal Knative-diens (kom ons noem dit kservice) en stuur verkeer daarheen.

Knative dienste bied 'n makliker pad om toepassings aan Kubernetes te lewer as die konvensionele Deployment+Service+Ingress-model. Ons sal met hierdie voorbeeld werk:

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

Ek het dit na 'n lêer gekopieer en dit dan op my Kubernetes-kluster op hierdie manier toegepas:

kubectl apply -f ksvc.yaml -n default

Ons kan die hulpbronne sien wat deur Knative in die groepering geskep is nadat ons ons 'helloworld-go' gelewer het kdiens:

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

Die pod met ons 'helloworld-go'-beeld word bekendgestel wanneer die kservice ontplooi word. As daar geen verkeer is nie, sal die aantal peule tot nul verminder word. En omgekeerd, as die aantal gelyktydige versoeke 'n sekere konfigureerbare drempel oorskry, sal die aantal peule toeneem.

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

Knative konfigureer sy ingang deur 'n spesiale 'intree'-hulpbron in die interne Knative API te gebruik. Gloo gebruik hierdie API as sy konfigurasie om PaaS-agtige kenmerke te verskaf, insluitend 'n blougroen-ontplooiingsmodel, outomatiese TLS-afdwinging, uitteltyd en ander gevorderde roetekenmerke.

Na 'n ruk sien ons dat ons peule verdwyn het (omdat daar geen inkomende verkeer was nie):

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

Uiteindelik sal ons probeer om hulle te bereik. Jy kan maklik en maklik die URL vir Knative Proxy gebruik glooctl:

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

Sonder geïnstalleer glooctl jy kan die adres en poort in die kube-diens sien:

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

Kom ons hardloop 'n paar data met behulp van cURL:

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

Knative bied 'n amper-PaaS vir ontwikkelaars bo-op out-of-the-box Kubernetes met behulp van Gloo se hoëprestasie, volstapel API-poort. Hierdie pos het net die oppervlak van Knative se uitgebreide aanpassingsopsies en bykomende kenmerke gekrap. Dieselfde met Gloo!

Ten spyte van die feit dat Knative nog 'n jong projek is, stel sy span elke ses weke nuwe weergawes vry, en die implementering van gevorderde kenmerke het begin, soos outomatiese TLS-ontplooiing, outomatiese skaal van die beheerpaneel. Daar is 'n goeie kans dat, as gevolg van samewerking tussen verskeie wolkmaatskappye, en as die basis van Google se nuwe Cloud Run-aanbieding, Knative die primêre opsie vir bedienerlose rekenaars en PaaS op Kubernetes kan word. Volg die nuus!

Van die Redaksie van SouthBridge
Lesers se menings is vir ons belangrik, daarom vra ons jou om deel te neem aan 'n kort opname wat verband hou met toekomstige artikels oor Knative, Kubernetes, bedienerlose rekenaars:

Slegs geregistreerde gebruikers kan aan die opname deelneem. Meld aan, asseblief.

Moet ek voortgaan om artikels en gidse oor Knative en bedienerlose rekenaars te skryf?

  • Ja asseblief.

  • Nee dankie.

28 gebruikers het gestem. 4 gebruikers het buite stemming gebly.

Bron: will.com

Voeg 'n opmerking