Kubernetes neapÅ”aubÄmi ir kļuvusi par dominÄjoÅ”o platformu konteineru izvietoÅ”anai. Tas nodroÅ”ina iespÄju kontrolÄt gandrÄ«z jebko, izmantojot tÄs API un pielÄgotos kontrollerus, kas paplaÅ”ina API ar pielÄgotiem resursiem.
TomÄr lietotÄjam joprojÄm ir jÄpieÅem detalizÄti lÄmumi par to, kÄ tieÅ”i izvietot, konfigurÄt, pÄrvaldÄ«t un mÄrogot lietojumprogrammas. Lietojumprogrammu mÄrogoÅ”anas, aizsardzÄ«bas un trafika plÅ«smas problÄmas paliek lietotÄja ziÅÄ. Tas atŔķir Kubernetes no parastajÄm platformÄm kÄ pakalpojumam (PaaS), piemÄram, Cloud Foundry un Heroku.
PlatformÄm ir vienkÄrÅ”ots lietotÄja interfeiss, un tÄs ir paredzÄtas lietojumprogrammu izstrÄdÄtÄjiem, kuri visbiežÄk ir iesaistÄ«ti atseviŔķu lietojumprogrammu iestatÄ«Å”anÄ. MarÅ”rutÄÅ”anu, izvietoÅ”anu un metriku lietotÄjam pÄrskatÄmi pÄrvalda pamatÄ esoÅ”Ä PaaS sistÄma.
DarbplÅ«smu no avota lÄ«dz piegÄdei apstrÄdÄ PaaS, izveidojot pielÄgotu konteinera attÄlu, izvietojot to, iestatot jaunu marÅ”rutu un DNS apakÅ”domÄnu ienÄkoÅ”ajai trafikai. Tas viss tiek palaists pÄc komandas git push
.
Kubernetes (apzinÄti) nodroÅ”ina tikai galvenos pamatelementus Å”ÄdÄm platformÄm, ļaujot kopienai paÅ”ai veikt darbu. KÄ
Kubernetes ir platforma platformu veidoÅ”anai. LabÄkÄ pozÄ«cija startam, bet ne finiÅ”am.
RezultÄtÄ mÄs redzam virkni Kubernetes bÅ«vÄjumu, kÄ arÄ« mitinÄÅ”anas uzÅÄmumus, kas mÄÄ£ina izveidot Kubernetes PaaS, piemÄram, OpenShift un Rancher. AugoÅ”Ä Kube-PaaS tirgÅ« Knative, ko 2018. gada jÅ«lijÄ nodibinÄja Google un Pivotal, ienÄk ringÄ.
Knative bija Google un Pivotal sadarbÄ«ba, ar nelielu palÄ«dzÄ«bu no citiem uzÅÄmumiem, piemÄram, IBM, RedHat un Solo.im. Tas piedÄvÄ lÄ«dzÄ«gas PaaS lietas kÄ Kubernetes ar izcilu atbalstu bezservera skaitļoÅ”anas lietojumprogrammÄm. AtŔķirÄ«bÄ no Kubernetes bÅ«vÄm, Knative tiek instalÄts kÄ papildinÄjums jebkurÄ saderÄ«gÄ Kubernetes klasterÄ« un konfigurÄts, izmantojot lietotÄja resursus.
Kas ir Knative?
Knative ir aprakstÄ«ts kÄ "uz Kubernetes balstÄ«ta platforma darba slodzes nodroÅ”inÄÅ”anai un pÄrvaldÄ«bai, izmantojot modernu bezservera skaitļoÅ”anu." Knative, lai gan norÄÄ·inÄs par sevi kÄ Å”Ädu platformu, aktÄ«vi veic konteineru automÄtisko mÄrogoÅ”anu proporcionÄli vienlaicÄ«giem HTTP pieprasÄ«jumiem. Neizmantotie pakalpojumi galu galÄ tiek samazinÄti lÄ«dz nullei, nodroÅ”inot bezservera stila mÄrogoÅ”anu pÄc pieprasÄ«juma.
Knative sastÄv no kontrolieru komplekta, kas tiek instalÄts jebkurÄ Kubernetes klasterÄ« un nodroÅ”ina Å”Ädas iespÄjas:
- konteineru lietojumprogrammu veidoÅ”ana no pirmkoda (nodroÅ”ina komponents bÅ«vÄt),
- piekļuves nodroÅ”inÄÅ”ana lietojumprogrammÄm ienÄkoÅ”ajai trafikai (nodroÅ”ina komponents Serving),
- lietojumprogrammu piegÄde un automÄtiska mÄrogoÅ”ana pÄc pieprasÄ«juma (nodroÅ”ina arÄ« komponents Serving),
- identificÄt notikumu avotus, kas izraisa lietojumprogrammu palaiÅ”anu (nodroÅ”ina komponents PasÄkumi).
Galvenais komponents ir apkalpoÅ”ana, kas nodroÅ”ina pÄrvaldÄ«to lietojumprogrammu nodroÅ”inÄÅ”anu, automÄtisko mÄrogoÅ”anu un trafika pÄrvaldÄ«bu. PÄc Knative instalÄÅ”anas jums joprojÄm ir pilna piekļuve Kubernetes API, ļaujot lietotÄjiem pÄrvaldÄ«t lietojumprogrammas parasts veidÄ, kÄ arÄ« kalpo Knative pakalpojumu atkļūdoÅ”anai, strÄdÄjot ar tiem paÅ”iem API primitÄ«viem, ko izmanto Å”ie pakalpojumi (moduļi, pakalpojumi utt.).
Ar Serving palÄ«dzÄ«bu tiek automatizÄta arÄ« zili zaÄ¼Ä trafika marÅ”rutÄÅ”ana, nodroÅ”inot trafika noŔķirÅ”anu starp jauno un veco aplikÄcijas versiju, kad lietotÄjs piegÄdÄ atjauninÄtu aplikÄcijas versiju.
Knative pati par sevi ir atkarÄ«ga no saderÄ«ga ieejas kontrollera instalÄÅ”anas. RakstÄ«Å”anas laikÄ Å”is raksts tiek atbalstÄ«ts
Istio Service Mesh var bÅ«t liela atkarÄ«ba no Knative lietotÄjiem, kuri vÄlas to izmÄÄ£inÄt, neinstalÄjot Istio vadÄ«bas paneli, jo Knative ir atkarÄ«gs tikai no vÄrtejas.
Å Ä« iemesla dÄļ lielÄkÄ daļa lietotÄju dod priekÅ”roku Gloo kÄ vÄrtejai uz Knative, nodroÅ”inot lÄ«dzÄ«gu iespÄju kopumu kÄ Istio (lai izmantotu tikai Knative), vienlaikus izmantojot ievÄrojami mazÄk resursu un zemÄkas darbÄ«bas izmaksas.
PÄrbaudÄ«sim Knative darbÄ«bÄ uz stenda. Es izmantoÅ”u tikko instalÄtu klasteru, kas darbojas GKE:
kubectl get namespace
NAME STATUS AGE
default Active 21h
kube-public Active 21h
kube-system Active 21h
SÄksim instalÄt Knative un Gloo. To var izdarÄ«t jebkurÄ secÄ«bÄ:
# ŃŃŠ°Š²ŠøŠ¼ 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
# ...
MÄs pÄrbaudÄm, vai visi podi ir statusÄ āDarbojasā:
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 ir gatavs marÅ”rutÄÅ”anai, izveidosim automÄtiskÄs mÄrogoÅ”anas pakalpojumu Knative (sauksim to par kservice) un marÅ”rutÄsim uz to trafiku.
Knative pakalpojumi nodroÅ”ina vienkÄrÅ”Äku ceļu lietojumprogrammu piegÄdei Kubernetes nekÄ parastais izvietoÅ”anas+pakalpojuma+ieejas modelis. MÄs strÄdÄsim ar Å”o piemÄru:
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
Es nokopÄju to failÄ un pÄc tam lietoju to savÄ Kubernetes klasterÄ« Å”Ädi:
kubectl apply -f ksvc.yaml -n default
MÄs varam skatÄ«t Knative izveidotos resursus klasterÄ« pÄc mÅ«su 'helloworld-go' piegÄdes. kservice:
kubectl get pod -n default
NAME READY STATUS RESTARTS AGE
helloworld-go-fjp75-deployment-678b965ccb-sfpn8 2/2 Running 0 68s
Kad tiek izvietots kservice, tiek palaists pods ar mÅ«su 'helloworld-go' attÄlu. Ja nav satiksmes, pÄkstu skaits tiks samazinÄts lÄ«dz nullei. Un otrÄdi, ja vienlaicÄ«gu pieprasÄ«jumu skaits pÄrsniedz noteiktu konfigurÄjamu slieksni, podziÅu skaits palielinÄsies.
kubectl get ingresses.networking.internal.knative.dev -n default
NAME READY REASON
helloworld-go True
Knative konfigurÄ savu ieeju, izmantojot Ä«paÅ”u āieejasā resursu iekÅ”ÄjÄ Knative API. Gloo izmanto Å”o API kÄ savu konfigurÄciju, lai nodroÅ”inÄtu PaaS lÄ«dzÄ«gas funkcijas, tostarp zili zaļu izvietoÅ”anas modeli, automÄtisku TLS izpildi, taimautus un citas uzlabotas marÅ”rutÄÅ”anas funkcijas.
PÄc kÄda laika mÄs redzam, ka mÅ«su podi ir pazuduÅ”i (jo nebija ienÄkoÅ”Äs satiksmes):
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
Beidzot mÄs centÄ«simies viÅus sasniegt. Izmantojot Knative Proxy, varat viegli un viegli iegÅ«t vietrÄdi URL glooctl
:
glooctl proxy url --name knative-external-proxy
http://35.190.151.188:80
Bez uzstÄdÄ«tas glooctl
adresi un portu var redzÄt kube pakalpojumÄ:
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
Palaidīsim dažus datus, izmantojot cURL:
curl -H "Host: helloworld-go.default.example.com" http://35.190.151.188
Hello Knative user!
Knative nodroÅ”ina gandrÄ«z PaaS izstrÄdÄtÄjiem papildus jau gatavajam Kubernetes, izmantojot Gloo augstas veiktspÄjas pilnas steka API vÄrteju. Å is ieraksts ir tikai saskrÄpÄjis Knative plaÅ”Äs pielÄgoÅ”anas iespÄjas un papildu funkcijas. Tas pats ar Gloo!
Neskatoties uz to, ka Knative vÄl ir jauns projekts, tÄ komanda ik pÄc seÅ”Äm nedÄļÄm izdod jaunas versijas, un ir sÄkusies uzlaboto funkciju ievieÅ”ana, piemÄram, automÄtiska TLS izvietoÅ”ana, automÄtiska vadÄ«bas paneļa mÄrogoÅ”ana. PastÄv liela iespÄja, ka vairÄku mÄkoÅdatoÅ”anas uzÅÄmumu sadarbÄ«bas rezultÄtÄ un kÄ Google jaunÄ Cloud Run piedÄvÄjuma pamatÄ Knative varÄtu kļūt par primÄro iespÄju bezserveru skaitļoÅ”anai un PaaS vietnÄ Kubernetes. Sekojiet jaunumiem!
No SouthBridge redaktoriem
Mums ir svarÄ«gs lasÄ«tÄju viedoklis, tÄpÄc aicinÄm piedalÄ«ties nelielÄ aptaujÄ saistÄ«bÄ ar turpmÄkajiem rakstiem par Knative, Kubernetes, bezserveru skaitļoÅ”anu:
AptaujÄ var piedalÄ«ties tikai reÄ£istrÄti lietotÄji.
Vai man jÄturpina rakstÄ«t rakstus un rokasgrÄmatas par Knative un bezserveru skaitļoÅ”anu?
-
JÄ, lÅ«dzu.
-
NÄ paldies.
Nobalsoja 28 lietotÄji. 4 lietotÄji atturÄjÄs.
Avots: www.habr.com