„Kubernetes“ neabejotinai tapo dominuojančia konteinerių diegimo platforma. Tai suteikia galimybę valdyti beveik bet ką naudojant savo API ir pasirinktinius valdiklius, kurie išplečia API pritaikytais ištekliais.
Tačiau vartotojas vis tiek turi priimti išsamius sprendimus, kaip tiksliai įdiegti, konfigūruoti, valdyti ir keisti programas. Programos mastelio keitimo, apsaugos ir srauto srauto problemos lieka vartotojo nuožiūra. Tai išskiria „Kubernetes“ iš įprastų platformų kaip paslaugos (PaaS), tokių kaip „Cloud Foundry“ ir „Heroku“.
Platformos turi supaprastintą vartotojo sąsają ir yra skirtos programų kūrėjams, kurie dažniausiai dalyvauja nustatant atskiras programas. Maršrutas, diegimas ir metrika vartotojui skaidriai valdoma pagrindinėje PaaS sistemoje.
Darbo eigą „nuo šaltinio iki pristatymo“ tvarko „PaaS“, sukurdama pasirinktinį konteinerio vaizdą, jį įdiegdama, nustatydama naują maršrutą ir DNS subdomeną gaunamam srautui. Visa tai paleidžiama pagal komandą git push
.
„Kubernetes“ (tyčia) pateikia tik pagrindinius tokių platformų blokus, todėl bendruomenė gali pati atlikti darbą. Kaip
„Kubernetes“ yra platformų kūrimo platforma. Geriausia vieta pradėti, bet ne pabaigti.
Dėl to matome daugybę „Kubernetes“ versijų, taip pat prieglobos įmonių, kurios bando sukurti „PaaS“, skirtą „Kubernetes“, pvz., „OpenShift“ ir „Rancher“. Augant Kube-PaaS rinkai, „Knative“, kurią 2018 m. liepą įkūrė „Google“ ir „Pivotal“, žengia į ringą.
„Knative“ buvo sukurtas bendradarbiaujant „Google“ ir „Pivotal“, šiek tiek padedant kitoms įmonėms, tokioms kaip IBM, RedHat ir Solo.im. Jis siūlo panašius „PaaS“ dalykus kaip „Kubernetes“ su aukščiausios klasės be serverio kompiuterių pagrįstų programų palaikymu. Skirtingai nuo „Kubernetes“ versijų, „Knative“ įdiegiamas kaip priedas bet kuriame suderinamame „Kubernetes“ klasteryje ir sukonfigūruojamas naudojant vartotojo išteklius.
Kas yra Knative?
„Knative“ apibūdinama kaip „Kubernetes pagrindu sukurta platforma, skirta darbo krūviams pateikti ir valdyti naudojant modernią be serverio kompiuteriją“. „Knative“, atsiskaitydama kaip už tokią platformą, aktyviai keičia konteinerių mastelį proporcingai vienu metu vykstančioms HTTP užklausoms. Nepanaudotos paslaugos ilgainiui sumažinamos iki nulio, todėl pagal poreikį teikiamas mastelio keitimas be serverio.
„Knative“ sudaro valdiklių rinkinys, kuris įdiegiamas bet kuriame „Kubernetes“ klasteryje ir suteikia šias galimybes:
- konteinerinių programų kūrimas iš šaltinio kodo (pateikiamas komponento statyti),
- prieigos prie programų srauto suteikimas (pateikiamas komponento Aptarnavimas),
- Pristatymas ir automatinis programų mastelio keitimas pagal poreikį (taip pat teikia komponentas Aptarnavimas),
- nustatyti įvykių, vedančių į programos paleidimą, šaltinius (pateikiamas komponento Renginys).
Pagrindinis komponentas yra aptarnavimas, kuris užtikrina valdomų programų aprūpinimą, automatinį mastelio keitimą ir srauto valdymą. Įdiegę „Knative“, vis tiek turite visišką prieigą prie „Kubernetes“ API, leidžiančią vartotojams valdyti programas paprastas būdu, taip pat padeda derinti „Knative“ paslaugas, dirbdama su tais pačiais API primityvais, kuriuos naudoja šios paslaugos (moduliai, paslaugos ir kt.).
Aptarnavimo pagalba taip pat automatizuotas mėlynai žalios spalvos srauto nukreipimas, užtikrinantis srauto atskyrimą tarp naujos ir senos programos versijų, kai vartotojas pateikia atnaujintą programos versiją.
Pats „Knative“ priklauso nuo suderinamo įėjimo valdiklio įdiegimo. Rašymo metu šis straipsnis yra palaikomas
„Istio Service Mesh“ gali būti didelė priklausomybė „Knative“ vartotojams, norintiems tai išbandyti neįdiegę „Istio“ valdymo pulto, nes „Knative“ priklauso tik nuo šliuzo.
Dėl šios priežasties dauguma vartotojų teikia pirmenybę „Gloo“ kaip vartams į „Knative“, suteikiantį panašias galimybes kaip „Istio“ (kad būtų galima naudoti tik „Knative“), kartu naudojant žymiai mažiau išteklių ir mažesnės veiklos sąnaudos.
Išbandykime Knative veikiantį stende. Naudosiu naujai įdiegtą klasterį, veikiantį GKE:
kubectl get namespace
NAME STATUS AGE
default Active 21h
kube-public Active 21h
kube-system Active 21h
Pradėkime diegti „Knative“ ir „Gloo“. Tai galima padaryti bet kokia tvarka:
# ставим 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
# ...
Patikriname, ar visos angos yra „Vykdomos“ būsenos:
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 paruoštas maršruto parinkimui, sukurkime automatinio mastelio keitimo Knative paslaugą (vadinkime ją kservice) ir nukreipkime į ją srautą.
„Knative“ paslaugos suteikia lengvesnį kelią į „Kubernetes“ programas pristatyti nei naudojant įprastą „Deployment+ Service+Ingress“ modelį. Dirbsime su šiuo pavyzdžiu:
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
Nukopijavau tai į failą, tada pritaikiau savo Kubernetes klasteriui tokiu būdu:
kubectl apply -f ksvc.yaml -n default
„Knative“ sukurtus išteklius galime peržiūrėti klasteryje po to, kai pateikiame „helloworld-go“ ksservice:
kubectl get pod -n default
NAME READY STATUS RESTARTS AGE
helloworld-go-fjp75-deployment-678b965ccb-sfpn8 2/2 Running 0 68s
Pod su mūsų „helloworld-go“ atvaizdu paleidžiamas, kai įdiegiama kservice. Jei nėra eismo, ankščių skaičius bus sumažintas iki nulio. Ir atvirkščiai, jei vienu metu gaunamų užklausų skaičius viršija tam tikrą konfigūruojamą slenkstį, podų skaičius padidės.
kubectl get ingresses.networking.internal.knative.dev -n default
NAME READY REASON
helloworld-go True
„Knative“ sukonfigūruoja savo įėjimą naudodamas specialų „įėjimo“ šaltinį vidinėje „Knative“ API. „Gloo“ naudoja šią API kaip savo konfigūraciją, kad teiktų į „PaaS“ panašias funkcijas, įskaitant mėlynai žalią diegimo modelį, automatinį TLS vykdymą, skirtąjį laiką ir kitas išplėstines maršruto parinkimo funkcijas.
Po kurio laiko matome, kad mūsų ankštys dingo (nes nebuvo įeinančio srauto):
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
Pagaliau pabandysime juos pasiekti. Naudodami „Knative Proxy“ galite lengvai ir lengvai gauti URL glooctl
:
glooctl proxy url --name knative-external-proxy
http://35.190.151.188:80
Neįdiegta glooctl
adresą ir prievadą galite pamatyti kube tarnyboje:
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
Paleiskite kai kuriuos duomenis naudodami cURL:
curl -H "Host: helloworld-go.default.example.com" http://35.190.151.188
Hello Knative user!
„Knative“ teikia beveik „PaaS“ kūrėjams kartu su „Kubernetes“, naudojant didelio našumo „Gloo“ pilną API šliuzą. Šis įrašas tik subraižė plačias „Knative“ tinkinimo parinktis ir papildomas funkcijas. Tas pats su Gloo!
Nepaisant to, kad „Knative“ dar jaunas projektas, jo komanda kas šešias savaites išleidžia naujas versijas, pradėta diegti pažangias funkcijas, tokias kaip automatinis TLS diegimas, automatinis valdymo pulto mastelio keitimas. Yra didelė tikimybė, kad dėl bendradarbiavimo tarp kelių debesų kompanijų ir kaip naujo Google Cloud Run pasiūlymo pagrindas, „Knative“ gali tapti pagrindine kompiuterijos be serverio ir „PaaS“ parinktimi „Kubernetes“. Sekite naujienas!
Iš SouthBridge redaktorių
Mums svarbios skaitytojų nuomonės, todėl kviečiame dalyvauti trumpoje apklausoje, susijusioje su būsimais straipsniais apie Knative, Kubernetes, kompiuteriją be serverio:
Apklausoje gali dalyvauti tik registruoti vartotojai.
Ir toliau rašyti straipsnius ir vadovus apie „Knative“ ir be serverio kompiuteriją?
-
Taip prašau.
-
Ne, ačiū.
Balsavo 28 vartotojų. 4 vartotojai susilaikė.
Šaltinis: www.habr.com