Knative - serversiz dəstəyi ilə k8s əsaslı platforma xidmət kimi

Knative - serversiz dəstəyi ilə k8s əsaslı platforma xidmət kimi

Kubernetes, şübhəsiz ki, konteyner yerləşdirilməsi üçün dominant platformaya çevrildi. O, API-lərini və xüsusi resursları ilə API-lərini genişləndirən xüsusi nəzarətçiləri istifadə edərək demək olar ki, hər şeyi idarə etmək imkanı verir.

Bununla belə, istifadəçi hələ də proqramları necə yerləşdirmək, konfiqurasiya etmək, idarə etmək və miqyaslaşdırmaq barədə ətraflı qərarlar qəbul etməlidir. Tətbiqin miqyası, qorunması və trafik axını ilə bağlı məsələlər istifadəçinin ixtiyarındadır. Bu, Kubernetes-i Cloud Foundry və Heroku kimi xidmət (PaaS) kimi adi platformalardan fərqləndirir.

Platformalar sadələşdirilmiş istifadəçi interfeysinə malikdir və ən çox fərdi proqramların qurulmasında iştirak edən proqram tərtibatçıları üçün nəzərdə tutulub. Marşrutlaşdırma, yerləşdirmə və ölçülər istifadəçi üçün əsas PaaS sistemi tərəfindən şəffaf şəkildə idarə olunur.

Mənbədən gəmiyə iş axını PaaS tərəfindən xüsusi konteyner təsviri yaratmaq, onu yerləşdirmək, daxil olan trafik üçün yeni marşrut və DNS alt domeni qurmaqla idarə olunur. Bütün bunlar əmrlə işə salınır git push.

Kubernetes (qəsdən) yalnız bu cür platformalar üçün əsas tikinti bloklarını təmin edərək, cəmiyyəti işi özləri görmək üçün sərbəst buraxır. Necə Kelsi Haytauer bildirib:

Kubernetes platformalar qurmaq üçün platformadır. Başlamaq üçün ən yaxşı mövqe, lakin bitirmə.

Nəticədə biz bir dəstə Kubernetes quruluşunu, həmçinin OpenShift və Rancher kimi Kubernetes üçün PaaS yaratmağa çalışan hosting şirkətlərini görürük. Artan Kube-PaaS bazarı fonunda 2018-ci ilin iyulunda Google və Pivotal tərəfindən qurulan Knative rinqə girir.

Knative, IBM, RedHat və Solo.im kimi digər şirkətlərin kiçik köməyi ilə Google və Pivotal arasında əməkdaşlıq idi. O, serversiz hesablama əsaslı tətbiqlər üçün yüksək səviyyəli dəstəyi ilə Kubernetes-ə oxşar PaaS şeyləri təklif edir. Kubernetes qurmalarından fərqli olaraq, Knative istənilən uyğun Kubernetes klasterində əlavə olaraq quraşdırılır və istifadəçi resursları vasitəsilə konfiqurasiya edilir.

Knative nədir?

Knative "Müasir serversiz hesablamalardan istifadə edərək iş yüklərini çatdırmaq və idarə etmək üçün Kubernetes əsaslı platforma" kimi təsvir edilmişdir. Knative, özünü belə bir platforma kimi təqdim edərkən, eyni vaxtda HTTP sorğularına mütənasib olaraq konteynerləri aktiv şəkildə avtomatik miqyaslandırır. İstifadə olunmayan xidmətlər nəhayət sıfıra enir, serversiz tipli tələb üzrə miqyaslaşdırma təmin edir.

Knative istənilən Kubernetes klasterində quraşdırılan və aşağıdakı imkanları təmin edən nəzarətçilər dəstindən ibarətdir:

  • mənbə kodundan konteynerləşdirilmiş proqramlar qurmaq (komponent tərəfindən təmin edilir qurmaq),
  • tətbiqlərə daxil olan trafikə girişin təmin edilməsi (komponent tərəfindən təmin edilir Xidmət),
  • Tətbiqlərin tələb üzrə çatdırılması və avtomatik miqyası (həmçinin komponent tərəfindən təmin edilir Xidmət),
  • tətbiqin işə salınmasına səbəb olan hadisələrin mənbələrinin müəyyən edilməsi (komponent tərəfindən təmin edilir Hərəkət).

Əsas komponent, idarə olunan tətbiqlər üçün təminat, avtomatik miqyaslama və trafikin idarə edilməsini təmin edən Xidmətdir. Knative-i quraşdırdıqdan sonra istifadəçilərə tətbiqləri idarə etməyə imkan verən Kubernetes API-yə hələ də tam girişiniz var adi yol və həmçinin bu xidmətlərin istifadə etdiyi eyni API primitivləri ilə işləyən Knative xidmətlərinin sazlanmasına xidmət edir (modullar, xidmətlər və s.).

Xidmətin köməyi ilə mavi-yaşıl trafik marşrutu da avtomatlaşdırılıb, istifadəçi tətbiqin yenilənmiş versiyasını təqdim edərkən tətbiqin yeni və köhnə versiyaları arasında trafikin ayrılmasını təmin edir.

