
Şü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: :
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 və . 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 21sKnative 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 44sGloo 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 userBunu bir fayla kopyaladım, sonra onu Kubernetes klasterimə belə tətbiq etdim:
kubectl apply -f ksvc.yaml -n defaultHə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 68sBizim ‘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 TrueKnative, ö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 9m46sNə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:80Quraş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 77mcURL 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. , 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
