„Kubecost“ apžvalga, skirta sutaupyti pinigų „Kubernetes“ debesyse

„Kubecost“ apžvalga, skirta sutaupyti pinigų „Kubernetes“ debesyse

Šiuo metu vis daugiau įmonių perkelia savo infrastruktūrą iš techninės įrangos serverių ir savo virtualių mašinų į debesį. Šį sprendimą lengva paaiškinti: nereikia jaudintis dėl techninės įrangos, klasteris lengvai konfigūruojamas įvairiais būdais... o svarbiausia, kad esamos technologijos (pvz., Kubernetes) leidžia tiesiog padidinti skaičiavimo galią priklausomai nuo apkrovos. .

Visada svarbus finansinis aspektas. Šiame straipsnyje aptariamas įrankis skirtas padėti sumažinti biudžetą naudojant debesies infrastruktūrą su Kubernetes.

įvedimas

Kubecost yra Kalifornijos startuolis iš Google, kuriantis sprendimą, kaip apskaičiuoti infrastruktūros kaštus debesų paslaugose (Kubernetes klasteryje + bendrinami ištekliai), ieškant klasterio nustatymų kliūčių ir siunčiant atitinkamus pranešimus Slack.

Turime klientų su Kubernetes tiek žinomuose AWS ir GCP debesyse, tiek rečiau „Linux“ bendruomenei „Azure“ – apskritai visose Kubecost palaikomose platformose. Kai kuriems iš jų patys skaičiuojame klasterio vidinių paslaugų kaštus (panašiu į Kubecost naudojamą metodą), taip pat stebime infrastruktūros kaštus ir stengiamės jas optimizuoti. Todėl logiška, kad mus domino tokių užduočių automatizavimo galimybė.

Pagrindinio Kubecost modulio šaltinio kodas yra atviras pagal atvirojo kodo licencijos sąlygas (Apache License 2.0). Jis gali būti naudojamas laisvai, o turimų funkcijų turėtų pakakti mažiems projektams. Tačiau verslas yra verslas: likusi produkto dalis uždaryta, ja gali naudotis mokamų abonementų, o tai taip pat reiškia komercinę paramą. Be to, autoriai siūlo nemokamą licenciją mažiems klasteriams (1 klasteris su 10 mazgų – rašant šį straipsnį šis limitas išsiplėtė iki 20 mazgų) arba bandomąjį laikotarpį su visomis galimybėmis 1 mėnesiui.

Kaip visa tai veikia

Taigi, pagrindinė Kubecost dalis yra programa išlaidų modelis, parašyta eiti. Vadinama vairo diagrama, apibūdinanti visą sistemą išlaidų analizatorius o jo esmė yra sąnaudų modelio mazgas su Prometheus, Grafana ir keletu prietaisų skydelių.

Paprastai tariant, sąnaudų modelis turi savo žiniatinklio sąsają, kurioje lentelės pavidalu rodomi grafikai ir išsami išlaidų statistika, taip pat, žinoma, patarimai, kaip optimizuoti išlaidas. Grafana pateiktos prietaisų skydeliai yra ankstesnis Kubecost kūrimo etapas ir juose yra beveik tokie patys duomenys kaip ir sąnaudų modelyje, papildant juos įprasta procesoriaus / atminties / tinklo / disko vietos klasteryje ir jo komponentų sunaudojimo statistika. .

Kaip veikia Kubecost?

  • Kainų modelis gauna paslaugų kainas per debesų tiekėjų API.
  • Be to, priklausomai nuo mazgo geležies tipo ir regiono, apskaičiuojama mazgo kaina.
  • Remiantis mazgų eksploatavimo sąnaudomis, kiekvienas lapų blokas gauna mokestį už procesoriaus naudojimo valandą, sunaudotą atminties gigabaitą ir valandą už saugomų duomenų gigabaitą – priklausomai nuo mazgo, kuriame jis veikė, arba saugyklos klasę.
  • Remiantis atskirų blokų eksploatavimo sąnaudomis, mokėjimas apskaičiuojamas už vardų sritis, paslaugas, diegimus, „StatefulSets“.
  • Statistika apskaičiuojama naudojant kube-state-metrics ir mazgo eksportuotojo pateiktą metriką.

