Knative — Kubernetes əsaslı serverless xidmət platformasıdır.

Knative — Kubernetes əsaslı serverless xidmət platformasıdır.

Şübhəsiz ki, konteynerlərin yayımı üçün dominant platforma Kubernetes-dir. O, API-ləri və istifadəçi resursları vasitəsilə genişləndirilmiş öz API-ləri ilə demək olar ki, hər şeyi idarə etməyə imkan tanıyır.

Bununla belə, istifadəçi hələ də tətbiqləri necə yayacağında, quracağında, idarə edəcəyində və ölçeklendireceğinde detallı qərarlar qəbul etməlidir. Tətbiqlərin ölçeklendirilmesi, təhlükəsizlik və trafik keçirilməsi kimi məsələlər istifadəçinin ixtiyarında qalır. Bu, Kubernetes-i adi “platforma xidmət olaraq” (PaaS) modellərindən, məsələn, Cloud Foundry və Heroku-dan fərqləndirir.

Platformalar sadələşdirilmiş istifadəçi interfeysinə malikdir, tətbiq inkişaf etdiricilərinə yönəlib, bu inkişaf etdiricilər tez-tez fərdi tətbiqlərin konfiqurasiyası ilə məşğuldurlar. Yönləndirmə, yayım və metriklər istifadəçi üçün şəffaf şəkildə PaaS-in əsas sistemi tərəfindən idarə olunur.

“İstifadəçi kodu – təqdimat” iş prosesi PaaS vasitəsilə istifadəçi konteyner imici yaradaraq, onu yayımlayaraq, yeni yönəldici və DNS alt domenini inbound trafiki üçün konfiqurasiya edərək yerinə yetirilir. Bütün bunlar bir komanda ilə baş verir. git push.

Kubernetes (istədikdən) yalnız bu cür platformalar üçün əsas bloklar təqdim edir, icmaya bu işi özləri görə bilmək imkanı tanıyır. Kelsey Hightower-in dediyi kimi: “Kubernetes platformaların qurulması üçün bir platformadır. Başlamaq üçün ən yaxşı mövqedır, amma bitiş üçün deyil.”:

Nəticədə, biz Kubernetes-in bir neçə toplusunu və Kubernetes üçün PaaS yaratmağa çalışan hostingləri görürük, məsələn, OpenShift və Rancher. Kube-PaaS bazarının artan fonunda, Knative, 2018-ci ilin iyul ayında Google və Pivotal şirkətləri tərəfindən yaradılıb.

Knative, Google və Pivotal-ın birgə əməkdaşlığı nəticəsində meydana gəldi, IBM, RedHat və Solo.im kimi digər şirkətlərin kiçik dəstəyi ilə. O, Kubernetes üçün mükəmməl serverless hesablamalar əsasında tətbiqləri dəstəkləyən PaaS imkanları təqdim edir. Kubernetes toplularından fərqli olaraq, Knative, hər hansı bir uyğun Kubernetes klasterində əlavələr şəklində quraşdırılır və istifadəçi resursları vasitəsilə konfiqurasiya edilir.

Knative nədir?

Knative «Müasir serverless hesablamalar vasitəsilə iş yükünün təqdimatı və idarəsi üçün Kubernetes əsaslı platforma» olaraq təsvir edilir. Knative, belə bir platforma olaraq, HTTP-yə eyni anda edilən sorğulara mütənasiblə konteynerləri avtomatik şəkildə ölçür. İstifadə olunmayan xidmətlər nəticədə sıfıra ölçülür, bu da serverless hesablamalar üslubunda tələbə uyğun ölçülmə təqdim edir.

Knative, hər hansı bir Kubernetes klasterinə quraşdırılan və aşağıdakı imkanları təmin edən bir sıra idarəedicilərdən ibarətdir:

