بررسی Kubecost برای صرفه جویی در پول در Kubernetes در ابرها

بررسی Kubecost برای صرفه جویی در پول در Kubernetes در ابرها

در حال حاضر، شرکت های بیشتری در حال انتقال زیرساخت های خود از سرورهای سخت افزاری و ماشین های مجازی خود به فضای ابری هستند. توضیح این راه حل آسان است: نیازی به نگرانی در مورد سخت افزار نیست، خوشه به راحتی به روش های مختلف پیکربندی می شود ... و مهمتر از همه، فناوری های موجود (مانند Kubernetes) این امکان را فراهم می کند که به سادگی توان محاسباتی را بسته به بار مقیاس بندی کنید. .

جنبه مالی همیشه مهم است. ابزار مورد بحث در این مقاله برای کمک به کاهش بودجه هنگام استفاده از زیرساخت ابری با Kubernetes طراحی شده است.

معرفی

کوبکوست یک استارت آپ کالیفرنیایی از گوگل است که راه حلی برای محاسبه هزینه های زیرساخت در سرویس های ابری (در یک خوشه Kubernetes + منابع مشترک)، جستجوی گلوگاه ها در تنظیمات خوشه و ارسال اعلان های مناسب به Slack ایجاد می کند.

ما مشتریانی با Kubernetes در ابرهای آشنای AWS و GCP داریم، و به ندرت برای جامعه لینوکس، Azure - به طور کلی، در تمام پلتفرم های پشتیبانی شده توسط Kubecost. برای برخی از آنها، هزینه های خدمات درون خوشه ای را خودمان محاسبه می کنیم (با استفاده از روشی مشابه روشی که Kubecost استفاده می کند)، همچنین هزینه های زیرساخت را رصد می کنیم و سعی می کنیم آنها را بهینه کنیم. بنابراین، منطقی است که ما به امکان خودکارسازی چنین وظایفی علاقه مند بودیم.

کد منبع ماژول اصلی Kubecost تحت شرایط مجوز منبع باز (مجوز آپاچی 2.0) باز است. می توان آزادانه از آن استفاده کرد و ویژگی های موجود باید برای پروژه های کوچک کافی باشد. با این حال، تجارت یک تجارت است: بقیه محصول بسته است، می توان از آن استفاده کرد اشتراک های پولیکه حاکی از حمایت تجاری نیز می باشد. علاوه بر این، نویسندگان یک مجوز رایگان برای خوشه های کوچک (1 خوشه با 10 گره - در طول نگارش این مقاله، این محدودیت به 20 گره افزایش یافته است) یا یک دوره آزمایشی با قابلیت های کامل به مدت 1 ماه ارائه می دهند.

چگونه همه چیز کار می کند

بنابراین، بخش اصلی Kubecost برنامه است مدل هزینهنوشته شده در Go. نمودار هلم که کل سیستم را توصیف می کند نامیده می شود تحلیلگر هزینه و در هسته آن مجموعه ای از یک مدل هزینه با پرومتئوس، گرافانا و چندین داشبورد است.

به طور کلی، مدل هزینه دارای رابط وب خاص خود است که نمودارها و آمار دقیق هزینه ها را به صورت جدولی و البته نکاتی برای بهینه سازی هزینه ها نشان می دهد. داشبوردهای ارائه شده در Grafana مرحله اولیه توسعه Kubecost هستند و حاوی بسیاری از داده های مشابه با مدل هزینه هستند و آنها را با آمارهای معمول در مورد مصرف CPU / حافظه / شبکه / فضای دیسک در خوشه و آن تکمیل می کنند. اجزاء.

Kubecost چگونه کار می کند؟

  • مدل هزینه، قیمت خدمات را از طریق API ارائه دهندگان ابری دریافت می کند.
  • علاوه بر این، بسته به نوع آهن گره و منطقه، هزینه هر گره محاسبه می شود.
  • بر اساس هزینه اجرای گره‌ها، هر غلاف برگ به ازای هر ساعت استفاده از CPU، به ازای هر گیگابایت حافظه مصرفی، و به ازای هر ساعت به ازای هر گیگابایت داده ذخیره‌شده - بسته به گره‌ای که روی آن کار می‌کرد یا کلاس ذخیره‌سازی، هزینه دریافت می‌کند.
  • بر اساس هزینه های عملیاتی غلاف های فردی، پرداخت برای فضاهای نام، خدمات، استقرار، StatefulSets محاسبه می شود.
  • آمار با استفاده از معیارهای ارائه شده توسط kube-state-metrics و node-exporter محاسبه می شود.

