Kubecost مراجعة لتوفير المال على Kubernetes في الغيوم



حاليًا ، تقوم المزيد والمزيد من الشركات بنقل بنيتها التحتية من خوادم الحديد والأجهزة الافتراضية الخاصة بها إلى السحب. مثل هذا الحل سهل التفسير: ليست هناك حاجة للعناية بالأجهزة ، يتم تكوين المجموعة بسهولة بعدة طرق مختلفة ... والأهم من ذلك ، أن التقنيات المتاحة (مثل Kubernetes) تجعل من السهل توسيع نطاق طاقة الحوسبة اعتمادًا على الحمل.

الجانب المالي هو المهم دائما. تم تصميم الأداة ، التي سيتم مناقشتها في هذه المقالة ، للمساعدة في تقليل الميزانيات عند استخدام البنية التحتية السحابية مع Kubernetes.

مقدمة


Kubecost هي شركة ناشئة مقرها كاليفورنيا من مهاجرين من Google ، حيث تنشئ حلاً لحساب تكاليف البنية التحتية في الخدمات السحابية (داخل الموارد المشتركة لنظام Kubernetes +) ، وإيجاد الاختناقات في إعدادات المجموعة وإرسال الإشعارات المناسبة إلى سلاك.

لدينا عملاء مع Kubernetes في كلا من AWS و GCP المألوفين ، وكذلك في مجتمع أندر أزور Linux - بشكل عام ، على جميع المنصات التي تدعمها Kubecost. بالنسبة للبعض منهم ، فإننا ندرس تكاليف الخدمات البينية الخاصة بنا (باستخدام تقنية مشابهة لتلك المستخدمة في Kubecost) ، وكذلك مراقبة تكاليف البنية التحتية ومحاولة تحسينها. لذلك ، فمن المنطقي أننا مهتمون بالقدرة على أتمتة مثل هذه المهام.

كود المصدر لوحدة Kubecost الرئيسية مفتوح تحت رخصة المصدر المفتوح (Apache License 2.0). يمكن استخدامه بحرية ، ويجب أن تكون الوظائف المتاحة كافية للمشاريع الصغيرة. ومع ذلك ، فإن النشاط التجاري هو العمل: يتم إغلاق بقية المنتج ، ويمكن استخدامه للاشتراكات المدفوعة ، والتي تنطوي أيضًا على دعم تجاري. بالإضافة إلى ذلك ، يقدم المؤلفون ترخيصًا مجانيًا للمجموعات الصغيرة (مجموعة واحدة تحتوي على 10 نقاط - خلال كتابة هذه المقالة ، امتد هذا الحد إلى 20 عقدة) أو فترة تجريبية بقدرات كاملة لمدة شهر واحد.

كيف يعمل


لذلك ، الجزء الأكبر من Kubecost هو تطبيق نموذج التكلفة مكتوب في الذهاب. يُطلق على مخطط الدفة ، الذي يصف النظام بأكمله ، مُحلل التكلفة وهو عبارة عن تجميع نموذج التكلفة مع بروميثيوس وغرافانا والعديد من لوحات المعلومات.

بشكل عام ، نموذج التكلفة له واجهة الويب الخاصة به ، والتي تعرض الرسوم البيانية والإحصاءات التفصيلية حول التكاليف في شكل جدول ، وكذلك ، بالطبع ، نصائح حول تحسين التكاليف. تعد لوحات المعلومات المقدمة في Grafana مرحلة مبكرة من تطوير Kubecost وتحتوي على نفس البيانات مثل نموذج التكلفة ، مما يكملها بالإحصائيات المعتادة حول استهلاك مساحة وحدة المعالجة المركزية / الذاكرة / الشبكة / القرص في المجموعة ومكوناتها.

كيف يعمل Kubecost؟

  • نموذج التكلفة من خلال مقدمي الخدمات السحابية API يتلقى أسعار الخدمة.
  • علاوة على ذلك ، اعتمادًا على نوع العقدة الحديدية والمنطقة ، يتم اعتبار تكلفة العقد.
  • استنادًا إلى تكلفة عمل العقد ، يتلقى كل قرنة نهائية تكلفة الساعة الواحدة من استخدام المعالج ، وإنفاق غيغابايت من الذاكرة وتكلفة ساعة لتخزين غيغا بايت من البيانات - اعتمادًا على العقدة التي عملت عليها ، أو فئة التخزين.
  • بناءً على تكلفة عمل القرون الفردية ، يعتبر الدفع مقابل مساحات الأسماء والخدمات وعمليات النشر و StatefulSets.
  • لحساب الإحصائيات ، يتم استخدام المقاييس التي توفرها kube-state-metrics و node-source.

