Kubecost apskats par naudas taupÄ«Å”anu Kubernetes mākoņos

Kubecost apskats par naudas taupÄ«Å”anu Kubernetes mākoņos

PaÅ”laik arvien vairāk uzņēmumu pārceļ savu infrastruktÅ«ru no aparatÅ«ras serveriem un savām virtuālajām maŔīnām uz mākoni. Å o risinājumu ir viegli izskaidrot: nav jāuztraucas par aparatÅ«ru, klasteris ir viegli konfigurējams dažādos veidos... un pats galvenais, esoŔās tehnoloÄ£ijas (piemēram, Kubernetes) ļauj vienkārÅ”i mērogot skaitļoÅ”anas jaudu atkarÄ«bā no slodzes .

Finansiālais aspekts vienmēr ir svarīgs. Šajā rakstā apskatītais rīks ir paredzēts, lai palīdzētu samazināt budžetu, izmantojot mākoņa infrastruktūru ar Kubernetes.

Ievads

Kubecost ir Kalifornijas startup no Google, kas rada risinājumu infrastruktÅ«ras izmaksu aprēķināŔanai mākoņpakalpojumos (Kubernetes klastera ietvaros + koplietotie resursi), meklē vājās vietas klastera iestatÄ«jumos un nosÅ«ta atbilstoÅ”us paziņojumus Slack.

Mums ir klienti ar Kubernetes gan pazÄ«stamajos AWS un GCP mākoņos, gan, retāk Linux kopienai, Azure ā€” kopumā visās Kubecost atbalstÄ«tajās platformās. Dažiem no tiem mēs paÅ”i aprēķinām klastera iekŔējo pakalpojumu izmaksas (izmantojot metodi, kas ir lÄ«dzÄ«ga Kubecost izmantotajai), kā arÄ« uzraugām infrastruktÅ«ras izmaksas un cenÅ”amies tās optimizēt. Tāpēc ir loÄ£iski, ka mÅ«s interesēja iespēja automatizēt Ŕādus uzdevumus.

Galvenā Kubecost moduļa pirmkods ir atvērts saskaņā ar atvērtā pirmkoda licences noteikumiem (Apache License 2.0). To var brÄ«vi izmantot, un pieejamajām funkcijām vajadzētu bÅ«t pietiekamām maziem projektiem. Tomēr bizness ir bizness: pārējais produkts ir slēgts, to var izmantot maksas abonementi, kas nozÄ«mē arÄ« komerciālu atbalstu. Turklāt autori piedāvā bezmaksas licenci maziem klasteriem (1 klasteris ar 10 mezgliem ā€“ Ŕī raksta tapÅ”anas laikā Å”is limits ir paplaÅ”inājies lÄ«dz 20 mezgliem) vai izmēģinājuma periodu ar pilnām iespējām uz 1 mēnesi.

Kā tas viss darbojas

Tātad galvenā Kubecost daļa ir lietojumprogramma izmaksu modelis, rakstīts Go. Tiek izsaukta stūres diagramma, kas apraksta visu sistēmu izmaksu analizators un tās pamatā ir komplekts no izmaksu modeļa ar Prometheus, Grafana un vairākiem informācijas paneļiem.

VispārÄ«gi runājot, izmaksu modelim ir savs tÄ«mekļa interfeiss, kas parāda grafikus un detalizētu izmaksu statistiku tabulas veidā, kā arÄ«, protams, padomus izmaksu optimizÄ“Å”anai. Grafana piedāvātie informācijas paneļi ir agrāks Kubecost izstrādes posms un satur gandrÄ«z tādus paÅ”us datus kā izmaksu modelis, papildinot tos ar parasto statistiku par CPU/atmiņas/tÄ«kla/diska vietas patēriņu klasterÄ« un tā komponentos. .

Kā Kubecost darbojas?

  • Izmaksu modelis saņem cenas par pakalpojumiem, izmantojot mākoņa pakalpojumu sniedzēju API.
  • Turklāt, atkarÄ«bā no mezgla dzelzs veida un reÄ£iona, tiek aprēķināta viena mezgla izmaksas.
  • Pamatojoties uz mezglu ekspluatācijas izmaksām, katra lapu pods saņem maksu par CPU izmantoÅ”anas stundu, par patērētās atmiņas gigabaitu un par stundu par vienu gigabaitu saglabāto datu ā€” atkarÄ«bā no mezgla, kurā tas darbojās, vai krātuves klases.
  • Pamatojoties uz atseviŔķu podziņu darbÄ«bas izmaksām, maksājums tiek aprēķināts par nosaukumvietām, pakalpojumiem, izvietoÅ”anu, StatefulSets.
  • Statistika tiek aprēķināta, izmantojot metriku, ko nodroÅ”ina kube-state-metrics un node-exporter.