Svarbu atsižvelgti į tai, kad Kubecost pagal numatytuosius nustatymus skaičiuoja tik „Kubernetes“ turimus išteklius. Išorinės duomenų bazės, „GitLab“ serveriai, S3 saugyklos ir kitos paslaugos, kurios nėra klasteryje (net jei yra tame pačiame debesyje), jam nėra matomos. Nors GCP ir AWS galite pridėti savo paslaugų paskyrų raktus ir viską apskaičiuoti kartu.

Montavimas

Kubecost reikalauja:

  • Kubernetes 1.8 ir naujesnė versija;
  • kubo būsenos metrika;
  • Prometėjas;
  • mazgas-eksportuotojas.

Taip atsitiko, kad mūsų klasteriuose visos šios sąlygos buvo įvykdytos iš anksto, todėl paaiškėjo, kad užteko tik nurodyti teisingą prieigos prie Prometheus galinį tašką. Tačiau oficialioje kubecost Helm diagramoje yra viskas, ko reikia, kad galėtumėte dirbti tuščioje grupėje.

Yra keli „Kubecost“ diegimo būdai:

  1. Standartinis montavimo būdas aprašytas instrukcijos kūrėjo svetainėje. Būtina pridėkite sąnaudų analizatoriaus saugyklą prie Helm, tada įdiekite diagramą. Belieka persiųsti savo prievadą ir sureguliuoti nustatymus į norimą būseną rankiniu būdu (per kubectl) ir (arba) naudojant sąnaudų modelio žiniatinklio sąsają.

    Mes net nebandėme šio metodo, nes nenaudojame trečiųjų šalių paruoštų konfigūracijų, tačiau atrodo, kad tai geras pasirinkimas „tiesiog išbandykite patys“. Jei jau įdiegėte kai kuriuos sistemos komponentus arba norite daugiau sureguliuoti, geriau apsvarstyti antrąjį kelią.

  2. Naudokite iš esmės ta pati diagrama, bet konfigūruokite ir įdiekite patys bet kokiu patogiu būdu.

    Kaip jau minėta, be paties kubecost, šioje diagramoje yra Grafana ir Prometheus diagramos, kurias taip pat galima pritaikyti pagal pageidavimą.

    Galimas diagramoje values.yaml išlaidų analizatoriui leidžia konfigūruoti:

    • sąnaudų analizatoriaus komponentų, kuriuos reikia įdiegti, sąrašas;
    • jūsų Prometheus galutinis taškas (jei tokį jau turite);
    • domenai ir kiti sąnaudų modelio ir „Grafana“ įvesties nustatymai;
    • anotacijų anotacijos;
    • nuolatinės saugyklos naudojimo poreikis ir jos dydis.

    Visą galimų konfigūravimo parinkčių sąrašą su aprašymais rasite dokumentacija.

    Kadangi kubecost pagrindinėje versijoje negali apriboti prieigos, turėsite nedelsdami sukonfigūruoti pagrindinį žiniatinklio skydelio autentifikavimą.

  3. Įdiekite tik sistemos branduolys - išlaidų modelis. Norėdami tai padaryti, klasteryje turite įdiegti „Prometheus“ ir kintamajame nurodyti atitinkamą jo adreso reikšmę. prometheusEndpoint už Helmą. Po to – kreiptis YAML konfigūracijų rinkinys klasteryje.

    Vėlgi, turėsite rankiniu būdu pridėti Ingress su basic-auth. Galiausiai turėsite pridėti skyrių, skirtą mokesčių modelio metrikai rinkti extraScrapeConfigs „Prometheus“ konfigūracijoje:

    - 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

Ką mes gauname?

Visiškai įdiegę turime kubecost ir Grafana interneto skydelį su prietaisų skydelių rinkiniu.

Iš viso išlaidų, rodomas pagrindiniame ekrane, faktiškai rodo numatomas mėnesio išteklių išlaidas. Tai prognozuojama kaina, atspindinti klasterio naudojimo kaštus (per mėnesį) esant esamam išteklių suvartojimo lygiui.

