مراجعة Kubecost لتوفير المال على Kubernetes في السحابة

مراجعة Kubecost لتوفير المال على Kubernetes في السحابة

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

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

مقدمة

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

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

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

كيف يعمل كل شيء

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

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

كيف يعمل كوبيكوست؟

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

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

تركيب

يتطلب كوبيكوست:

  • إصدار Kubernetes 1.8 والإصدارات الأحدث؛
  • مقاييس حالة kube؛
  • بروميثيوس.
  • Node-exporter.

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

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

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

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

  2. استخدم بشكل أساسي نفس الرسم البيانيولكن قم بتكوينه وتثبيته بنفسك بأي طريقة مناسبة.

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

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

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

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

    نظرًا لأن kubecost في نسخته الأساسية لا يمكنه تقييد الوصول، فستحتاج إلى تكوين المصادقة الأساسية للوحة الويب على الفور.

  3. لتثبيت جوهر النظام فقط - نموذج التكلفة. للقيام بذلك، يجب أن يكون لديك Prometheus مثبتًا في المجموعة وأن تحدد القيمة المقابلة لعنوانه في المتغير prometheusEndpoint للخوذة. بعد ذلك - تقدم بطلب مجموعة من تكوينات YAML في الكتلة.

    مرة أخرى، سيتعين عليك إضافة Ingress يدويًا باستخدام المصادقة الأساسية. وأخيرًا، ستحتاج إلى إضافة قسم لجمع مقاييس نموذج التكلفة فيه 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) التي يتصل بها نموذج التكلفة، وضبط حجم الخصم في Google Cloud Platform وتعيين الأسعار الخاصة بك للموارد والعملة المستخدمة لقياسها (لسبب ما، لا تؤثر الميزة على التكلفة الإجمالية).

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

مراجعة Kubecost لتوفير المال على Kubernetes في السحابة

أداة مهمة - الادخار الجماعي. فهو يقيس نشاط القرون (استهلاك الموارد، بما في ذلك موارد الشبكة)، ويحسب أيضًا مقدار المال وما يمكنك توفيره.

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

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

نتائج

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

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

PS

اقرأ أيضًا على مدونتنا:

المصدر: www.habr.com

إضافة تعليق