Knative - platform-sakumaha-jasa basis k8s kalayan rojongan serverless

Knative - platform-sakumaha-jasa basis k8s kalayan rojongan serverless

Kubernetes geus undoubtedly jadi platform dominan pikeun deployment wadahna. Eta nyadiakeun kamampuhan pikeun ngadalikeun ampir nanaon maké API na controller custom nu manjangkeun API na kalawan sumberdaya custom.

Nanging, pangguna tetep kedah nyandak kaputusan anu rinci ngeunaan kumaha cara nyebarkeun, ngonpigurasikeun, ngatur, sareng skala aplikasi. Masalah skala aplikasi, panyalindungan, sareng aliran lalu lintas tetep aya dina kawijaksanaan pangguna. Ieu ngabedakeun Kubernetes tina platform konvensional salaku jasa (PaaS), sapertos Cloud Foundry sareng Heroku.

Platformna ngagaduhan antarbeungeut pangguna anu disederhanakeun sareng ditujukeun pikeun pamekar aplikasi anu paling sering kalibet dina nyetel aplikasi individu. Routing, deployment, sarta metrics dikokolakeun transparan ka pamaké ku sistem PaaS kaayaan.

Alur kerja sumber-ka-kapal diurus ku PaaS ku nyiptakeun gambar wadahna khusus, nyebarkeun éta, nyetél jalur anyar sareng subdomain DNS pikeun lalu lintas anu datang. Sadaya ieu diluncurkeun dina paréntah git push.

Kubernetes (ngahaja) ngan nyadiakeun blok wangunan inti pikeun platform misalna, ninggalkeun komunitas bébas ngalakukeun pagawean sorangan. Kumaha Kelsey Hightower ceuk:

Kubernetes mangrupikeun platform pikeun ngawangun platform. Posisi pangalusna pikeun ngamimitian, tapi teu rengse.

Hasilna, urang ningali sakumpulan Kubernetes ngawangun, ogé perusahaan hosting anu nyobian nyiptakeun PaaS pikeun Kubernetes, sapertos OpenShift sareng Rancher. Ditengah pasar Kube-PaaS anu ngembang, Knative, diadegkeun dina Juli 2018 ku Google sareng Pivotal, asup kana ring.

Knative mangrupikeun kolaborasi antara Google sareng Pivotal, kalayan bantosan sakedik ti perusahaan sanés sapertos IBM, RedHat sareng Solo.im. Éta nawiskeun hal-hal PaaS anu sami sareng Kubernetes kalayan dukungan anu paling luhur pikeun aplikasi basis komputasi tanpa server. Beda sareng ngawangun Kubernetes, Knative dipasang salaku tambihan dina klaster Kubernetes anu cocog sareng dikonpigurasi ngaliwatan sumber daya pangguna.

Naon Knative?

Knative didadarkeun salaku "Platform basis Kubernetes pikeun nganteurkeun sareng ngatur beban kerja nganggo komputasi tanpa server modern." Knative, bari tagihan sorangan salaku platform misalna, aktip autoscales peti saimbang jeung requests HTTP babarengan. Ladenan anu henteu dianggo pamustunganana turun ka nol, nyayogikeun skala on-demand gaya tanpa server.

Knative diwangun ku sakumpulan pangendali anu dipasang dina klaster Kubernetes sareng nyayogikeun kamampuan ieu:

  • ngawangun aplikasi wadahna tina kode sumber (disadiakeun ku komponén ngawangun),
  • nyadiakeun aksés ka lalulintas asup ka aplikasi (disadiakeun ku komponén porsi),
  • pangiriman sareng skala otomatis aplikasi dina paménta (ogé disayogikeun ku komponén porsi),
  • ngidentipikasi sumber kajadian anu ngarah ka peluncuran aplikasi (disadiakeun ku komponén Acara).

Komponén konci nyaéta Ngalayanan, anu nyayogikeun penyediaan, skala otomatis, sareng manajemén lalu lintas pikeun aplikasi anu diurus. Saatos masang Knative, anjeun masih gaduh aksés pinuh kana API Kubernetes, anu ngamungkinkeun para pangguna pikeun ngatur aplikasi biasa jalan, sarta ogé boga fungsi pikeun debug jasa Knative, gawé bareng jeung primitif API sami nu jasa ieu ngagunakeun (modul, jasa, jsb).

Kalayan bantuan Ngalayanan, routing lalulintas biru-héjo ogé otomatis, mastikeun separation lalulintas antara versi anyar jeung heubeul tina aplikasi nalika pamaké delivers pérsi diropéa tina aplikasi.