Ši metrika labiau skirta išlaidoms analizuoti ir jas optimizuoti. Nelabai patogu žiūrėti į bendras abstrakčios liepos mėnesio išlaidas kubecost: turėsite eiti į atsiskaitymą. Tačiau galite matyti išlaidas, suskirstytas pagal vardų sritis, etiketes, 1/2/7/30/90 dienų, kurių atsiskaitymas jums niekada neparodys.

„Kubecost“ apžvalga, skirta sutaupyti pinigų „Kubernetes“ debesyse

Kalbant apie etiketės. Turėtumėte nedelsdami eiti į nustatymus ir nustatyti etikečių pavadinimus, kurie bus naudojami kaip papildomos išlaidų grupavimo kategorijos:

„Kubecost“ apžvalga, skirta sutaupyti pinigų „Kubernetes“ debesyse

Ant jų galite kabinti bet kokias etiketes – patogu, jei jau turite savo ženklinimo sistemą.

Taip pat čia galite pakeisti API galutinio taško, prie kurio jungiasi išlaidų modelis, adresą, koreguoti nuolaidos dydį GCP ir nustatyti savo išteklių kainas bei valiutą jų matavimui (dėl tam tikrų priežasčių ši funkcija neturi įtakos bendrai kainai).

Kubecost gali rodyti įvairius klasterio problemos (ir net įspėti iškilus pavojui). Deja, parinktis nėra konfigūruojama, todėl, jei turite kūrėjų aplinkas ir jas naudojate, nuolat matysite kažką panašaus:

„Kubecost“ apžvalga, skirta sutaupyti pinigų „Kubernetes“ debesyse

Svarbi priemonė - Klasterio taupymas. Jis matuoja ankšties aktyvumą (resursų, įskaitant tinklo, suvartojimą), taip pat apskaičiuoja, kiek pinigų ir ką galite sutaupyti.

Gali atrodyti, kad optimizavimo patarimai yra gana akivaizdūs, tačiau patirtis rodo, kad dar yra į ką pažvelgti. Visų pirma stebimas podų tinklo aktyvumas (Kubecost siūlo atkreipti dėmesį į neaktyvius), lyginamas prašomas ir faktinis atminties ir procesoriaus suvartojimas, taip pat klasterio mazgų naudojamas CPU (siūloma sutraukti kelis mazgus į vieną), diskas. apkrova ir dar pora dešimčių parametrų.

Kaip ir bet kuriai optimizavimo problemai, norint optimizuoti išteklius pagal Kubecost duomenis reikia: gydyti atsargiai. Pavyzdžiui, „Cluster Savings“ siūlo ištrinti mazgus, teigdama, kad tai saugu, tačiau neatsižvelgiama į mazgų parinkiklius ir nešvarumus juose įrengtuose blokuose, kurių nėra kituose mazguose. Ir apskritai, net produkto autoriai savo naujausias straipsnis (beje, gali labai praversti besidomintiems projekto tema) rekomenduojama stačia galva neskubėti į kaštų optimizavimą, o į klausimą žiūrėti apgalvotai.

rezultatai

Mėnesį panaudoję kubecost keliems projektams galime daryti išvadą, kad tai įdomus (taip pat lengvai išmokstamas ir įdiegiamas) įrankis, skirtas Kubernetes klasteriams naudojamų debesų tiekėjų paslaugų sąnaudoms analizuoti ir optimizuoti. Skaičiavimai pasirodė labai tikslūs: mūsų eksperimentuose jie sutapo su tuo, ko teikėjai iš tikrųjų reikalavo.

Taip pat yra keletas minusų: yra nekritinių klaidų, o kai kuriose vietose funkcionalumas nepatenkina kai kuriems projektams būdingų poreikių. Tačiau jei reikia greitai suprasti, kur keliauja pinigai ir ką galima „apkarpyti“, kad sąskaita už debesies paslaugas nuosekliai mažėtų 5-30% (taip atsitiko mūsų atveju), tai puikus pasirinkimas .

PS

Taip pat skaitykite mūsų tinklaraštyje:

Šaltinis: www.habr.com

Добавить комментарий