Knative - platform-as-a-service basis k8s kanthi dhukungan tanpa server

Knative - platform-as-a-service basis k8s kanthi dhukungan tanpa server

Kubernetes mesthi dadi platform sing dominan kanggo panyebaran wadah. Nyedhiyakake kemampuan kanggo ngontrol meh kabeh nggunakake API lan pengontrol khusus sing ngluwihi API kanthi sumber daya khusus.

Nanging, pangguna isih kudu nggawe keputusan sing rinci babagan cara masang, ngatur, ngatur, lan ukuran aplikasi. Masalah skala aplikasi, proteksi, lan arus lalu lintas tetep miturut kawicaksanan pangguna. Iki mbedakake Kubernetes saka platform konvensional minangka layanan (PaaS), kayata Cloud Foundry lan Heroku.

Platform kasebut duwe antarmuka pangguna sing disederhanakake lan ditujokake kanggo pangembang aplikasi sing paling kerep melu nyetel aplikasi individu. Rute, panyebaran, lan metrik dikelola kanthi transparan kanggo pangguna dening sistem PaaS sing ndasari.

Alur kerja sumber-kanggo-kapal ditangani dening PaaS kanthi nggawe gambar wadhah khusus, nyebarake, nyetel rute anyar lan subdomain DNS kanggo lalu lintas mlebu. Kabeh iki dibukak ing printah git push.

Kubernetes (sengaja) mung nyedhiyakake blok bangunan inti kanggo platform kasebut, supaya komunitas bebas nindakake pakaryan dhewe. Carane Kelsey Hightower ngandika:

Kubernetes minangka platform kanggo mbangun platform. Posisi paling apik kanggo miwiti, nanging ora rampung.

AkibatΓ©, kita ndeleng akeh Kubernetes mbangun, uga perusahaan hosting sing nyoba nggawe PaaS kanggo Kubernetes, kayata OpenShift lan Rancher. Ing tengah-tengah pasar Kube-PaaS sing saya akeh, Knative, sing diadegake ing Juli 2018 dening Google lan Pivotal, mlebu ring.

Knative minangka kolaborasi antarane Google lan Pivotal, kanthi bantuan sethithik saka perusahaan liyane kayata IBM, RedHat lan Solo.im. Nawakake barang PaaS sing padha karo Kubernetes kanthi dhukungan paling dhuwur kanggo aplikasi basis komputasi tanpa server. Ora kaya mbangun Kubernetes, Knative diinstal minangka tambahan ing kluster Kubernetes sing kompatibel lan dikonfigurasi liwat sumber daya pangguna.

Apa iku Knative?

Knative diterangake minangka "Platform basis Kubernetes kanggo ngirim lan ngatur beban kerja nggunakake komputasi tanpa server modern." Knative, nalika tagihan dhewe minangka platform kasebut, kanthi aktif ngetung kontaner kanthi proporsi kanggo panjalukan HTTP bebarengan. Layanan sing ora digunakake pungkasane mudhun nganti nol, nyedhiyakake skala on-demand tanpa server.

Knative kasusun saka sakumpulan pengontrol sing diinstal ing kluster Kubernetes lan nyedhiyakake kapabilitas ing ngisor iki:

  • mbangun aplikasi containerized saka kode sumber (disedhiyakake dening komponen mbangun),
  • nyedhiyakake akses menyang lalu lintas mlebu menyang aplikasi (disedhiyakake dening komponen Bantu),
  • pangiriman lan skala otomatis aplikasi sing dikarepake (uga diwenehake dening komponen Bantu),
  • ngenali sumber acara sing ndadΓ©kakΓ© peluncuran aplikasi (disedhiyakake dening komponen Acara).

Komponen utama yaiku Serving, sing nyedhiyakake penyediaan, skala otomatis, lan manajemen lalu lintas kanggo aplikasi sing dikelola. Sawise nginstal Knative, sampeyan isih duwe akses lengkap menyang API Kubernetes, ngidini pangguna ngatur aplikasi sing biasa cara, lan uga serves kanggo debug layanan Knative, nggarap primitif API padha sing layanan iki digunakake (modul, layanan, etc.).

Kanthi bantuan saka Serving, rute lalu lintas biru-ijo uga otomatis, njamin pamisahan lalu lintas antarane versi aplikasi anyar lan lawas nalika pangguna ngirim versi aplikasi sing dianyari.