Knative sorangan gumantung kana masang controller ingress cocog. Dina waktos nyerat tulisan ieu dirojong Gloo API Gateway и Istio Service Bolong. Bakal ngonpigurasikeun ingress anu sayogi pikeun rute lalu lintas ka aplikasi anu diurus Knative.

Istio Service Mesh tiasa janten kagumantungan anu ageung pikeun pangguna Knative anu hoyong nyobian éta tanpa masang panel kontrol Istio, sabab Knative ngan ukur gumantung kana gateway.

Ku sabab kitu, sabagéan ageung pamaké resep Gloo salaku gateway mun Knative, nyadiakeun set sarupa kamampuhan pikeun Istio (pikeun kaperluan ngan ngagunakeun Knative), bari ogé ngagunakeun sumberdaya nyata pangsaeutikna sarta ngabogaan waragad operasional handap.

Hayu urang nguji Knative dina aksi on stand. Kuring bakal nganggo kluster anu nembé dipasang di GKE:

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

Hayu urang ngamimitian masang Knative sareng Gloo. Ieu tiasa dilakukeun dina urutan naon waé:

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

Kami pariksa yén sadaya Pods aya dina status "Ngajalankeun":

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 geus siap pikeun routing, hayu urang nyieun hiji layanan Knative skala otomatis (hayu urang sebut wae kservice) jeung lalulintas jalur ka dinya.

Ladenan Knative nyayogikeun jalur anu langkung gampang pikeun ngirim aplikasi ka Kubernetes tibatan modél Deployment+Service+Ingress konvensional. Kami bakal damel sareng conto ieu:

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

Kuring nyalin ieu kana file, teras dilarapkeun kana klaster Kubernetes kuring ku cara kieu:

kubectl apply -f ksvc.yaml -n default

Urang tiasa ningali sumber daya anu diciptakeun ku Knative dina kluster saatos ngirimkeun 'helloworld-go' kami. klayanan:

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

Pod kalayan gambar 'helloworld-go' urang diluncurkeun nalika kservice dipasang. Mun euweuh lalulintas, jumlah pods bakal ngurangan kana nol. Sabalikna, upami jumlah pamundut sakaligus ngaleuwihan ambang anu tiasa dikonfigurasi, jumlah pod bakal ningkat.

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

Knative ngonpigurasikeun asupna nganggo sumber daya 'ingress' khusus dina API Knative internal. Gloo nganggo API ieu salaku konfigurasi pikeun nyayogikeun fitur sapertos PaaS, kalebet modél panyebaran biru-héjo, penegak TLS otomatis, waktosna waktos, sareng fitur routing canggih anu sanés.

Sanggeus sababaraha waktu, urang nempo yén pods urang geus ngiles (sabab teu aya lalulintas asup):

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

Tungtungna urang bakal nyobian ngahontal aranjeunna. Anjeun tiasa sacara gampil sareng gampang kéngingkeun URL pikeun Knative Proxy nganggo glooctl:

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

Tanpa dipasang glooctl Anjeun tiasa ningali alamat sareng port dina layanan 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

Hayu urang ngajalankeun sababaraha data nganggo cURL:

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

Knative nyadiakeun ampir-PaaS pikeun pamekar dina luhureun out-of-the-box Kubernetes ngagunakeun-kinerja tinggi Gloo, full-tumpukan gateway API. Pos ieu ngan ukur ngagores permukaan pilihan kustomisasi éksténsif Knative sareng fitur tambahan. Sarua jeung Gloo!

Najan kanyataan yén Knative masih mangrupa proyék ngora, tim na Kaluaran versi anyar unggal genep minggu, sarta palaksanaan fitur canggih geus dimimitian, kayaning deployment TLS otomatis, skala otomatis tina panel kontrol. Aya kamungkinan luhur yén, salaku hasil tina kolaborasi antara sababaraha perusahaan awan, sareng salaku dasar panawaran Cloud Run énggal Google, Knative tiasa janten pilihan utama pikeun komputasi tanpa server sareng PaaS dina Kubernetes. Turutan warta!

Ti Redaksi SouthBridge
Pendapat pamiarsa penting pikeun kami, janten kami nyuhunkeun anjeun pikeun ngiringan survey pondok anu aya hubunganana sareng tulisan anu bakal datang ngeunaan Knative, Kubernetes, komputasi tanpa server:

Ngan pamaké nu kadaptar bisa ilubiung dina survey. Daptar, Punten.

Naha kuring kedah neraskeun nyerat tulisan sareng pituduh ngeunaan komputasi Knative sareng serverless?

  • Sumuhun mangga.

  • Henteu nuhun.

28 pamaké milih. 4 pamaké abstained.

sumber: www.habr.com

Tambahkeun komentar