Ir svarÄ«gi ņemt vērā, ka Kubecost pēc noklusējuma uzskaita tikai Kubernetes pieejamos resursus. Ārējās datu bāzes, GitLab serveri, S3 krātuves un citi pakalpojumi, kas neatrodas klasterÄ« (pat ja atrodas tajā paŔā mākonÄ«), tam nav redzami. Lai gan GCP un AWS varat pievienot savu pakalpojumu kontu atslēgas un aprēķināt visu kopā.

UzstādīŔana

Kubecost pieprasa:

  • Kubernetes versija 1.8 un jaunāka;
  • kube-state-metrics;
  • Prometejs;
  • mezglu eksportētājs.

Tā notika, ka mÅ«su klasteros visi Å”ie nosacÄ«jumi tika izpildÄ«ti iepriekÅ”, tāpēc izrādÄ«jās, ka pietika tikai norādÄ«t pareizo galapunktu piekļuvei Prometheus. Tomēr oficiālajā kubecost Helm diagrammā ir viss nepiecieÅ”amais, lai darbotos tukŔā klasterÄ«.

Ir vairāki veidi, kā instalēt Kubecost:

  1. Standarta uzstādÄ«Å”anas metode, kas aprakstÄ«ta instrukcijas izstrādātāja vietnē. Obligāti pievienojiet izmaksu analizatora repozitoriju Helm un pēc tam instalējiet diagrammu. Atliek tikai pārsÅ«tÄ«t savu portu un pielāgot iestatÄ«jumus vajadzÄ«gajam stāvoklim manuāli (izmantojot kubectl) un/vai izmantojot izmaksu modeļa tÄ«mekļa saskarni.

    Mēs pat neesam izmēģinājuÅ”i Å”o metodi, jo neizmantojam treŔās puses gatavas konfigurācijas, taču tā izskatās kā laba iespēja ā€œizmēģini patsā€. Ja jums jau ir instalēti daži sistēmas komponenti vai vēlaties precÄ«zāk pielāgot, labāk ir apsvērt otro ceļu.

  2. Izmantojiet būtībā tā pati diagramma, bet konfigurējiet un instalējiet to pats jebkurā ērtā veidā.

    Kā jau minēts, Å”ajā diagrammā papildus paÅ”am kubecost ir Grafana un Prometheus diagrammas, kuras arÄ« var pielāgot pēc vēlÄ“Å”anās.

    Pieejams diagrammā values.yaml izmaksu analizatoram ļauj konfigurēt:

    • izmaksu analizatora komponentu saraksts, kas jāizvieto;
    • jÅ«su Prometheus galapunkts (ja jums tāds jau ir);
    • domēni un citi ieejas iestatÄ«jumi izmaksu modelim un Grafana;
    • anotācijas pākstÄ«m;
    • nepiecieÅ”amÄ«ba izmantot pastāvÄ«gu krātuvi un tās lielums.

    Pilns pieejamo konfigurācijas opciju saraksts ar aprakstiem ir pieejams dokumentācija.

    Tā kā kubecost tās pamata versijā nevar ierobežot piekļuvi, jums nekavējoties būs jākonfigurē tīmekļa paneļa pamata autentifikācija.

  3. Instalēt tikai sistēmas kodols - izmaksu modelis. Lai to izdarÄ«tu, klasterÄ« ir jābÅ«t instalētam Prometheus un mainÄ«gajā jānorāda atbilstoŔā tā adreses vērtÄ«ba. prometheusEndpoint par Helmu. Pēc tam - pieteikties YAML konfigurāciju komplekts klasterÄ«.

    Atkal jums būs manuāli jāpievieno Ingress ar pamata autentifikāciju. Visbeidzot, jums būs jāpievieno sadaļa izmaksu modeļa metrikas apkopoŔanai extraScrapeConfigs Prometheus konfigurācijā:

    - 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

Ko mēs iegūstam?

Ar pilnu uzstādīŔanu mūsu rīcībā ir kubecost un Grafana tīmekļa panelis ar informācijas paneļu komplektu.

Kopējās izmaksas, kas tiek parādÄ«ts galvenajā ekrānā, faktiski parāda aptuvenās mēneÅ”a resursu izmaksas. Å is prognozēts cena, kas atspoguļo klastera lietoÅ”anas izmaksas (mēnesÄ«) paÅ”reizējā resursu patēriņa lÄ«menÄ«.

