Kubernetes je nesumnjivo postao dominantna platforma za implementaciju kontejnera. Pruža mogućnost kontrole gotovo svega koristeći svoje API-je i prilagođene kontrolere koji proširuju njegove API-je prilagođenim resursima.
Međutim, korisnik i dalje mora donijeti detaljne odluke o tome kako točno implementirati, konfigurirati, upravljati i skalirati aplikacije. Pitanja skaliranja aplikacije, zaštite i protoka prometa ostaju na diskreciji korisnika. Ovo izdvaja Kubernetes od konvencionalnih platformi kao usluge (PaaS), kao što su Cloud Foundry i Heroku.
Platforme imaju pojednostavljeno korisničko sučelje i namijenjene su programerima aplikacija koji su najčešće uključeni u postavljanje pojedinačnih aplikacija. Rutiranje, implementacija i metrika se upravljaju transparentno za korisnika pomoću osnovnog PaaS sistema.
Radnim tokom od izvora do otpreme upravlja PaaS kreiranjem prilagođene slike kontejnera, njenom implementacijom, postavljanjem nove rute i DNS poddomena za dolazni saobraćaj. Sve ovo se pokreće na komandu git push
.
Kubernetes (namjerno) pruža samo osnovne blokove za takve platforme, ostavljajući zajednici slobodu da sama obavi posao. Kako
Kubernetes je platforma za izgradnju platformi. Najbolja pozicija za početak, ali ne i završetak.
Kao rezultat toga, vidimo gomilu Kubernetes verzija, kao i hosting kompanije koje pokušavaju da kreiraju PaaS za Kubernetes, kao što su OpenShift i Rancher. Usred rastućeg tržišta Kube-PaaS-a, Knative, koji su u julu 2018. osnovali Google i Pivotal, ulazi u ring.
Knative je bila saradnja između Google-a i Pivotal-a, uz malu pomoć drugih kompanija kao što su IBM, RedHat i Solo.im. Nudi slične PaaS stvari kao i Kubernetes sa vrhunskom podrškom za aplikacije zasnovane na računarstvu bez servera. Za razliku od Kubernetes buildova, Knative se instalira kao dodatak na bilo koji kompatibilan Kubernetes klaster i konfiguriše se putem korisničkih resursa.
Šta je Knative?
Knative je opisan kao „Platforma zasnovana na Kubernetesu za isporuku i upravljanje radnim opterećenjima koristeći moderno računarstvo bez servera“. Knative, dok se naplaćuje kao takva platforma, aktivno automatski skalira kontejnere srazmjerno istovremenim HTTP zahtjevima. Neiskorištene usluge se na kraju smanjuju na nulu, pružajući skaliranje na zahtjev u stilu bez servera.
Knative se sastoji od skupa kontrolera koji se instaliraju u bilo koji Kubernetes klaster i pružaju sljedeće mogućnosti:
- izgradnja kontejnerskih aplikacija iz izvornog koda (obezbeđena od strane komponente graditi),
- omogućavanje pristupa dolaznom saobraćaju aplikacijama (obezbeđuje komponenta služenje),
- isporuku i automatsko skaliranje aplikacija na zahtjev (također osigurava komponenta služenje),
- identificiranje izvora događaja koji dovode do pokretanja aplikacije (obezbeđuje komponenta Eventing).
Ključna komponenta je Serving, koja obezbjeđuje obezbjeđivanje, automatsko skaliranje i upravljanje prometom za upravljane aplikacije. Nakon instaliranja Knative-a, i dalje imate pun pristup Kubernetes API-ju, omogućavajući korisnicima da upravljaju aplikacijama običan način, a služi i za otklanjanje grešaka u Knative servisima, radeći sa istim API primitivima koje koriste ovi servisi (moduli, servisi, itd.).
Uz pomoć Servinga, plavo-zeleno rutiranje prometa je također automatizirano, osiguravajući razdvajanje prometa između nove i stare verzije aplikacije kada korisnik isporuči ažuriranu verziju aplikacije.
Sam Knative ovisi o instaliranju kompatibilnog ulaznog kontrolera. U vrijeme pisanja ovog članka je podržan
Istio Service Mesh može biti velika ovisnost za Knative korisnike koji žele da ga isprobaju bez instaliranja Istio kontrolne ploče, budući da Knative ovisi samo o gatewayu.
Iz tog razloga, većina korisnika preferira Gloo kao pristupnik Knative-u, pružajući sličan skup mogućnosti kao Istio (u svrhu korištenja samo Knative), dok također koristi znatno manje resursa i ima niže operativne troškove.
Testirajmo Knative u akciji na štandu. Koristit ću svježe instalirani klaster koji radi u GKE-u:
kubectl get namespace
NAME STATUS AGE
default Active 21h
kube-public Active 21h
kube-system Active 21h
Počnimo instalirati Knative i Gloo. To se može uraditi bilo kojim redoslijedom:
# ставим 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
# ...
Provjeravamo da li su svi podovi u statusu "Running":
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 je spreman za rutiranje, napravimo Knative servis za automatsko skaliranje (nazovimo ga kservice) i usmjerimo promet do njega.
Knative usluge pružaju lakši put do isporuke aplikacija u Kubernetes od konvencionalnog modela Deployment+Service+Ingress. Radit ćemo s ovim primjerom:
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
Kopirao sam ovo u fajl, a zatim ga primenio na svoj Kubernetes klaster na ovaj način:
kubectl apply -f ksvc.yaml -n default
Možemo vidjeti resurse koje je kreirao Knative u klasteru nakon isporuke našeg 'helloworld-go' kservice:
kubectl get pod -n default
NAME READY STATUS RESTARTS AGE
helloworld-go-fjp75-deployment-678b965ccb-sfpn8 2/2 Running 0 68s
Pod sa našom slikom 'helloworld-go' se pokreće kada se kservice postavi. Ako nema saobraćaja, broj mahuna će se smanjiti na nulu. I obrnuto, ako broj simultanih zahtjeva premašuje određeni konfigurabilni prag, broj podova će se povećati.
kubectl get ingresses.networking.internal.knative.dev -n default
NAME READY REASON
helloworld-go True
Knative konfigurira svoj ulaz koristeći poseban 'ingress' resurs u internom Knative API-ju. Gloo koristi ovaj API kao svoju konfiguraciju za pružanje funkcija sličnih PaaS-u, uključujući plavo-zeleni model implementacije, automatsku primjenu TLS-a, vremenska ograničenja i druge napredne funkcije rutiranja.
Nakon nekog vremena vidimo da su naše mahune nestale (jer nije bilo dolaznog saobraćaja):
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
Konačno ćemo pokušati doći do njih. Možete lako i lako dobiti URL za Knative Proxy koristeći glooctl
:
glooctl proxy url --name knative-external-proxy
http://35.190.151.188:80
Bez instaliranog glooctl
adresu i port možete vidjeti u kube servisu:
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
Pokrenimo neke podatke koristeći cURL:
curl -H "Host: helloworld-go.default.example.com" http://35.190.151.188
Hello Knative user!
Knative pruža gotovo PaaS za programere na vrhu već pripremljenih Kubernetes-a koristeći Gloo-ov high-performance, full-stack API gateway. Ovaj post je samo zagrebao površinu Knative-ovih opsežnih opcija prilagođavanja i dodatnih funkcija. Isto i sa Gloo!
Unatoč činjenici da je Knative još uvijek mlad projekt, njegov tim objavljuje nove verzije svakih šest sedmica, a počela je i implementacija naprednih funkcija, poput automatskog TLS implementacije, automatskog skaliranja kontrolne ploče. Postoji velika šansa da bi, kao rezultat saradnje između više kompanija u oblaku, i kao osnova Googleove nove Cloud Run ponude, Knative mogao postati primarna opcija za računarstvo bez servera i PaaS na Kubernetesu. Pratite vijesti!
Od urednika SouthBridgea
Mišljenja čitalaca su nam važna, pa vas molimo da učestvujete u kratkoj anketi vezanoj za buduće članke o Knative, Kubernetes, računarstvu bez servera:
Samo registrovani korisnici mogu učestvovati u anketi.
Trebam li nastaviti pisati članke i vodiče o Knative i računarstvu bez servera?
-
Da molim.
-
Ne hvala.
Glasalo je 28 korisnika. 4 korisnika je bila uzdržana.
izvor: www.habr.com