
Kubernetes بلاشبہ کنٹینر کی تعیناتی کا غالب پلیٹ فارم بن گیا ہے۔ یہ اپنے APIs اور کسٹم کنٹرولرز کا استعمال کرتے ہوئے تقریباً کسی بھی چیز کو کنٹرول کرنے کی صلاحیت فراہم کرتا ہے جو اپنی مرضی کے وسائل کے ساتھ APIs کو بڑھاتے ہیں۔
تاہم، صارف کو ابھی بھی اس بارے میں تفصیلی فیصلے کرنا ہوں گے کہ کس طرح ایپلی کیشنز کو تعینات، ترتیب، نظم اور اسکیل کرنا ہے۔ ایپلیکیشن اسکیلنگ، تحفظ، اور ٹریفک کے بہاؤ کے مسائل صارف کی صوابدید پر رہتے ہیں۔ یہ Kubernetes کو روایتی پلیٹ فارمز سے بطور سروس (PaaS) الگ کرتا ہے، جیسے کلاؤڈ فاؤنڈری اور ہیروکو۔
پلیٹ فارمز کا ایک آسان صارف انٹرفیس ہے اور اس کا مقصد ایپلیکیشن ڈویلپرز ہیں جو اکثر انفرادی ایپلی کیشنز کو ترتیب دینے میں شامل ہوتے ہیں۔ روٹنگ، تعیناتی، اور میٹرکس کا انتظام بنیادی PaaS سسٹم کے ذریعے صارف کے لیے شفاف طریقے سے کیا جاتا ہے۔
ماخذ سے جہاز کے ورک فلو کو PaaS ایک حسب ضرورت کنٹینر امیج بنا کر، اسے تعینات کر کے، ایک نیا راستہ ترتیب دے کر اور آنے والی ٹریفک کے لیے DNS ذیلی ڈومین کے ذریعے سنبھالتا ہے۔ یہ سب کمانڈ پر شروع کیا گیا ہے۔ git push.
Kubernetes (جان بوجھ کر) ایسے پلیٹ فارمز کے لیے صرف بنیادی تعمیراتی بلاکس فراہم کرتا ہے، جس سے کمیونٹی خود کام کرنے کے لیے آزاد رہتی ہے۔ کیسے :
Kubernetes پلیٹ فارم بنانے کا ایک پلیٹ فارم ہے۔ شروع کرنے کے لئے بہترین پوزیشن، لیکن ختم نہیں.
نتیجے کے طور پر، ہم Kubernetes کی تعمیرات کا ایک گروپ دیکھتے ہیں، نیز میزبان کمپنیاں جو Kubernetes کے لیے PaaS بنانے کی کوشش کر رہی ہیں، جیسے OpenShift اور Rancher۔ بڑھتی ہوئی Kube-PaaS مارکیٹ کے درمیان، Knative، جو جولائی 2018 میں Google اور Pivotal کے ذریعے قائم کیا گیا تھا، رنگ میں داخل ہو رہا ہے۔
Knative Google اور Pivotal کے درمیان ایک تعاون تھا، جس میں دوسری کمپنیوں جیسے IBM، RedHat اور Solo.im کی تھوڑی مدد تھی۔ یہ سرور لیس کمپیوٹنگ پر مبنی ایپلی کیشنز کے لیے اعلی درجے کی حمایت کے ساتھ Kubernetes کو اسی طرح کی PaaS چیزیں پیش کرتا ہے۔ Kubernetes کی تعمیر کے برعکس، Knative کو کسی بھی مطابقت پذیر Kubernetes کلسٹر پر ایک ایڈ آن کے طور پر انسٹال کیا جاتا ہے اور صارف کے وسائل کے ذریعے کنفیگر کیا جاتا ہے۔
Knative کیا ہے؟
Knative کو "جدید سرور لیس کمپیوٹنگ کا استعمال کرتے ہوئے کام کے بوجھ کی فراہمی اور انتظام کرنے کے لیے Kubernetes پر مبنی پلیٹ فارم" کے طور پر بیان کیا گیا ہے۔ Knative، خود کو اس طرح کے پلیٹ فارم کے طور پر بلنگ کرتے ہوئے، کنٹینرز کو فعال طور پر کنٹینرز کو سمورتی HTTP درخواستوں کے تناسب سے بناتا ہے۔ غیر استعمال شدہ خدمات آخر کار صفر تک سکیل کرتی ہیں، جو سرور کے بغیر طرز کی آن ڈیمانڈ اسکیلنگ فراہم کرتی ہیں۔
Knative کنٹرولرز کے ایک سیٹ پر مشتمل ہوتا ہے جو کسی بھی Kubernetes کلسٹر میں انسٹال ہوتا ہے اور درج ذیل صلاحیتیں فراہم کرتا ہے:
- ماخذ کوڈ سے کنٹینرائزڈ ایپلی کیشنز بنانا (جزو کے ذریعہ فراہم کردہ تعمیر),
- ایپلی کیشنز تک آنے والی ٹریفک تک رسائی فراہم کرنا (جز کے ذریعہ فراہم کردہ سرونگ),
- ڈیلیوری اور ڈیمانڈ پر ایپلی کیشنز کی خودکار اسکیلنگ (جز کے ذریعہ بھی فراہم کی گئی ہے۔ سرونگ),
- ایپلیکیشن لانچ کرنے والے واقعات کے ذرائع کی نشاندہی کرنا (جز کے ذریعہ فراہم کردہ واقعہ).
ایک کلیدی جزو سرونگ ہے، جو منظم ایپلی کیشنز کے لیے پروویژننگ، آٹو اسکیلنگ اور ٹریفک مینجمنٹ فراہم کرتا ہے۔ Knative کو انسٹال کرنے کے بعد، آپ کو اب بھی Kubernetes API تک مکمل رسائی حاصل ہے، جو صارفین کو ایپلیکیشنز کا نظم کرنے کی اجازت دیتا ہے۔ عام طریقہ، اور Knative سروسز کو ڈیبگ کرنے کا کام بھی کرتا ہے، اسی API پرائمیٹوز کے ساتھ کام کرتا ہے جو یہ سروسز استعمال کرتی ہیں (ماڈیولز، سروسز وغیرہ)۔
سرونگ کی مدد سے، نیلے سبز ٹریفک کی روٹنگ بھی خودکار ہے، جب صارف ایپلی کیشن کا اپ ڈیٹ ورژن فراہم کرتا ہے تو ایپلیکیشن کے نئے اور پرانے ورژن کے درمیان ٹریفک کی تقسیم کو یقینی بناتا ہے۔
Knative خود ایک ہم آہنگ انگریس کنٹرولر کو انسٹال کرنے پر منحصر ہے۔ اس مضمون کو لکھنے کے وقت تائید کی جاتی ہے۔ и . یہ Knative کے زیر انتظام ایپلی کیشنز تک ٹریفک کو روٹ کرنے کے لیے دستیاب داخلے کو ترتیب دے گا۔
Istio سروس میش Knative صارفین کے لیے ایک بڑا انحصار ہو سکتا ہے جو Istio کنٹرول پینل کو انسٹال کیے بغیر اسے آزمانا چاہتے ہیں، کیونکہ Knative صرف گیٹ وے پر منحصر ہے۔
اس وجہ سے، زیادہ تر صارفین Gloo کو 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 44sGloo روٹنگ کے لیے تیار ہے، آئیے ایک آٹو اسکیلنگ Knative سروس بنائیں (آئیے اسے kservice کہتے ہیں) اور ٹریفک کو اس تک روٹ کریں۔
Knative خدمات روایتی تعیناتی+سروس+انگریس ماڈل کے مقابلے 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ہماری 'helloworld-go' امیج کے ساتھ پوڈ کو لانچ کیا جاتا ہے جب kservice کو تعینات کیا جاتا ہے۔ اگر ٹریفک نہ ہو تو پوڈز کی تعداد صفر ہو جائے گی۔ اور اس کے برعکس، اگر بیک وقت درخواستوں کی تعداد ایک خاص قابل ترتیب حد سے تجاوز کر جاتی ہے، تو پوڈز کی تعداد بڑھ جائے گی۔
kubectl get ingresses.networking.internal.knative.dev -n default
NAME READY REASON
helloworld-go TrueKnative داخلی Knative API میں ایک خاص 'انگریس' وسائل کا استعمال کرتے ہوئے اپنے داخلے کو ترتیب دیتا ہے۔ Gloo اس API کو PaaS جیسی خصوصیات فراہم کرنے کے لیے اپنی کنفیگریشن کے طور پر استعمال کرتا ہے، بشمول نیلے سبز تعیناتی ماڈل، خودکار TLS نفاذ، ٹائم آؤٹ، اور دیگر جدید روٹنگ خصوصیات۔
کچھ دیر کے بعد، ہم دیکھتے ہیں کہ ہمارے پوڈ غائب ہو گئے ہیں (کیونکہ وہاں کوئی آنے والا ٹریفک نہیں تھا):
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 Proxy کے لیے 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 کے وسیع حسب ضرورت اختیارات اور اضافی خصوصیات کی سطح کو کھرچ دیا ہے۔ گلو کے ساتھ بھی ایسا ہی!
اس حقیقت کے باوجود کہ Knative ابھی بھی ایک نوجوان پراجیکٹ ہے، اس کی ٹیم ہر چھ ہفتے بعد نئے ورژن جاری کرتی ہے، اور جدید خصوصیات کا نفاذ شروع ہو چکا ہے، جیسے خودکار TLS تعیناتی، کنٹرول پینل کی خودکار سکیلنگ۔ ایک اچھا موقع ہے کہ، متعدد کلاؤڈ کمپنیوں کے درمیان تعاون کے نتیجے میں، اور گوگل کی نئی کلاؤڈ رن پیشکش کی بنیاد کے طور پر، Knative بغیر سرور کمپیوٹنگ اور Kubernetes پر PaaS کے لیے بنیادی آپشن بن سکتا ہے۔ خبروں پر عمل کریں!
ساؤتھ برج کے ایڈیٹرز سے
قارئین کی آراء ہمارے لیے اہم ہیں، اس لیے ہم آپ سے Knative، Kubernetes، سرور لیس کمپیوٹنگ کے بارے میں مستقبل کے مضامین سے متعلق ایک مختصر سروے میں حصہ لینے کے لیے کہتے ہیں:
سروے میں صرف رجسٹرڈ صارفین ہی حصہ لے سکتے ہیں۔ ، برائے مہربانی.
کیا مجھے Knative اور سرور لیس کمپیوٹنگ کے بارے میں مضامین اور گائیڈز لکھنا جاری رکھنا چاہیے؟
جی ہاں برائے مہربانی.
نہیں شکریہ.
28 صارفین نے ووٹ دیا۔ 4 صارفین غیر حاضر رہے۔
ماخذ: www.habr.com