Knative, Kubernetes klasterinə qura bilən bir sıra kontrollerlərdən ibarətdir və aşağıdakı imkanları təmin edir:

  • snaytää containerləşdirilmiş tətbiqlərin mənbə kodundan (tərkib hissəsi təmin edilir) İnşaat),
  • giriş trafikinə tətbiqlərə giriş imkanı vermək (tərkib hissəsi təmin edilir) Xidmət),
  • tətbiqləri tələbə görə təmin etmək və avtomatik genişləndirmək (həmçinin tərkib hissəsi təmin edilir) Xidmət),
  • tədbirləri başlatmağa səbəb olan mənbələri müəyyənləşdirmək (tərkib hissəsi təmin edilir) Hadisə).

Əsas tərkib hissəsi Xidmət olub, o, yerləşdirmə, avtomatik genişləndirmə və trafik axını idarəsi üçün idarə olunan tətbiqləri təmin edir. Knative quraşdırıldıqdan sonra, istifadəçilərə tətbiqləri idarə etmək üçün API Kubernetesə tam giriş imkanı qalır. adi çalışma metodu, eyni zamanda həmin xidmətlərin istifadə etdiyi API'nin əsas primitiveləri ilə işləyərək Knative xidmətlərinin yoxlanılması üçün xidmət edir (modullar, xidmətlər və s.).

Xidmət vasitəsilə, istifadəçinin tətbiqin yeni versiyasını təqdim edərkən köhnə və yeni versiyalar arasında trafik bölməsini təmin edən blue-green trafik yönləndirməsi də avtomatlaşdırılır.

Knative, uyğun bir ingress kontrolçusunun quraşdırılmasından asılıdır. Məqalə yazılarkən, dəstəklənənlər Gloo API GatewayIstio Service Mesh. O, Knative idarə olunan tətbiqlərinə trafik yönləndirmək üçün mövcud ingressi konfiqurasiya edəcək.

Istio Service Mesh, Knative istifadəçiləri üçün, Istio idarəetmə panelinin quraşdırılmadan bunu sınamaq istəyənlər üçün ciddi bir asılılıq ola bilər, çünki Knative yalnız giriş qapısından asılıdır.

Bu səbəbdən, əksər istifadəçilər, Istio ilə müqayisədə Knative üçün oxşar imkanlar təqdim edən Gloo'yu, həmçinin çox daha az resurs istehlak edən və daha aşağı istismar xərcləri təmin edən qapı olaraq seçməyə meyllidirlər.

Gəlin Knative'i fəaliyyət içində yoxlayaq. Mən GKE-də işə salınan yeni quraşdırılmış klasterdən istifadə edəcəyəm:

kubectl get namespace
NAME          STATUS   AGE
default       Aktiv    21s
kube-public   Aktiv    21s
kube-system   Aktiv    21s

Knative və Gloo quraşdırmağı başlayaq. Bunu hər hansı bir qaydada edə bilərik:

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

Bütün Podların «İşləyir» statusunda olduğunu yoxlayaq:

kubectl get pod -n knative-serving
NAME                              READY   STATUS    RESTARTS   AGE
activator-5dd55958cc-fkp7r        1/1     İşləyir  0          7d32s
autoscaler-fd66459b7-7d5s2        1/1     İşləyir  0          7d31s
autoscaler-hpa-85b5667df4-mdjch   1/1     İşləyir  0          7d32s
controller-85c8bb7ffd-nj9cs       1/1     İşləyir  0          7d29s
webhook-5bd79b5c8b-7czrm          1/1     İşləyir  0          7d29s
kubectl get pod -n gloo-system
NAME                                      READY   STATUS    RESTARTS   AGE
discovery-69548c8475-fvh7q               1/1     İşləyir  0          44s
gloo-5b6954d7c7-7rfk9                    1/1     İşləyir  0          45s
ingress-6c46cdf6f6-jwj7m                 1/1     İşləyir  0          44s
knative-external-proxy-7dd7665869-x9xkg 1/1     İşləyir  0          44s
knative-internal-proxy-7775476875-9xvdg 1/1     İşləyir  0          44s