مهم است که Kubecost را در نظر بگیرید به طور پیش فرض فقط منابع موجود در Kubernetes را شمارش می کند. پایگاه داده های خارجی، سرورهای GitLab، حافظه های S3 و سایر سرویس هایی که در خوشه نیستند (حتی اگر در همان ابر قرار داشته باشند) برای آن قابل مشاهده نیستند. اگرچه برای GCP و AWS می توانید کلیدهای حساب های سرویس خود را اضافه کنید و همه چیز را با هم محاسبه کنید.

نصب

Kubecost نیاز دارد:

  • Kubernetes نسخه 1.8 و بالاتر.
  • kube-state-metrics;
  • پرومتئوس;
  • صادرکننده گره

این اتفاق افتاد که در خوشه های ما همه این شرایط از قبل برآورده شد، بنابراین معلوم شد که کافی است فقط نقطه پایانی صحیح برای دسترسی به Prometheus را مشخص کنیم. با این حال، نمودار رسمی Kubecost Helm شامل همه چیزهایی است که برای اجرا در یک خوشه خالی نیاز دارید.

چندین راه برای نصب Kubecost وجود دارد:

  1. روش نصب استاندارد شرح داده شده در دستورالعمل در وب سایت توسعه دهنده. الزامی است مخزن هزینه تحلیلگر را به Helm اضافه کنید و سپس نمودار را نصب کنید. تنها چیزی که باقی می ماند این است که پورت خود را فوروارد کرده و تنظیمات را به صورت دستی (از طریق kubectl) و/یا با استفاده از رابط وب مدل cost-model تنظیم کنید.

    ما حتی این روش را امتحان نکرده‌ایم، زیرا از پیکربندی‌های آماده شخص ثالث استفاده نمی‌کنیم، اما به نظر می‌رسد یک گزینه خوب "فقط خودتان آن را امتحان کنید". اگر قبلاً برخی از اجزای سیستم را نصب کرده اید یا می خواهید تنظیمات دقیق تری داشته باشید، بهتر است مسیر دوم را در نظر بگیرید.

  2. اساسا استفاده کنید همان نمودار، اما خودتان آن را پیکربندی و نصب کنید به هر روش مناسب

    همانطور که قبلا ذکر شد، علاوه بر خود kubecost، این نمودار شامل نمودارهای Grafana و Prometheus است که می توان آنها را نیز به دلخواه شخصی سازی کرد.

    در نمودار موجود است values.yaml for cost-analyzer به شما امکان می دهد پیکربندی کنید:

    • فهرستی از اجزای تحلیلگر هزینه که باید مستقر شوند؛
    • نقطه پایانی شما برای Prometheus (اگر قبلاً یکی از آنها دارید)؛
    • دامنه ها و سایر تنظیمات ورودی برای مدل هزینه و Grafana.
    • حاشیه نویسی برای غلاف.
    • نیاز به استفاده از ذخیره سازی دائمی و اندازه آن.

    لیست کاملی از گزینه های پیکربندی موجود با توضیحات در دسترس است مستندات.

    از آنجایی که kubecost در نسخه اصلی خود نمی تواند دسترسی را محدود کند، باید فوراً basic-auth را برای پنل وب پیکربندی کنید.

  3. نصب کنید فقط هسته سیستم - مدل هزینه. برای این کار باید Prometheus را در کلاستر نصب کرده و مقدار مربوط به آدرس آن را در متغیر مشخص کنید. prometheusEndpoint برای هلم پس از آن - اعمال کنید مجموعه ای از تنظیمات YAML در خوشه

    باز هم باید Ingress را به صورت دستی با basic-auth اضافه کنید. در نهایت، باید بخشی را برای جمع آوری معیارهای مدل هزینه در آن اضافه کنید extraScrapeConfigs در پیکربندی پرومتئوس:

    - 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 را با مجموعه داشبورد در اختیار داریم.

هزینه کل، که در صفحه اصلی نمایش داده می شود، در واقع هزینه تخمینی منابع را برای ماه نشان می دهد. این قابل پیش بینی قیمت منعکس کننده هزینه استفاده از خوشه (در ماه) در سطح فعلی مصرف منابع.

این معیار بیشتر برای تجزیه و تحلیل هزینه ها و بهینه سازی آنها است. نگاه کردن به کل هزینه های جولای انتزاعی در kubecost چندان راحت نیست: شما باید این کار را انجام دهید. برو به صورتحساب. اما می‌توانید هزینه‌ها را به تفکیک فضاهای نام، برچسب‌ها، غلاف‌ها برای 1/2/7/30/90 روز ببینید که صورت‌حساب هرگز به شما نشان نمی‌دهد.

بررسی Kubecost برای صرفه جویی در پول در Kubernetes در ابرها

صحبت از برچسب ها. شما باید بلافاصله به تنظیمات بروید و نام برچسب هایی را که به عنوان دسته های اضافی برای گروه بندی هزینه ها استفاده می شوند را تنظیم کنید:

بررسی Kubecost برای صرفه جویی در پول در Kubernetes در ابرها

شما می توانید هر برچسبی را روی آنها آویزان کنید - اگر سیستم برچسب گذاری خود را دارید راحت است.

همچنین در آنجا می توانید آدرس نقطه پایانی API را که مدل هزینه به آن متصل می شود تغییر دهید، اندازه تخفیف را در GCP تنظیم کنید و قیمت منابع و ارز خود را برای اندازه گیری آنها تنظیم کنید (به دلایلی این ویژگی بر هزینه کل تأثیر نمی گذارد).

Kubecost می تواند انواع مختلفی را نشان دهد مشکلات در خوشه (و حتی در صورت خطر هشیار). متأسفانه این گزینه قابل تنظیم نیست و بنابراین، اگر محیط هایی برای توسعه دهندگان داشته باشید و از آنها استفاده کنید، دائماً چیزی شبیه به این خواهید دید:

بررسی Kubecost برای صرفه جویی در پول در Kubernetes در ابرها

یک ابزار مهم - پس انداز خوشه ای. فعالیت پادها (مصرف منابع، از جمله منابع شبکه) را اندازه گیری می کند و همچنین محاسبه می کند که چقدر پول و چه چیزی می توانید در آن صرفه جویی کنید.

ممکن است به نظر برسد که نکات بهینه سازی کاملاً واضح است، اما تجربه نشان می دهد که هنوز چیزی برای بررسی وجود دارد. به طور خاص، فعالیت شبکه پادها نظارت می شود (کوبکوست توجه به موارد غیرفعال را پیشنهاد می کند)، حافظه درخواستی و واقعی و مصرف CPU و همچنین CPU مورد استفاده توسط گره های خوشه ای مقایسه می شود (پیشنهاد می کند چندین گره به یک گره تبدیل شوند)، دیسک بار و چند ده پارامتر دیگر.

مانند هر مسئله بهینه سازی، بهینه سازی منابع بر اساس داده های Kubecost نیازمند موارد زیر است: با احتیاط رفتار کنید. به عنوان مثال، Cluster Savings حذف گره‌ها را پیشنهاد می‌کند و ادعا می‌کند که ایمن است، اما وجود گره‌های انتخابگر و لکه‌ها را در غلاف‌های مستقر شده روی آنها که در سایر گره‌ها در دسترس نیستند، در نظر نمی‌گیرد. و به طور کلی، حتی نویسندگان محصول در خود مقاله اخیر (به هر حال، می تواند برای کسانی که به موضوع پروژه علاقه مند هستند بسیار مفید باشد) توصیه می شود در بهینه سازی هزینه ها عجله نکنید، بلکه با تفکر به موضوع نزدیک شوید.

نمایش نتایج: از

پس از استفاده از kubecost به مدت یک ماه در چند پروژه، می‌توان نتیجه گرفت که این ابزار جالب (و همچنین یادگیری و نصب آسان) برای تجزیه و تحلیل و بهینه‌سازی هزینه‌ها برای خدمات ارائه‌دهندگان ابری مورد استفاده برای خوشه‌های Kubernetes است. محاسبات بسیار دقیق به نظر می رسد: در آزمایشات ما آنها با آنچه ارائه دهندگان واقعاً نیاز داشتند مطابقت داشتند.

برخی نقاط ضعف نیز وجود دارد: اشکالات غیر بحرانی وجود دارد، و در برخی مکان ها عملکرد نیازهای خاص برخی از پروژه ها را پوشش نمی دهد. با این حال، اگر باید به سرعت بفهمید که پول به کجا می رود و چه چیزی را می توان "کاهش" کرد تا به طور مداوم صورتحساب خدمات ابری را 5-30٪ کاهش دهید (این همان چیزی است که در مورد ما اتفاق افتاد)، این یک گزینه عالی است. .

PS

در وبلاگ ما نیز بخوانید:

منبع: www.habr.com

اضافه کردن نظر