Knative özü uyğun giriş nəzarətçisinin quraşdırılmasından asılıdır. Bu məqalənin yazılması zamanı dəstəklənir Gloo API Gateway и Istio Service Mesh. O, trafiki Knative tərəfindən idarə olunan tətbiqlərə yönləndirmək üçün mövcud girişi konfiqurasiya edəcək.

Istio Service Mesh, Istio idarəetmə panelini quraşdırmadan sınamaq istəyən Knative istifadəçiləri üçün böyük bir asılılıq ola bilər, çünki Knative yalnız şlüzdən asılıdır.

Bu səbəbdən istifadəçilərin əksəriyyəti Gloo-nu Knative-ə giriş qapısı kimi üstün tutur, Istio-ya oxşar imkanlar dəstini verir (yalnız Knative-dən istifadə etmək məqsədi ilə), eyni zamanda əhəmiyyətli dərəcədə daha az resursdan istifadə edir və əməliyyat xərclərini aşağı salır.

Gəlin Knative-i stenddə sınaqdan keçirək. Mən GKE-də işləyən təzə quraşdırılmış klasterdən istifadə edəcəyəm:

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

Gəlin Knative və Gloo-nu quraşdırmağa başlayaq. Bu istənilən qaydada edilə bilər:

# ставим 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əyən” statusunda olduğunu yoxlayırıq:

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 marşrutlaşdırmağa hazırdır, gəlin avtomatik miqyaslı Knative xidmətini yaradaq (gəlin bunu kservice adlandıraq) və trafiki ona yönləndirək.

Knative xidmətlər tətbiqləri Kubernetes-ə çatdırmaq üçün adi Deployment+Service+Ingress modelindən daha asan yol təqdim edir. Bu nümunə ilə işləyəcəyik:

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ə bu şəkildə tətbiq etdim:

kubectl apply -f ksvc.yaml -n default

Biz "helloworld-go" təqdim etdikdən sonra klasterdə Knative tərəfindən yaradılmış resurslara baxa bilərik. kservice:

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

“Halloworld-go” təsvirimizə malik pod kservice işə salındıqda işə salınır. Trafik yoxdursa, podların sayı sıfıra enəcək. Və əksinə, eyni vaxtda sorğuların sayı müəyyən bir konfiqurasiya edilə bilən həddi keçərsə, podların sayı artacaq.

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

Knative daxili Knative API-də xüsusi "giriş" resursundan istifadə edərək girişini konfiqurasiya edir. Gloo, mavi-yaşıl yerləşdirmə modeli, avtomatik TLS tətbiqi, fasilələr və digər qabaqcıl marşrutlaşdırma xüsusiyyətləri daxil olmaqla, PaaS kimi xüsusiyyətləri təmin etmək üçün bu API-dən konfiqurasiya kimi istifadə edir.

Bir müddət sonra biz podların yoxa çıxdığını görürük (daxil olan trafik olmadığı üçün):

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 istifadə edərək asanlıqla və asanlıqla URL əldə edə bilərsiniz glooctl:

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

Quraşdırılmadan glooctl kube xidmətində ünvanı və portu görə bilərsiniz:

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

Gəlin cURL istifadə edərək bəzi məlumatları işə salaq:

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

Knative, Gloo-nun yüksək performanslı, tam stack API şlüzindən istifadə edərək, hazır Kubernetes üzərində tərtibatçılar üçün demək olar ki, PaaS təmin edir. Bu yazı yalnız Knative-in geniş fərdiləşdirmə seçimlərinin və əlavə xüsusiyyətlərinin səthini cızdı. Gloo ilə eyni!

Knative hələ də gənc layihə olmasına baxmayaraq, onun komandası hər altı həftədən bir yeni versiyalar buraxır və avtomatik TLS yerləşdirmə, idarəetmə panelinin avtomatik miqyası kimi qabaqcıl funksiyaların tətbiqinə başlanılıb. Çoxlu bulud şirkətləri arasında əməkdaşlıq nəticəsində və Google-un yeni Cloud Run təklifinin əsası olaraq Knative-in Kubernetes-də serversiz hesablama və PaaS üçün əsas seçim ola biləcəyi üçün yaxşı şans var. Xəbərləri izləyin!

SouthBridge redaktorlarından
Oxucuların fikirləri bizim üçün vacibdir, ona görə də sizdən Knative, Kubernetes, serversiz hesablamalar haqqında gələcək məqalələrlə bağlı qısa sorğuda iştirak etməyinizi xahiş edirik:

Sorğuda yalnız qeydiyyatdan keçmiş istifadəçilər iştirak edə bilər. Daxil olunxahiş edirəm.

Knative və serversiz hesablamalar haqqında məqalələr və təlimatlar yazmağa davam etməliyəmmi?

  • Bəli, zəhmət olmasa.

  • Xeyr, təşəkkürlər.

28 istifadəçi səs verib. 4 istifadəçi bitərəf qalıb.

Mənbə: www.habr.com

Добавить комментарий