Knative dhewe gumantung ing nginstal ingress controller kompatibel. Ing wektu nulis artikel iki didhukung Gloo API Gateway ΠΈ Istio Service Mesh. Bakal ngatur ingress sing kasedhiya kanggo nuntun lalu lintas menyang aplikasi sing dikelola Knative.

Istio Service Mesh bisa dadi ketergantungan gedhe kanggo pangguna Knative sing pengin nyoba tanpa nginstal panel kontrol Istio, amarga Knative mung gumantung ing gateway.

Mulane, umume pangguna luwih seneng Gloo minangka gateway menyang Knative, nyedhiyakake kapabilitas sing padha karo Istio (kanggo tujuan mung nggunakake Knative), nalika uga nggunakake sumber daya sing luwih sithik lan biaya operasional sing luwih murah.

Ayo nyoba Knative ing tumindak ing stand. Aku bakal nggunakake kluster sing anyar diinstal ing GKE:

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

Ayo dadi miwiti nginstal Knative lan Gloo. Iki bisa ditindakake kanthi urutan apa wae:

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

Priksa manawa kabeh Pod ana ing status "Mlaku":

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 siyap kanggo nuntun, ayo kang nggawe layanan Knative skala otomatis (ayo nelpon kservice) lan lalu lintas rute menyang.

Layanan Knative nyedhiyakake dalan sing luwih gampang kanggo ngirim aplikasi menyang Kubernetes tinimbang model Deployment+Service+Ingress konvensional. Kita bakal nggarap conto iki:

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

Aku nyalin iki menyang file, banjur ditrapake ing kluster Kubernetes kanthi cara iki:

kubectl apply -f ksvc.yaml -n default

Kita bisa ndeleng sumber daya sing digawe Knative ing kluster sawise ngirim 'helloworld-go' klayan:

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

Pod kanthi gambar 'helloworld-go' diluncurake nalika kservice dipasang. Yen ora ana lalu lintas, jumlah polong bakal dikurangi dadi nol. Lan kosok balene, yen jumlah panjalukan simultaneous ngluwihi batesan configurable tartamtu, jumlah pods bakal nambah.

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

Knative ngatur ingress nggunakake sumber khusus 'ingress' ing internal Knative API. Gloo nggunakake API iki minangka konfigurasi kanggo nyedhiyakake fitur kaya PaaS, kalebu model penyebaran biru-ijo, penegakan TLS otomatis, wektu entek, lan fitur rute maju liyane.

Sawise sawetara wektu, kita weruh yen polong kita wis ilang (amarga ora ana lalu lintas mlebu):

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

Pungkasan, kita bakal nyoba nggayuh dheweke. Sampeyan bisa kanthi gampang lan gampang entuk URL kanggo Knative Proxy nggunakake glooctl:

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

Tanpa diinstal glooctl sampeyan bisa ndeleng alamat lan port ing 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

Ayo mbukak sawetara data nggunakake cURL:

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

Knative nyedhiyakake meh-PaaS kanggo pangembang ing ndhuwur out-of-the-box Kubernetes nggunakake kinerja dhuwur Gloo, full-stack API gateway. Kiriman iki mung ngeruk permukaan pilihan kustomisasi ekstensif Knative lan fitur tambahan. Padha karo Gloo!

Senadyan kasunyatan manawa Knative isih dadi proyek enom, tim kasebut ngeculake versi anyar saben enem minggu, lan implementasine fitur-fitur canggih wis diwiwiti, kayata panyebaran TLS otomatis, skala otomatis panel kontrol. Ana kemungkinan sing apik, minangka asil kolaborasi antarane pirang-pirang perusahaan awan, lan minangka basis saka penawaran Cloud Run anyar Google, Knative bisa dadi pilihan utama kanggo komputasi tanpa server lan PaaS ing Kubernetes. Tindakake warta!

Saka Editor saka SouthBridge
Panemu para pamaca penting kanggo kita, mula kita njaluk sampeyan melu survey singkat sing ana gandhengane karo artikel sabanjure babagan Knative, Kubernetes, komputasi tanpa server:

Mung pangguna pangguna sing bisa melu survey. mlebunggih.

Apa aku kudu terus nulis artikel lan pandhuan babagan komputasi Knative lan tanpa server?

  • Iyo, monggo.

  • Ora, matur suwun.

28 pangguna milih. 4 pangguna abstain.

Source: www.habr.com

Add a comment