Å is rādÄ«tājs ir vairāk paredzēts izdevumu analÄ«zei un to optimizÄ“Å”anai. Nav Ä«paÅ”i ērti aplÅ«kot abstraktā jÅ«lija kopējās izmaksas kubecost: jums bÅ«s doties uz norēķiniem. Taču varat skatÄ«t izmaksas, kas sadalÄ«tas pēc nosaukumvietām, etiÄ·etēm, aplikumiem 1/2/7/30/90 dienām, kuras nekad neparādÄ«s norēķinos.

Kubecost apskats par naudas taupÄ«Å”anu Kubernetes mākoņos

Runājot par etiÄ·etes. Jums nekavējoties jāiet uz iestatÄ«jumiem un jāiestata etiÄ·eÅ”u nosaukumi, kas tiks izmantoti kā papildu kategorijas izmaksu grupÄ“Å”anai:

Kubecost apskats par naudas taupÄ«Å”anu Kubernetes mākoņos

Uz tām var piekārt jebkuras etiÄ·etes ā€“ ērti, ja jau ir sava marÄ·Ä“Å”anas sistēma.

ArÄ« tur varat mainÄ«t API galapunkta adresi, ar kuru pieslēdzas izmaksu modelis, pielāgot atlaides lielumu GCP un iestatÄ«t savas cenas resursiem un valÅ«tu to mērÄ«Å”anai (kādu iemeslu dēļ funkcija neietekmē kopējās izmaksas).

Kubecost var parādÄ«t dažādus problēmas klasterÄ« (un pat brÄ«dināt briesmu gadÄ«jumā). Diemžēl Ŕī opcija nav konfigurējama, un tāpēc, ja jums ir izstrādātāju vide un tās izmantojat, jÅ«s pastāvÄ«gi redzēsit kaut ko lÄ«dzÄ«gu:

Kubecost apskats par naudas taupÄ«Å”anu Kubernetes mākoņos

Svarīgs instruments - Klasteru ietaupījumi. Tas mēra podiņu aktivitāti (resursu, tostarp tīkla, patēriņu), kā arī aprēķina, cik daudz naudas un uz ko jūs varat ietaupīt.

Var Ŕķist, ka optimizācijas padomi ir diezgan paÅ”saprotami, taču pieredze liecina, ka joprojām ir ko apskatÄ«t. Jo Ä«paÅ”i tiek uzraudzÄ«ta podiņu tÄ«kla aktivitāte (Kubecost iesaka pievērst uzmanÄ«bu neaktÄ«vajiem), tiek salÄ«dzināts pieprasÄ«tais un faktiskais atmiņas un CPU patēriņŔ, kā arÄ« klastera mezglu izmantotais CPU (ieteicams sabrukt vairākus mezglus vienā), disks. slodze un vēl pāris desmiti parametru.

Tāpat kā ar jebkuru optimizācijas problēmu, resursu optimizÄ“Å”anai, pamatojoties uz Kubecost datiem, ir nepiecieÅ”ams: izturēties piesardzÄ«gi. Piemēram, Cluster Savings iesaka dzēst mezglus, apgalvojot, ka tas ir droÅ”i, bet neņem vērā mezglu selektoru un piesārņojumu klātbÅ«tni tajos izvietotajos blokos, kas nav pieejami citos mezglos. Un vispār pat produkta autori savā nesenais raksts (starp citu, var ļoti noderēt tiem, kurus interesē projekta tēma) ieteicams nesteidzÄ«gi steigties ar izmaksu optimizāciju, bet jautājumam pieiet pārdomāti.

Rezultāti

Pēc mēneÅ”a kubecost izmantoÅ”anas pāris projektos varam secināt, ka tas ir interesants (un arÄ« viegli apgÅ«stams un instalējams) rÄ«ks Kubernetes klasteriem izmantoto mākoņpakalpojumu sniedzēju pakalpojumu izmaksu analÄ«zei un optimizÄ“Å”anai. Aprēķini izrādās ļoti precÄ«zi: mÅ«su eksperimentos tie sakrita ar pakalpojumu sniedzēju pieprasÄ«to.

Ir arÄ« daži negatÄ«vie aspekti: ir nekritiskas kļūdas, un dažviet funkcionalitāte nesedz dažiem projektiem raksturÄ«gās vajadzÄ«bas. Taču, ja ātri jāsaprot, kur aiziet nauda un ko var ā€œnogrieztā€, lai konsekventi samazinātu rēķinu par mākoņpakalpojumiem par 5-30% (tā tas notika mÅ«su gadÄ«jumā), Ŕī ir lieliska iespēja .

PS

Lasi arī mūsu emuārā:

Avots: www.habr.com

Pievieno komentāru