Knative - k8s-based پلیټ فارم-د خدمت په توګه-د سرور پرته ملاتړ سره

Knative - k8s-based پلیټ فارم-د خدمت په توګه-د سرور پرته ملاتړ سره

Kubernetes بې له شکه د کانټینر ګمارلو لپاره غالب پلیټ فارم ګرځیدلی. دا د دې APIs او دودیز کنټرولرونو په کارولو سره نږدې هرڅه کنټرول کولو وړتیا چمتو کوي چې خپل APIs د دودیز سرچینو سره غزوي.

په هرصورت، کاروونکي لاهم باید د غوښتنلیکونو د ځای پرځای کولو، تنظیم کولو، اداره کولو او اندازه کولو څرنګوالي په اړه مفصلې پریکړې وکړي. د غوښتنلیک اندازه کولو ، محافظت او ترافیک جریان مسلې د کارونکي په اختیار کې پاتې دي. دا Kubernetes د دودیز پلیټ فارمونو څخه د خدمت (PaaS) په توګه جلا کوي ، لکه کلاوډ فاؤنډري او هیروکو.

پلیټ فارمونه یو ساده کارونکي انٹرفیس لري او هدف یې د غوښتنلیک پراختیا کونکي دي چې ډیری وختونه د انفرادي غوښتنلیکونو په ترتیب کولو کې دخیل وي. روټینګ، ځای پرځای کول، او میټریکونه د اصلي PaaS سیسټم لخوا کاروونکي ته په شفاف ډول اداره کیږي.

د سرچینې څخه تر کښتۍ پورې کاري فلو د PaaS لخوا د ګمرکي کانټینر عکس رامینځته کولو ، د ځای په ځای کولو ، د نوي لارې تنظیم کولو او د راتلونکي ترافیک لپاره د DNS فرعي ډومین لخوا اداره کیږي. دا ټول په قوماندې پیل شوي git push.

Kubernetes (په قصدي ډول) یوازې د دې ډول پلیټ فارمونو لپاره اصلي ودانۍ بلاکونه چمتو کوي ، ټولنه پخپله د کار کولو لپاره وړیا پریږدي. هغه څنګه Kelsey Hightower وویل:

Kubernetes د پلیټ فارم جوړولو لپاره یو پلیټ فارم دی. د پیل کولو لپاره غوره موقعیت، مګر پای ته نه رسیږي.

د پایلې په توګه، موږ د کبرنیټس جوړونې یوه ډله ګورو، په بیله بیا کوربه شرکتونه چې هڅه کوي د Kubernetes لپاره PaaS رامینځته کړي، لکه OpenShift او Rancher. د Kube-PaaS د ډیریدونکي بازار په مینځ کې، Knative، چې د 2018 په جولای کې د ګوګل او Pivotal لخوا تاسیس شوی، حلقې ته ننوځي.

Knative د ګوګل او Pivotal ترمنځ همکاري وه، د نورو شرکتونو لکه IBM، RedHat او Solo.im لږ مرستې سره. دا ورته PaaS شیان Kubernetes ته وړاندیز کوي د بې سرور کمپیوټر پراساس غوښتنلیکونو لپاره د لوړ پوړ ملاتړ سره. د Kubernetes جوړونو برعکس، Knative په هر مطابقت لرونکي Kubernetes کلستر کې د اضافې په توګه نصب شوی او د کاروونکي سرچینو له لارې تنظیم شوی.

Knative څه شی دی؟

Knative د "د عصري سرور بې کمپیوټري په کارولو سره د کاري بارونو رسولو او اداره کولو لپاره د Kubernetes-based پلیټ فارم" په توګه تشریح شوی. Knative، پداسې حال کې چې ځان د داسې یو پلیټ فارم په توګه بل کوي، په فعاله توګه د همغږي HTTP غوښتنو په تناسب کانتینرونه په اتوماتيک ډول ډکوي. نه کارول شوي خدمتونه په نهایت کې صفر ته راټیټیږي ، د سرور بې اندازې د غوښتنې اندازه کول چمتو کوي.

Knative د کنټرولرونو سیټ څخه جوړ دی چې په هر Kubernetes کلستر کې نصب کوي او لاندې وړتیاوې چمتو کوي:

  • د سرچینې کوډ څخه د کانټینر شوي غوښتنلیکونو جوړول (د برخې لخوا چمتو شوي جوړول),
  • غوښتنلیکونو ته راتلونکي ترافیک ته لاسرسی چمتو کول (د برخې لخوا چمتو شوي خدمت),
  • د غوښتنې په اساس د غوښتنلیکونو تحویل او اتوماتیک اندازه کول (د برخې لخوا هم چمتو شوي خدمت),
  • د پیښو سرچینې پیژندل چې د غوښتنلیک لانچونو لامل کیږي (د برخې لخوا چمتو شوي پیښه).

کلیدي برخه خدمت کول دي، کوم چې د مدیریت شوي غوښتنلیکونو لپاره چمتو کول، اتوماتیک اندازه کول، او د ترافیک مدیریت چمتو کوي. د Knative نصبولو وروسته، تاسو لاهم د Kubernetes API ته بشپړ لاسرسی لرئ، کاروونکو ته اجازه ورکوي چې غوښتنلیکونه اداره کړي عادي لاره، او همدارنګه د Knative خدماتو ډیبګ کولو لپاره کار کوي، د ورته API ابتدايي سره کار کوي چې دا خدمتونه کاروي (ماډولونه، خدمات، او نور).

د خدمت کولو په مرسته، د نیلي-شنه ترافیک روټینګ هم اتومات دی، د غوښتنلیک د نوي او زړو نسخو ترمنځ د ټرافیک جلا کول ډاډمن کوي ​​کله چې کاروونکي د غوښتنلیک تازه نسخه وړاندې کوي.