من المهم ملاحظة أن Kubecost لا يأخذ بعين الاعتبار الموارد المتاحة في Kubernetes بشكل افتراضي . قواعد البيانات الخارجية وخوادم GitLab ومستودعات S3 والخدمات الأخرى غير الموجودة في الكتلة (وإن كانت موجودة في نفس السحابة) غير مرئية لها. بالرغم من GCP و AWS ، يمكنك إضافة مفاتيح حسابات الخدمة الخاصة بك وحساب كل شيء معًا.

تركيب


لكي يعمل Kubecost ، تحتاج إلى:

  • Kubernetes الإصدار 1.8 وما فوق ؛
  • كوبي للدولة المقاييس.
  • بروميثيوس.
  • عقدة المصدر.

لقد حدث أن جميع هذه الشروط قد تم استيفائها في مجموعاتنا مسبقًا ، لذلك اتضح أنها كافية فقط لتحديد نقطة النهاية الصحيحة للوصول إلى بروميثيوس. ومع ذلك ، يحتوي الرسم البياني الرسمي kubecost Helm على كل ما تحتاجه للبدء في كتلة عارية.

هناك عدة طرق لتثبيت Kubecost:

  1. طريقة التثبيت القياسية الموضحة في الإرشادات الموجودة على موقع المطور ، تحتاج إلى إضافة مستودع محلل التكلفة إلى هيلم ، ثم تثبيت المخطط . يبقى فقط لإعادة توجيه المنفذ وإنهاء الإعدادات إلى الحالة المطلوبة يدويًا (عبر kubectl) و / أو باستخدام واجهة الويب الخاصة بنموذج التكلفة.

    لم نجرب هذه الطريقة ، لأننا لا نستخدم تكوينات جاهزة من جهة خارجية ، ومع ذلك يبدو أنه خيار جيد "حاول فقط لنفسك". إذا كان لديك بالفعل بعض مكونات النظام مثبتة أو تريد المزيد من الضبط ، فمن الأفضل مراعاة الطريقة الثانية.
  2. استخدم نفس المخطط بشكل أساسي ، ولكن قم بتكوينه وتثبيته بشكل مستقل بأي طريقة ملائمة.

    كما ذكرنا سابقًا ، بالإضافة إلى kubecost نفسها ، يحتوي هذا المخطط على مخططات Grafana و Prometheus ، والتي يمكن أيضًا تخصيصها حسب الرغبة.

    يتيح values.yaml الرسم البياني values.yaml التكلفة المتاحة على الرسم البياني تكوين:

    • قائمة مكونات تحليل التكلفة التي سيتم نشرها ؛
    • نقطة النهاية الخاصة بك لـ Prometheus (إذا كان لديك واحدة بالفعل) ؛
    • المجالات وإعدادات الدخول الأخرى لنموذج التكلفة و Grafana ؛
    • الشروح للقرون.
    • الحاجة إلى التخزين الدائم وحجمها.

    توجد قائمة كاملة بخيارات التكوين المتاحة مع الوصف في الوثائق .

    نظرًا لأن kubecost في الإصدار الأساسي غير قادر على تقييد الوصول ، فسوف تحتاج إلى تكوين المصادقة الأساسية فورًا للوحة الويب.
  3. تثبيت فقط جوهر النظام - نموذج التكلفة. للقيام بذلك ، يجب أن يكون لديك Prometheus مثبتة في الكتلة وتحديد القيمة المقابلة prometheusEndpoint متغير prometheusEndpoint لـ Helm. بعد ذلك ، قم بتطبيق مجموعة تكوينات 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 مع مجموعة من لوحات المعلومات.

توضح التكلفة الإجمالية المعروضة على الشاشة الرئيسية التكلفة المقدرة للموارد لهذا الشهر فعليًا. هذا هو السعر المتوقع الذي يعرض تكلفة استخدام الكتلة (كل شهر) عند المستوى الحالي لاستهلاك الموارد.