Gloo yönləndirməyə hazırdır, gəlin avtomatik genişləndirilən Knative xidmətini (adi kservice) yaradaq və ona trafik yönləndirək.

Knative xidmətləri, tətbiqləri Kubernetes-ə təqdim etməyin daha asan bir yolunu təqdim edir - adi Deployment+Service+Ingress modelinə nisbətən. Gəlin belə bir nümunə ilə işləyək:

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

Bunu bir fayla kopyaladım, sonra onu Kubernetes klasterimə belə tətbiq etdim:

kubectl apply -f ksvc.yaml -n default

Həmçinin, Knative tərəfindən yaradılan resursları klasterimizdə ‘helloworld-go’ təqdim etdikdən sonra görə bilərik. kservice:

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

Bizim ‘helloworld-go’ görüntümüzü içərən Pod, kservice-in tətbiqi zamanı işə düşür. Əgər trafik olmayacaqsa - pod sayı sıfıra endiriləcək. Əksinə, eyni zamanda olan sorğuların sayı müəyyən bir konfiqurasiya olunan həddə keçərsə - pod sayı artırılacaq.

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

Knative, öz ingress-ni Knative daxili API-də xüsusi ‘ingress’ resursunu istifadə edərək konfiqurasiya edir. Gloo, PaaS-a xas xüsusiyyətləri təqdim etmək üçün bu API-nı konfiqurasiyası olaraq alır, bunlara blue-green modeldə yayım, TLS-in avtomatik tətbiqi, zaman aşımı və digər genişlənmiş yönləndirmə xüsusiyyətləri daxildir.

Bir müddət sonra görürük ki, podlarımız itmişdir (çünki gələn trafik yox idi):

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

Nəhayət, onlara çatmağa çalışacağıq. Knative Proxy üçün URL əldə etmək asanlıqla mümkündür glooctl:

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

Quraşdırılmış olmadan glooctl kube xidmətində ünvanı və portu gözdən keçirmək olar:

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

cURL istifadə edərək bir az məlumat göndərəcəyik:

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

Knative, yüksək performanslı tam funksiyalı Gloo API gateway ilə ‘boxdan çıxmış’ Kubernetes üzərində inkişafçılar üçün demək olar ki, PaaS təqdim edir. Bu qeyd, Knative-in konfiqurasiya üçün mövcud geniş imkanlarından və əlavə funksiyalardan yalnız bir azına toxunur. Eyni zamanda, Gloo da belədir!

Knative hələ gənc bir layihə olmasına baxmayaraq, komandası hər altı həftədən bir yeni versiyalar təqdim edir, avtomatik TLS konfiqurasiyası və idarəetmə panelinin avtomatik miqyaslandırılması kimi inkişaf etmiş funksiyaların həyata keçirilməsinə başlayıb. Müxtəlif bulud şirkətlərinin əməkdaşlığı nəticəsində, eləcə də Google-dan Cloud Run təklifinin əsasında, Knative serverless hesablama və Kubernetes-də PaaS üçün əsas seçim ola bilər. Xəbərləri izləyin!

SouthBridge redaksiyasından
Oxucuların rəyini bilmək bizim üçün önəmlidir, buna görə də sizdən Knative, Kubernetes, serverless hesablama ilə bağlı gələcək məqalələr üçün kiçik bir anketdə iştirak etməyinizi xahiş edirik:

Yalnız qeydiyyatdan keçmiş istifadəçilər sorğuda iştirak edə bilərlər. Daxil olun, xahiş edirəm.

Knative və serverless hesablama ilə bağlı daha çox məqalə və bələdçi yazmağı davam edək?

  • Bəli, xahiş edirəm.

  • Təşəkkür, lazım deyil.

28 istifadəçi səs verdi. 4 istifadəçi çəkindi.

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster