Kubernetes-da bulutlarda pul tejash uchun Kubecost sharhi

Kubernetes-da bulutlarda pul tejash uchun Kubecost sharhi

Hozirgi vaqtda tobora ko'proq kompaniyalar o'zlarining infratuzilmalarini apparat serverlari va o'zlarining virtual mashinalaridan bulutga o'tkazmoqdalar. Ushbu yechimni tushuntirish oson: apparat haqida tashvishlanishning hojati yo'q, klaster osongina turli yo'llar bilan sozlangan... va eng muhimi, mavjud texnologiyalar (Kubernetes kabi) yukga qarab hisoblash quvvatini oddiygina o'lchash imkonini beradi. .

Moliyaviy jihat har doim muhim. Ushbu maqolada muhokama qilingan vosita Kubernetes bilan bulutli infratuzilmadan foydalanganda byudjetlarni kamaytirishga yordam berish uchun mo'ljallangan.

kirish

Kubecost — bulutli xizmatlarda (Kubernetes klasteri + umumiy resurslar ichida) infratuzilma xarajatlarini hisoblash, klaster sozlamalarida to‘siqlarni qidirish va Slack’ga tegishli bildirishnomalarni jo‘natish uchun yechim yaratuvchi Google kompaniyasining Kaliforniyalik startapi.

Bizda Kubernetes bilan tanish AWS va GCP bulutlarida ham, kamdan-kam hollarda Linux hamjamiyati uchun Azure - umuman Kubecost tomonidan qo'llab-quvvatlanadigan barcha platformalarda mijozlarimiz bor. Ulardan ba'zilari uchun biz klaster ichidagi xizmatlarning narxini o'zimiz hisoblaymiz (Kubecost tomonidan qo'llaniladigan usulga o'xshash usul yordamida), shuningdek, infratuzilma xarajatlarini kuzatib boramiz va ularni optimallashtirishga harakat qilamiz. Shuning uchun bizni bunday vazifalarni avtomatlashtirish imkoniyatlari qiziqtirganligi mantiqan to'g'ri.

Asosiy Kubecost modulining manba kodi Open Source litsenziyasi (Apache License 2.0) shartlariga muvofiq ochiq. Undan erkin foydalanish mumkin va mavjud xususiyatlar kichik loyihalar uchun etarli bo'lishi kerak. Biroq, biznes biznesdir: mahsulotning qolgan qismi yopiq, uni ishlatishi mumkin pullik obunalar, bu ham tijorat yordamini nazarda tutadi. Bundan tashqari, mualliflar kichik klasterlar uchun bepul litsenziyani (1 ta tugunli 10 klaster - ushbu maqolani yozish paytida ushbu chegara 20 ta tugungacha kengaytirildi) yoki 1 oy davomida to'liq imkoniyatlarga ega sinov muddatini taklif qilishadi.

Hammasi qanday ishlaydi

Shunday qilib, Kubecostning asosiy qismi dastur hisoblanadi xarajat modeli, Go da yozilgan. Butun tizimni tavsiflovchi Helm diagrammasi deyiladi xarajat tahlilchisi va uning negizida Prometey, Grafana va bir nechta asboblar panellari bilan xarajat modelidan yig'ilish mavjud.

Umuman olganda, xarajat modeli o'zining veb-interfeysiga ega bo'lib, unda jadval ko'rinishida xarajatlar bo'yicha grafiklar va batafsil statistik ma'lumotlar, shuningdek, xarajatlarni optimallashtirish bo'yicha maslahatlar mavjud. Grafana-da taqdim etilgan asboblar paneli Kubecost-ning rivojlanishining oldingi bosqichi bo'lib, ular klaster va uning tarkibiy qismlarida protsessor/xotira/tarmoq/disk maydonini iste'mol qilish bo'yicha odatiy statistik ma'lumotlar bilan to'ldiruvchi xarajat modeli bilan deyarli bir xil ma'lumotlarni o'z ichiga oladi. .

Kubecost qanday ishlaydi?

  • Xarajat modeli xizmatlar narxlarini bulutli provayderlar API orqali oladi.
  • Bundan tashqari, tugunning temir turiga va mintaqaga qarab, har bir tugunning narxi hisoblab chiqiladi.
  • Ishlayotgan tugunlar narxiga asoslanib, har bir barg podasi ishlayotgan tugunga yoki saqlash sinfiga qarab CPU foydalanish soatiga, iste'mol qilingan xotira uchun bir gigabaytga va saqlangan ma'lumotlarning bir gigabayti uchun soatiga narx oladi.
  • Alohida podlarni ishlatish narxidan kelib chiqqan holda, to'lov nomlar bo'shliqlari, xizmatlar, Deployments, StatefulSets uchun hisoblanadi.
  • Statistikalar kube-state-metrics va node-exporter tomonidan taqdim etilgan ko'rsatkichlar yordamida hisoblanadi.

Kubecostni hisobga olish muhimdir sukut bo'yicha faqat Kubernetesda mavjud resurslarni hisoblaydi. Tashqi ma'lumotlar bazalari, GitLab serverlari, S3 omborlari va klasterda bo'lmagan boshqa xizmatlar (hatto bir xil bulutda joylashgan bo'lsa ham) unga ko'rinmaydi. Garchi GCP va AWS uchun siz xizmat hisoblaringiz kalitlarini qo'shishingiz va hamma narsani birgalikda hisoblashingiz mumkin.

sozlama

Kubecost quyidagilarni talab qiladi:

  • Kubernetes versiyasi 1.8 va undan yuqori;
  • kube-state ko'rsatkichlari;
  • Prometey;
  • tugun eksportchisi.

Shunday qilib, bizning klasterlarimizda ushbu shartlarning barchasi oldindan bajarilgan, shuning uchun Prometeyga kirish uchun to'g'ri so'nggi nuqtani ko'rsatish kifoya edi. Biroq, rasmiy kubecost Helm diagrammasi yalang'och klasterda ishlash uchun kerak bo'lgan hamma narsani o'z ichiga oladi.

Kubecostni o'rnatishning bir necha yo'li mavjud:

  1. Standart o'rnatish usuli bo'limda tasvirlangan ko'rsatmalar ishlab chiqaruvchining veb-saytida. Majburiy Helm-ga xarajat tahlilchisi omborini qo'shing va keyin diagrammani o'rnating. Qolgan narsa portingizni yo'naltirish va sozlamalarni kerakli holatga qo'lda (kubectl orqali) va/yoki xarajat modelidagi veb-interfeysdan foydalanib sozlashdir.

    Biz bu usulni hatto sinab ko'rmadik, chunki biz uchinchi tomonning tayyor konfiguratsiyasidan foydalanmaymiz, lekin bu "o'zingiz uchun sinab ko'ring" yaxshi variantga o'xshaydi. Agar sizda allaqachon tizim komponentlari o'rnatilgan bo'lsa yoki siz ko'proq nozik sozlashni xohlasangiz, ikkinchi yo'lni ko'rib chiqish yaxshiroqdir.

  2. Asosan foydalaning bir xil diagramma, lekin uni o'zingiz sozlang va o'rnating har qanday qulay usulda.

    Yuqorida aytib o'tilganidek, kubecostning o'ziga qo'shimcha ravishda, ushbu diagrammada Grafana va Prometey diagrammalari mavjud bo'lib, ularni xohlagancha sozlash mumkin.

    Diagrammada mavjud values.yaml xarajat tahlilchisi uchun quyidagilarni sozlash imkonini beradi:

    • joylashtirilishi kerak bo'lgan xarajatlarni tahlil qiluvchi komponentlar ro'yxati;
    • Prometey uchun so'nggi nuqtangiz (agar sizda allaqachon mavjud bo'lsa);
    • xarajatlar modeli va Grafana uchun domenlar va boshqa kirish sozlamalari;
    • podalar uchun izohlar;
    • doimiy saqlashdan foydalanish zarurati va uning hajmi.

    Mavjud konfiguratsiya opsiyalarining to'liq ro'yxati tavsiflari bilan mavjud hujjatlar.

    Kubokost o'zining asosiy versiyasida kirishni cheklay olmagani uchun siz darhol veb-panel uchun asosiy autentifikatsiyani sozlashingiz kerak bo'ladi.

  3. O'rnatish faqat tizim yadrosi - xarajat modeli. Buning uchun klasterda Prometey o'rnatilgan bo'lishi kerak va o'zgaruvchida uning manzilining tegishli qiymatini ko'rsatish kerak. prometheusEndpoint Helm uchun. Shundan so'ng - murojaat qiling YAML konfiguratsiyalar to'plami klasterda.

    Shunga qaramay, siz asosiy auth bilan Ingressni qo'lda qo'shishingiz kerak bo'ladi. Nihoyat, siz xarajat modeli ko'rsatkichlarini to'plash uchun bo'limni qo'shishingiz kerak bo'ladi extraScrapeConfigs Prometey konfiguratsiyasida:

    - 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

Biz nima olamiz?

To'liq o'rnatish bilan bizning ixtiyorimizda kubecost va Grafana veb-paneli asboblar paneli to'plami mavjud.

Umumiy xarajat, asosiy ekranda ko'rsatilgan, aslida oy uchun resurslarning taxminiy narxini ko'rsatadi. Bu prognoz qilingan resurs iste'molining joriy darajasida klasterdan foydalanish narxini (oyiga) aks ettiruvchi narx.