هذا المقياس أكثر لتحليل التكلفة وتحسينها. ليس من السهل مشاهدة التكاليف الإجمالية للتجريد في تموز (يوليو) في kubecost: سيتعين عليك دفع الفواتير لهذا الغرض. ولكن يمكنك أن ترى التكاليف موزعة حسب مساحات الأسماء والملصقات والقرون لمدة 1/2/7/30/90 يومًا ، والتي لن تظهر لك الفواتير أبدًا.



الحديث عن التسميات . يجب أن تذهب على الفور إلى الإعدادات وتعيين أسماء التسميات التي سيتم استخدامها كفئات إضافية لتجميع التكاليف:



يمكنك تعليق أي علامات عليها - إنها ملائمة إذا كان لديك بالفعل نظام التصنيف الخاص بك.

هناك يمكنك أيضًا تغيير عنوان واجهة برمجة التطبيقات لنقطة النهاية التي يتصل بها نموذج التكلفة ، وتكوين حجم الخصم في برنامج "شركاء Google المعتمدون" وتعيين الأسعار الخاصة بك للموارد والعملة لقياسها (لسبب ما ، لا تؤثر الميزة على التكلفة الإجمالية).

Kubecost يمكن أن تظهر المشاكل المختلفة في الكتلة (وحتى في حالة تأهب في حالة وجود خطر). لسوء الحظ ، لا يكون الخيار قابلاً للتكوين ، وبالتالي - إذا كان لديك بيئات مطورة وقد تم استخدامها ، فيمكنك دائمًا ملاحظة شيء من هذا القبيل:



أداة هامة هي التوفير العنقودي . إنه يقيس نشاط القرون (استهلاك الموارد ، بما في ذلك الشبكة) ، وينظر أيضًا في مقدار الأموال والمبلغ الذي يمكن توفيره.

قد يبدو أن نصائح التحسين واضحة إلى حد ما ، لكن التجربة تشير إلى أنه لا يزال هناك شيء يجب النظر إليه. على وجه الخصوص ، تتم مراقبة نشاط الشبكة من القرون (تقدم Kubecost الانتباه إلى تلك غير النشطة) ، تتم مقارنة استهلاك الذاكرة الفعلية والذاكرة الفعلية المطلوبة وال CPU ، بالإضافة إلى وحدة المعالجة المركزية المستخدمة من قبل العقد العنقودية (عروض لطي العقد المتعددة في واحدة) ، وتحميل القرص وعشرات المعلمات.

كما هو الحال مع أي مشكلة في التحسين ، يجب التعامل مع تحسين الموارد بناءً على بيانات Kubecost بحذر . على سبيل المثال ، تقترح Cluster Savings حذف العقد ، مدعيا أنها آمنة ، لكنها لا تأخذ في الاعتبار وجود محددات العقدة وفسادها في القرون التي تم نشرها عليها والتي ليست موجودة على العقد الأخرى. على أي حال ، حتى مؤلفي المنتج في مقالتهم الأخيرة (بالمناسبة ، يمكن أن يكونوا مفيدين للغاية لأولئك المهتمين بموضوع المشروع) يوصون بعدم التسرع في تحسين التكلفة ، ولكن التعامل مع المشكلة بعناية.

النتائج


بعد استخدام kubecost لمدة شهر على عدة مشاريع ، يمكننا أن نستنتج أن هذه أداة مثيرة للاهتمام (وحتى سهلة التعلم والتثبيت) لتحليل وتحسين تكاليف مزودي الخدمات السحابية المستخدمة في مجموعات Kubernetes. الحسابات دقيقة للغاية: في تجاربنا ، تزامنت مع ما يطلبه مقدمو الخدمة بالفعل.

ليس بدون عيوب: هناك أخطاء غير حرجة ، لا تغطي الوظيفة في الأماكن المتطلبات المحددة لبعض المشاريع. ومع ذلك ، إذا كنت بحاجة إلى أن تفهم بسرعة أين تذهب الأموال وما يمكنك "تخفيضه" من أجل تخفيض فاتورة الخدمات السحابية باستمرار بنسبة 5-30 ٪ (وهذا ما حدث في حالتنا) ، فهذا خيار ممتاز.

PS


اقرأ أيضًا في مدونتنا:

Source: https://habr.com/ru/post/ar466659/


All Articles