بادلوں میں Kubernetes پر پیسے بچانے کے لیے Kubecost کا جائزہ

بادلوں میں Kubernetes پر پیسے بچانے کے لیے Kubecost کا جائزہ

فی الحال، زیادہ سے زیادہ کمپنیاں اپنے بنیادی ڈھانچے کو ہارڈ ویئر سرورز اور اپنی ورچوئل مشینوں سے کلاؤڈ پر منتقل کر رہی ہیں۔ اس حل کی وضاحت کرنا آسان ہے: ہارڈ ویئر کے بارے میں فکر کرنے کی ضرورت نہیں ہے، کلسٹر کو بہت سے مختلف طریقوں سے آسانی سے ترتیب دیا جاتا ہے... اور سب سے اہم بات یہ ہے کہ موجودہ ٹیکنالوجیز (جیسے کبرنیٹس) بوجھ کے لحاظ سے کمپیوٹنگ پاور کو آسانی سے پیمانہ کرنا ممکن بناتی ہیں۔ .

مالی پہلو ہمیشہ اہم ہوتا ہے۔ اس مضمون میں زیر بحث ٹول کوبرنیٹس کے ساتھ کلاؤڈ انفراسٹرکچر استعمال کرتے وقت بجٹ کو کم کرنے میں مدد کے لیے ڈیزائن کیا گیا ہے۔

تعارف

کیوبکوسٹ گوگل کی طرف سے کیلیفورنیا کا ایک سٹارٹ اپ ہے، جو کلاؤڈ سروسز میں بنیادی ڈھانچے کی لاگت کا حساب لگانے کے لیے ایک حل تیار کرتا ہے (ایک Kubernetes کلسٹر + مشترکہ وسائل کے اندر)، کلسٹر سیٹنگز میں رکاوٹوں کو تلاش کرنا اور Slack کو مناسب اطلاعات بھیجنا۔

ہمارے پاس Kubernetes کے ساتھ واقف AWS اور GCP کلاؤڈز، اور Azure میں کلائنٹس ہیں، جو کہ لینکس کمیونٹی کے لیے زیادہ نایاب ہے - عام طور پر، Kubecost کے تعاون یافتہ تمام پلیٹ فارمز پر۔ ان میں سے کچھ کے لیے، ہم خود انٹرا کلسٹر خدمات کے اخراجات کا حساب لگاتے ہیں (کوبیکوسٹ کے استعمال سے ملتا جلتا طریقہ استعمال کرتے ہوئے)، اور انفراسٹرکچر کے اخراجات کی بھی نگرانی کرتے ہیں اور ان کو بہتر بنانے کی کوشش کرتے ہیں۔ لہذا، یہ منطقی ہے کہ ہم اس طرح کے کاموں کو خودکار کرنے کے امکان میں دلچسپی رکھتے تھے۔

مین Kubecost ماڈیول کا سورس کوڈ اوپن سورس لائسنس (Apache License 2.0) کی شرائط کے تحت کھلا ہے۔ اسے آزادانہ طور پر استعمال کیا جا سکتا ہے اور دستیاب خصوصیات چھوٹے منصوبوں کے لیے کافی ہونی چاہئیں۔ تاہم، کاروبار کاروبار ہے: باقی پروڈکٹ بند ہے، اسے استعمال کیا جا سکتا ہے۔ ادا شدہ سبسکرپشنزجس کا مطلب تجارتی تعاون بھی ہے۔ اس کے علاوہ، مصنفین چھوٹے کلسٹرز کے لیے مفت لائسنس پیش کرتے ہیں (1 نوڈس کے ساتھ 10 کلسٹر - اس مضمون کی تحریر کے دوران، یہ حد 20 نوڈس تک بڑھ گئی ہے) یا 1 ماہ کے لیے مکمل صلاحیتوں کے ساتھ آزمائشی مدت۔

سب کچھ کیسے کام کرتا ہے۔

لہذا، Kubecost کا بنیادی حصہ درخواست ہے لاگت کا ماڈلGo میں لکھا ہوا ہے۔ ایک ہیلم چارٹ جو پورے نظام کو بیان کرتا ہے کہلاتا ہے۔ لاگت کا تجزیہ کرنے والا اور اس کے مرکز میں پرومیتھیس، گرافانا اور کئی ڈیش بورڈز کے ساتھ لاگت کے ماڈل سے ایک اسمبلی ہے۔

عام طور پر، لاگت ماڈل کا اپنا ویب انٹرفیس ہوتا ہے، جو ٹیبلر شکل میں لاگت کے گراف اور تفصیلی اعدادوشمار دکھاتا ہے، ساتھ ہی، یقیناً، اخراجات کو بہتر بنانے کے لیے تجاویز بھی۔ Grafana میں پیش کیے گئے ڈیش بورڈز Kubecost کی ترقی کا ایک ابتدائی مرحلہ ہیں اور ان میں لاگت کے ماڈل کے طور پر زیادہ تر ڈیٹا ہوتا ہے، جو کلسٹر میں CPU/میموری/نیٹ ورک/ڈسک کی جگہ کے استعمال کے معمول کے اعدادوشمار کے ساتھ ان کی تکمیل کرتا ہے۔ اجزاء

Kubecost کیسے کام کرتا ہے؟

  • لاگت کا ماڈل کلاؤڈ فراہم کنندگان کے API کے ذریعے خدمات کی قیمتیں وصول کرتا ہے۔
  • مزید، نوڈ کی لوہے کی قسم اور علاقے پر منحصر ہے، فی نوڈ کی قیمت کا حساب لگایا جاتا ہے۔
  • نوڈس چلانے کی لاگت کی بنیاد پر، ہر لیف پوڈ کو CPU کے استعمال کے فی گھنٹہ، استعمال شدہ میموری کی فی گیگا بائٹ، اور ذخیرہ شدہ ڈیٹا کی فی گھنٹہ فی گیگا بائٹ لاگت ملتی ہے - اس نوڈ پر یا اسٹوریج کی کلاس پر منحصر ہے۔
  • انفرادی پوڈ کو چلانے کی لاگت کی بنیاد پر، ادائیگی کا حساب نام کی جگہوں، خدمات، تعیناتیوں، اسٹیٹفول سیٹس کے لیے کیا جاتا ہے۔
  • اعداد و شمار کو کیوب اسٹیٹ میٹرکس اور نوڈ ایکسپورٹر کے ذریعہ فراہم کردہ میٹرکس کا استعمال کرتے ہوئے شمار کیا جاتا ہے۔

یہ غور کرنا ضروری ہے کہ Kubecost بطور ڈیفالٹ صرف Kubernetes میں دستیاب وسائل کو شمار کرتا ہے۔. بیرونی ڈیٹا بیس، GitLab سرورز، S3 سٹوریجز اور دیگر خدمات جو کلسٹر میں نہیں ہیں (چاہے ایک ہی کلاؤڈ میں موجود ہوں) اسے نظر نہیں آتے۔ اگرچہ GCP اور AWS کے لیے آپ اپنے سروس اکاؤنٹس کی کلیدیں شامل کر سکتے ہیں اور ہر چیز کا حساب لگا سکتے ہیں۔

تنصیب

Kubecost کی ضرورت ہے:

  • Kubernetes ورژن 1.8 اور اس سے زیادہ؛
  • kube-state-metrics;
  • پرومیتھیس؛
  • نوڈ برآمد کنندہ

ایسا ہوا کہ ہمارے جھرمٹ میں یہ تمام شرائط پہلے سے پوری ہو گئی تھیں، تو معلوم ہوا کہ صرف پرومیتھیس تک رسائی کے لیے صحیح اختتامی نقطہ بتانا کافی ہے۔ تاہم، آفیشل کیوب کوسٹ ہیلم چارٹ میں وہ سب کچھ ہوتا ہے جو آپ کو ننگے کلسٹر پر چلانے کے لیے درکار ہے۔

Kubecost انسٹال کرنے کے کئی طریقے ہیں:

  1. معیاری تنصیب کا طریقہ بیان کیا گیا ہے۔ ہدایات ڈویلپر کی ویب سائٹ پر۔ درکار ہے۔ لاگت کا تجزیہ کرنے والے ذخیرہ کو ہیلم میں شامل کریں، اور پھر چارٹ انسٹال کریں۔. باقی صرف یہ ہے کہ آپ اپنے پورٹ کو فارورڈ کریں اور سیٹنگز کو دستی طور پر مطلوبہ حالت میں ایڈجسٹ کریں (بذریعہ kubectl) اور/یا لاگت ماڈل ویب انٹرفیس کا استعمال کرتے ہوئے۔

    ہم نے اس طریقے کو آزمایا بھی نہیں ہے، کیونکہ ہم تھرڈ پارٹی ریڈی میڈ کنفیگریشنز استعمال نہیں کرتے ہیں، لیکن ایسا لگتا ہے کہ "صرف اسے اپنے لیے آزمائیں" آپشن۔ اگر آپ کے پاس پہلے سے ہی سسٹم کے کچھ اجزاء انسٹال ہیں یا آپ مزید ٹھیک ٹیوننگ چاہتے ہیں تو بہتر ہے کہ دوسرے راستے پر غور کریں۔

  2. لازمی طور پر استعمال کریں۔ ایک ہی چارٹ، لیکن اسے خود ترتیب دیں اور انسٹال کریں۔ کسی بھی آسان طریقے سے.

    جیسا کہ پہلے ہی ذکر کیا جا چکا ہے، خود کیوبکوسٹ کے علاوہ، اس چارٹ میں گرافانا اور پرومیتھیس چارٹس بھی شامل ہیں، جنہیں حسب منشا بنایا جا سکتا ہے۔

    چارٹ پر دستیاب ہے۔ values.yaml قیمت تجزیہ کار آپ کو ترتیب دینے کی اجازت دیتا ہے:

    • لاگت کا تجزیہ کرنے والے اجزاء کی ایک فہرست جنہیں تعینات کرنے کی ضرورت ہے۔
    • Prometheus کے لیے آپ کا اختتامی نقطہ (اگر آپ کے پاس پہلے سے ہی ہے)؛
    • لاگت ماڈل اور گرافانا کے لیے ڈومینز اور دیگر داخلے کی ترتیبات؛
    • پھلیوں کے لیے تشریحات؛
    • مستقل اسٹوریج اور اس کا سائز استعمال کرنے کی ضرورت۔

    تفصیل کے ساتھ دستیاب کنفیگریشن آپشنز کی مکمل فہرست میں دستیاب ہے۔ دستاویزات.

    چونکہ اس کے بنیادی ورژن میں kubecost رسائی کو محدود نہیں کر سکتا، اس لیے آپ کو فوری طور پر ویب پینل کے لیے بنیادی تحریر کو ترتیب دینے کی ضرورت ہوگی۔

  3. انسٹال کریں۔ صرف سسٹم کور - لاگت کا ماڈل۔ ایسا کرنے کے لیے، آپ کو کلسٹر میں Prometheus انسٹال ہونا چاہیے اور متغیر میں اس کے ایڈریس کی متعلقہ قدر کی وضاحت کرنی چاہیے۔ prometheusEndpoint ہیلم کے لیے اس کے بعد - درخواست دیں YAML کنفیگریشنز کا سیٹ کلسٹر میں

    ایک بار پھر، آپ کو دستی طور پر بنیادی تحریر کے ساتھ Ingress شامل کرنا پڑے گا۔ آخر میں، آپ کو لاگت کے ماڈل میٹرکس کو جمع کرنے کے لیے ایک سیکشن شامل کرنے کی ضرورت ہوگی۔ extraScrapeConfigs Prometheus ترتیب میں:

    - job_name: kubecost
      honor_labels: true
      scrape_interval: 1m
      scrape_timeout: 10s
      metrics_path: /metrics
      scheme: http
      dns_sd_configs:
      - names:
        - <адрес вашего сервиса kubecost>
        type: 'A'
        port: 9003

ہمیں کیا ملتا ہے؟

مکمل تنصیب کے ساتھ، ہمارے پاس ڈیش بورڈز کے سیٹ کے ساتھ kubecost اور Grafana ویب پینل موجود ہے۔

کل لاگت, مرکزی اسکرین پر ظاہر ہوتا ہے، اصل میں مہینے کے وسائل کی تخمینی لاگت کو ظاہر کرتا ہے۔ یہ متوقع قیمت جو وسائل کی کھپت کی موجودہ سطح پر کلسٹر (فی ماہ) کے استعمال کی لاگت کو ظاہر کرتی ہے۔

یہ میٹرک اخراجات کا تجزیہ کرنے اور انہیں بہتر بنانے کے لیے زیادہ ہے۔ کیوبکوسٹ میں خلاصہ جولائی کے کل اخراجات کو دیکھنا زیادہ آسان نہیں ہے: آپ کو کرنا پڑے گا بلنگ پر جائیں. لیکن آپ 1/2/7/30/90 دنوں کے لیے نام کی جگہوں، لیبلز، پوڈز کے حساب سے ٹوٹے ہوئے اخراجات دیکھ سکتے ہیں، جو بلنگ آپ کو کبھی نہیں دکھائے گی۔

بادلوں میں Kubernetes پر پیسے بچانے کے لیے Kubecost کا جائزہ

کی بات کرتے ہوئے۔ لیبلز. آپ کو فوری طور پر سیٹنگز پر جانا چاہیے اور ان لیبلز کے ناموں کو سیٹ کرنا چاہیے جو گروپنگ لاگت کے لیے اضافی زمرے کے طور پر استعمال کیے جائیں گے:

بادلوں میں Kubernetes پر پیسے بچانے کے لیے Kubecost کا جائزہ

آپ ان پر کوئی بھی لیبل لٹکا سکتے ہیں - اگر آپ کے پاس پہلے سے ہی اپنا لیبلنگ سسٹم ہے تو یہ آسان ہے۔

اس کے علاوہ وہاں آپ API اینڈ پوائنٹ کا ایڈریس تبدیل کر سکتے ہیں جس سے لاگت کا ماڈل جڑتا ہے، GCP میں ڈسکاؤنٹ سائز کو ایڈجسٹ کر سکتے ہیں اور ان کی پیمائش کے لیے وسائل اور کرنسی کے لیے اپنی قیمتیں مقرر کر سکتے ہیں (کسی وجہ سے یہ خصوصیت کل لاگت کو متاثر نہیں کرتی ہے)۔

Kubecost مختلف دکھا سکتا ہے کلسٹر میں مسائل (اور خطرے کی صورت میں بھی الرٹ)۔ بدقسمتی سے، آپشن قابل ترتیب نہیں ہے، اور اس وجہ سے، اگر آپ کے پاس ڈویلپرز کے لیے ماحول ہے اور آپ انہیں استعمال کرتے ہیں، تو آپ کو مسلسل کچھ ایسا نظر آئے گا:

بادلوں میں Kubernetes پر پیسے بچانے کے لیے Kubecost کا جائزہ

ایک اہم آلہ - کلسٹر بچت. یہ پوڈز کی سرگرمی (وسائل کی کھپت، بشمول نیٹ ورک کے وسائل) کی پیمائش کرتا ہے، اور یہ بھی حساب کرتا ہے کہ آپ کتنی رقم بچا سکتے ہیں اور کس چیز پر۔

ایسا لگتا ہے کہ اصلاح کی تجاویز بالکل واضح ہیں، لیکن تجربہ بتاتا ہے کہ ابھی بھی کچھ دیکھنا باقی ہے۔ خاص طور پر، پوڈز کے نیٹ ورک کی سرگرمی کی نگرانی کی جاتی ہے (کوبیکوسٹ غیر فعال پر توجہ دینے کا مشورہ دیتا ہے)، درخواست کردہ اور اصل میموری اور سی پی یو کی کھپت کا موازنہ کیا جاتا ہے، نیز کلسٹر نوڈس کے ذریعے استعمال ہونے والے سی پی یو (کئی نوڈس کو ایک میں سمیٹنے کی تجویز کرتا ہے)، ڈسک لوڈ اور ایک درجن مزید پیرامیٹرز۔

کسی بھی اصلاحی مسئلے کی طرح، Kubecost ڈیٹا کی بنیاد پر وسائل کو بہتر بنانے کی ضرورت ہے: احتیاط کے ساتھ علاج کریں. مثال کے طور پر، کلسٹر سیونگ نوڈس کو حذف کرنے کا مشورہ دیتا ہے، یہ دعویٰ کرتا ہے کہ یہ محفوظ ہے، لیکن ان پر تعینات پوڈز میں نوڈ سلیکٹرز اور داغوں کی موجودگی کو خاطر میں نہیں لاتا جو دوسرے نوڈس پر دستیاب نہیں ہیں۔ اور عام طور پر، یہاں تک کہ ان میں مصنوعات کے مصنفین حالیہ مضمون (ویسے، یہ ان لوگوں کے لیے بہت کارآمد ثابت ہو سکتا ہے جو پروجیکٹ کے موضوع میں دلچسپی رکھتے ہیں) یہ سفارش کی جاتی ہے کہ لاگت کو بہتر بنانے میں جلدی نہ کریں، بلکہ سوچ سمجھ کر مسئلے سے رجوع کریں۔

کے نتائج

ایک دو پروجیکٹس پر ایک ماہ تک kubecost استعمال کرنے کے بعد، ہم یہ نتیجہ اخذ کر سکتے ہیں کہ یہ Kubernetes کلسٹرز کے لیے استعمال ہونے والے کلاؤڈ فراہم کنندگان کی خدمات کے لیے لاگت کا تجزیہ اور اصلاح کرنے کے لیے ایک دلچسپ (اور سیکھنے اور انسٹال کرنے میں بھی آسان) ٹول ہے۔ حسابات بہت درست نکلے: ہمارے تجربات میں انہوں نے فراہم کنندگان کو درحقیقت مطلوبہ چیز سے اتفاق کیا۔

کچھ نشیب و فراز بھی ہیں: غیر اہم کیڑے ہیں، اور کچھ جگہوں پر فعالیت کچھ منصوبوں کے لیے مخصوص ضروریات کو پورا نہیں کرتی ہے۔ تاہم، اگر آپ کو فوری طور پر یہ سمجھنے کی ضرورت ہے کہ پیسہ کہاں جا رہا ہے اور کلاؤڈ سروسز کے بل کو 5-30 فیصد تک مسلسل کم کرنے کے لیے کیا "کٹ" کیا جا سکتا ہے (ہمارے معاملے میں ایسا ہی ہوا ہے)، یہ ایک بہترین آپشن ہے۔ .

PS

ہمارے بلاگ پر بھی پڑھیں:

ماخذ: www.habr.com

نیا تبصرہ شامل کریں