Ushbu ko'rsatkich ko'proq xarajatlarni tahlil qilish va ularni optimallashtirish uchun mo'ljallangan. Kubekostda mavhum iyul uchun jami xarajatlarni ko'rib chiqish juda qulay emas: buni qilishingiz kerak bo'ladi hisob-kitobga o'ting. Lekin 1/2/7/30/90 kun uchun nomlar boʻshliqlari, yorliqlar, podlar boʻyicha ajratilgan xarajatlarni koʻrishingiz mumkin, bu esa hisob-kitob sizga hech qachon koʻrsatilmaydi.

Kubernetes-da bulutlarda pul tejash uchun Kubecost sharhi

haqida gapirganda yorliqlar. Siz darhol sozlamalarga o'tishingiz va xarajatlarni guruhlash uchun qo'shimcha toifalar sifatida ishlatiladigan teglar nomlarini belgilashingiz kerak:

Kubernetes-da bulutlarda pul tejash uchun Kubecost sharhi

Ularga har qanday yorliqlarni osib qo'yishingiz mumkin - agar sizda allaqachon o'zingizning etiketlash tizimingiz bo'lsa, qulay.

Shuningdek, u erda siz xarajat modeli ulanadigan API so'nggi nuqtasi manzilini o'zgartirishingiz, GCP-da chegirma hajmini o'zgartirishingiz va ularni o'lchash uchun resurslar va valyuta uchun o'zingizning narxlaringizni belgilashingiz mumkin (ba'zi sabablarga ko'ra bu xususiyat umumiy narxga ta'sir qilmaydi).

Kubecost har xil ko'rsatishi mumkin klasterdagi muammolar (va hatto xavf tug'ilganda ogohlantirish). Afsuski, variantni sozlash mumkin emas va shuning uchun agar sizda ishlab chiquvchilar uchun muhit mavjud bo'lsa va ulardan foydalansangiz, siz doimo shunday narsalarni ko'rasiz:

Kubernetes-da bulutlarda pul tejash uchun Kubecost sharhi

Muhim vosita - Klaster tejash. U podkastlarning faolligini (resurslar, shu jumladan tarmoqni iste'mol qilish) o'lchaydi, shuningdek, qancha pul va nimani tejash mumkinligini hisoblab chiqadi.

Optimallashtirish bo'yicha maslahatlar juda aniq bo'lib tuyulishi mumkin, ammo tajriba shuni ko'rsatadiki, hali ham ko'rib chiqilishi kerak bo'lgan narsa bor. Xususan, podkastlarning tarmoq faolligi nazorat qilinadi (Kubecost faol bo'lmaganlarga e'tibor berishni taklif qiladi), so'ralgan va haqiqiy xotira va protsessor iste'moli, shuningdek, klaster tugunlari tomonidan ishlatiladigan protsessor (bir nechta tugunlarni bittaga yig'ishni taklif qiladi), disk yuk va yana bir necha o'nlab parametrlar.

Har qanday optimallashtirish masalasida bo'lgani kabi, Kubecost ma'lumotlari asosida resurslarni optimallashtirish quyidagilarni talab qiladi: ehtiyotkorlik bilan muomala qiling. Misol uchun, Cluster Savings tugunlarni o'chirishni taklif qiladi, bu xavfsiz ekanligini da'vo qiladi, lekin ularda o'rnatilgan bo'laklarda boshqa tugunlarda mavjud bo'lmagan tugun selektorlari va qoralanganlar mavjudligini hisobga olmaydi. Va umuman olganda, hatto mahsulot mualliflari ham o'zlarida so'nggi maqola (Aytgancha, bu loyiha mavzusiga qiziquvchilar uchun juda foydali bo'lishi mumkin) xarajatlarni optimallashtirishga shoshilmaslik, balki masalaga o'ylangan holda yondashish tavsiya etiladi.

natijalar

Bir oy davomida kubecost-dan bir nechta loyihalarda foydalangandan so'ng, biz bu Kubernetes klasterlari uchun ishlatiladigan bulutli provayderlarning xizmatlari uchun xarajatlarni tahlil qilish va optimallashtirish uchun qiziqarli (shuningdek, o'rganish va o'rnatish oson) vosita degan xulosaga kelishimiz mumkin. Hisob-kitoblar juda aniq bo'lib chiqdi: bizning tajribalarimizda ular provayderlar talab qilgan narsaga to'g'ri keldi.

Ba'zi salbiy tomonlari ham bor: muhim bo'lmagan xatolar mavjud va ba'zi joylarda funksionallik ba'zi loyihalarga xos bo'lgan ehtiyojlarni qoplamaydi. Biroq, agar siz bulutli xizmatlar uchun to'lovni doimiy ravishda 5-30% ga kamaytirish uchun pul qayerga ketayotganini va nimani "kesish" mumkinligini tezda tushunishingiz kerak bo'lsa (bizning holatlarimizda shunday bo'ldi), bu juda yaxshi variant. .

PS

Shuningdek, bizning blogimizda o'qing:

Manba: www.habr.com

a Izoh qo'shish