Knative پخپله د مناسب انګریس کنټرولر نصبولو پورې اړه لري. د دې مقالې لیکلو په وخت کې ملاتړ کیږي د ګلو API ګیټ وے и د اسټیو خدمت میش. دا به د Knative لخوا اداره شوي غوښتنلیکونو ته د ټرافيکو د تګ لپاره موجود داخلې تنظیم کړي.

د اسټیو خدمت میش د Knative کاروونکو لپاره لوی انحصار کیدی شي چې غواړي د اسټیو کنټرول پینل نصبولو پرته هڅه وکړي ، ځکه چې Knative یوازې په ګیټی پورې اړه لري.

د دې دلیل لپاره، ډیری کاروونکي ګلو د Knative لپاره د دروازې په توګه غوره کوي، Istio ته ورته وړتیاوې برابروي (یوازې د Knative کارولو هدف لپاره)، پداسې حال کې چې د پام وړ لږې سرچینې کاروي او د ټیټ عملیاتي لګښتونو سره.

راځئ چې په موقف کې په عمل کې Knative ازموینه وکړو. زه به یو تازه نصب شوی کلستر وکاروم چې په GKE کې روان دی:

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

راځئ چې د Knative او Gloo نصب کول پیل کړو. دا په هر ترتیب کې کیدی شي:

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

موږ ګورو چې ټول پوډونه په "چلونکي" حالت کې دي:

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 د روټینګ لپاره چمتو دی، راځئ چې د اتوماتیک اندازه کولو Knative خدمت جوړ کړو (راځئ چې دې ته kservice ووایو) او ټرافيک دې ته واړوو.

Knative خدمتونه د دودیز ځای پرځای کولو + خدمت + Ingress ماډل په پرتله Kubernetes ته د غوښتنلیکونو رسولو لپاره اسانه لار چمتو کوي. موږ به د دې مثال سره کار وکړو:

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

ما دا په یوه فایل کې کاپي کړه، بیا یې زما د کوبرنیټس کلستر ته په دې ډول پلي کړه:

kubectl apply -f ksvc.yaml -n default

موږ کولی شو هغه سرچینې وګورو چې د Knative لخوا زموږ د هیلو ورلډ-ګو وړاندې کولو وروسته په کلستر کې رامینځته شوي kservice:

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

زموږ د 'هیلوورلډ-ګو' عکس سره پوډ پیل کیږي کله چې kservice ځای په ځای شي. که چیرې ترافیک شتون ونلري، د پوډونو شمیر به صفر ته راټیټ شي. او برعکس، که د یوځل غوښتنو شمیر د یو ټاکلی ترتیب وړ حد څخه ډیر وي، د پوډونو شمیر به زیات شي.

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

Knative په داخلي Knative API کې د ځانګړي 'انګریس' سرچینې په کارولو سره خپل ننوتل تنظیموي. Gloo دا API د خپل ترتیب په توګه کاروي ترڅو د PaaS په څیر ب featuresې چمتو کړي ، پشمول د نیلي - شنه پلي کولو ماډل ، د TLS اتومات پلي کول ، وخت پای ، او نور پرمختللي روټینګ ب featuresې.

د یو څه وخت وروسته، موږ ګورو چې زموږ پوډونه ورک شوي دي (ځکه چې هیڅ راتلونکی ترافیک نه و):

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

په نهایت کې به هڅه وکړو چې دوی ته ورسیږو. تاسو کولی شئ په اسانۍ سره د Knative پراکسي په کارولو سره URL ترلاسه کړئ glooctl:

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

د نصب پرته glooctl تاسو کولی شئ د کیوب خدمت کې پته او بندر وګورئ:

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 په کارولو سره ځینې ډاټا چلوو:

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

Knative د Gloo د لوړ فعالیت، بشپړ سټیک API ګیټ وے په کارولو سره د بکس څخه بهر Kubernetes په سر کې د پراختیا کونکو لپاره نږدې PaaS چمتو کوي. دا پوسټ یوازې د Knative پراخه دودیز کولو اختیارونو او اضافي ب featuresو سطحه سکریچ کړې. د ګلو سره ورته!

د دې حقیقت سره سره چې Knative لاهم یوه ځوانه پروژه ده ، د دې ټیم په هرو شپږو اونیو کې نوې نسخې خپروي ، او د پرمختللي ب featuresو پلي کول پیل شوي ، لکه د TLS اتومات پلي کول ، د کنټرول پینل اتوماتیک اندازه کول. یو ښه چانس شتون لري چې د ډیری کلاوډ شرکتونو ترمینځ د همکارۍ په پایله کې ، او د ګوګل د نوي کلاوډ رن وړاندیز پراساس ، Knative کولی شي په Kubernetes کې د سرور پرته کمپیوټري او PaaS لپاره لومړني انتخاب شي. خبرونه تعقیب کړئ!

د جنوبي برج د مدیرانو څخه
د لوستونکو نظرونه زموږ لپاره مهم دي، نو موږ له تاسو څخه غوښتنه کوو چې د Knative، Kubernetes، سرور پرته کمپیوټر په اړه د راتلونکو مقالو پورې اړوند لنډ سروې کې برخه واخلئ:

یوازې راجستر شوي کاروونکي کولی شي په سروې کې برخه واخلي. ننوزئمهرباني وکړئ

ایا زه باید د Knative او سرور بې کمپیوټري په اړه مقالې او لارښودونو لیکلو ته دوام ورکړم؟

  • هو لورېينه وکړه.

  • نه مننه.

28 کاروونکو رایه ورکړه. 4 کاروونکي منع شوي.

سرچینه: www.habr.com

Add a comment