Kubecost-resinsje foar it besparjen fan jild op Kubernetes yn 'e wolken

Kubecost-resinsje foar it besparjen fan jild op Kubernetes yn 'e wolken

Op it stuit drage hieltyd mear bedriuwen har ynfrastruktuer oer fan hardware-tsjinners en har eigen firtuele masines nei de wolk. Dizze oplossing is maklik te ferklearjen: d'r is gjin need nedich om har soargen te meitsjen oer hardware, it kluster is maklik op in protte ferskillende manieren konfigureare ... en it wichtichste, besteande technologyen (lykas Kubernetes) meitsje it mooglik om berekkeningskrêft gewoan te skaaljen ôfhinklik fan 'e lading .

It finansjele aspekt is altyd wichtich. It yn dit artikel besprutsen ark is ûntworpen om budzjetten te ferminderjen by it brûken fan wolkynfrastruktuer mei Kubernetes.

Ynlieding

Kubecost is in Kalifornyske opstart fan Google, it meitsjen fan in oplossing foar it berekkenjen fan ynfrastruktuerkosten yn wolktsjinsten (binnen in Kubernetes-kluster + dielde boarnen), fynplakken yn 'e klusterynstellingen en it ferstjoeren fan passende notifikaasjes nei Slack.

Wy hawwe kliïnten mei Kubernetes sawol yn 'e bekende AWS- as GCP-wolken, en, selder foar de Linux-mienskip, Azure - yn't algemien, op alle platfoarms dy't troch Kubecost wurde stipe. Foar guon fan harren berekkenje wy sels de kosten fan intra-cluster tsjinsten (mei in metoade dy't fergelykber is mei dy brûkt troch Kubecost), en kontrolearje ek ynfrastruktuerkosten en besykje se te optimalisearjen. Dêrom is it logysk dat wy ynteressearre wiene yn 'e mooglikheid om sokke taken te automatisearjen.

De boarnekoade fan 'e haad Kubecost-module is iepen ûnder de betingsten fan' e Open Source-lisinsje (Apache License 2.0). It kin frij brûkt wurde en de beskikbere funksjes moatte genôch wêze foar lytse projekten. Lykwols, bedriuw is bedriuw: de rest fan it produkt is sletten, it kin brûkt wurde troch betelle abonneminten, dy't ek kommersjele stipe ymplisearret. Derneist biede de auteurs in fergese lisinsje foar lytse klusters (1 kluster mei 10 knopen - by it skriuwen fan dit artikel is dizze limyt útwreide nei 20 knopen) as in proefperioade mei folsleine mooglikheden foar 1 moanne.

Hoe alles wurket

Dat, it haaddiel fan Kubecost is de applikaasje kosten-model, skreaun yn Go. In Helm-diagram dat it hiele systeem beskriuwt, wurdt neamd kosten-analyzer en yn har kearn is in gearstalling fan in kostenmodel mei Prometheus, Grafana en ferskate dashboards.

Yn 't algemien hat kostenmodel in eigen webynterface, dy't grafiken en detaillearre statistiken toant oer kosten yn tabelfoarm, lykas ek, fansels, tips foar it optimalisearjen fan kosten. De dashboards presintearre yn Grafana binne in earder stadium yn 'e ûntwikkeling fan Kubecost en befetsje in protte deselde gegevens as it kostenmodel, oanfolje se mei de gewoane statistiken oer it konsumpsje fan CPU / ûnthâld / netwurk / skiifromte yn it kluster en har komponinten .

Hoe wurket Kubecost?

  • Kostenmodel krijt prizen foar tsjinsten fia de API fan wolkproviders.
  • Fierder, ôfhinklik fan it izeren type fan 'e knooppunt en de regio, wurde de kosten per knooppunt berekkene.
  • Op grûn fan 'e kosten fan rinnende knooppunten krijt elke blêdpod in kosten per oere CPU-gebrûk, per gigabyte konsumearre ûnthâld, en per oere per gigabyte oan gegevens opslein - ôfhinklik fan it knooppunt wêrop it rûn of de klasse fan opslach.
  • Op grûn fan 'e kosten fan it operearjen fan yndividuele pods, wurdt betelling berekkene foar nammeromten, tsjinsten, Deployments, StatefulSets.
  • Statistiken wurde berekkene mei help fan metriken levere troch kube-state-metrics en node-eksporter.

It is wichtich om te beskôgje dat Kubecost standert telt allinnich boarnen beskikber yn Kubernetes. Eksterne databases, GitLab-tsjinners, S3-opslach en oare tsjinsten dy't net yn it kluster binne (sels as se yn deselde wolk lizze) binne dêr net sichtber foar. Hoewol foar GCP en AWS kinne jo de kaaien fan jo tsjinstkonten tafoegje en alles tegearre berekkenje.

ynstelling

Kubecost fereasket:

  • Kubernetes ferzje 1.8 en heger;
  • kube-steat-metriken;
  • Prometheus;
  • node-eksporteur.

It barde dat yn ús klusters al dizze betingsten yn 't foar waarden foldien, dus it die bliken dat it genôch wie om gewoan it juste einpunt foar tagong ta Prometheus oan te jaan. It offisjele kubecost Helm-diagram befettet lykwols alles wat jo nedich binne om op in bleate kluster te rinnen.

D'r binne ferskate manieren om Kubecost te ynstallearjen:

  1. Standert ynstallaasje metoade beskreaun yn ynstruksjes op 'e webside fan' e ûntwikkelders. Ferplicht foegje de kosten-analyzer-repository ta oan Helm, en ynstallearje dan it diagram. Alles wat oerbliuwt is jo poarte troch te stjoeren en de ynstellingen manuell oan te passen oan 'e winske steat (fia kubectl) en / of mei de webynterface fan kostenmodel.

    Wy hawwe dizze metoade net iens besocht, om't wy gjin klearmakke konfiguraasjes fan tredden brûke, mar it liket in goede opsje "probearje it gewoan foar josels". As jo ​​​​al guon fan 'e systeemkomponinten ynstalleare hawwe of jo wolle mear fine-tuning, is it better om it twadde paad te beskôgjen.

  2. Brûk yn essinsje deselde diagram, mar konfigurearje en ynstallearje it sels op elke handige manier.

    Lykas al neamd, neist de kubecost sels, befettet dizze kaart Grafana en Prometheus charts, dy't ek kinne wurde oanpast as winske.

    Beskikber op de kaart values.yaml foar kosten-analyzer kinne jo konfigurearje:

    • in list mei kosten-analyzer-komponinten dy't moatte wurde ynset;
    • jo einpunt foar Prometheus (as jo al ien hawwe);
    • domeinen en oare yngongsynstellingen foar kostenmodel en Grafana;
    • annotaasjes foar pods;
    • de needsaak om permaninte opslach te brûken en har grutte.

    In folsleine list mei beskikbere konfiguraasjeopsjes mei beskriuwingen is beskikber yn dokumintaasje.

    Om't kubecost yn syn basisferzje de tagong net beheine kin, moatte jo de basis-auth fuortendaliks konfigurearje foar it webpaniel.

  3. Ynstallearje allinnich it systeem kearn - kostenmodel. Om dit te dwaan moatte jo Prometheus hawwe ynstalleare yn it kluster en de oerienkommende wearde fan syn adres yn 'e fariabele opjaan prometheusEndpoint foar Helm. Dêrnei - oanfreegje set fan YAML konfiguraasjes yn it kluster.

    Nochris moatte jo Ingress manuell tafoegje mei basic-auth. Uteinlik moatte jo in seksje tafoegje foar it sammeljen fan kostenmodelmetriken yn extraScrapeConfigs yn 'e Prometheus konfiguraasje:

    - 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

Wat krije wy?

Mei in folsleine ynstallaasje hawwe wy it kubecost en Grafana webpaniel mei in set dashboards ta ús beskikking.

Totaal kosten, werjûn op it haadskerm, toant eins de rûsde kosten fan middels foar de moanne. Dit projektearre priis reflektearret de kosten fan it brûken fan it kluster (per moanne) op it hjoeddeiske nivo fan boarne konsumpsje.

Dizze metrik is mear foar it analysearjen fan útjeften en it optimalisearjen fan se. It is net heul handich om de totale kosten foar abstrakte july yn kubecost te sjen: jo moatte dit dwaan gean nei fakturearring. Mar jo kinne kosten sjen ferdield troch nammeromten, labels, pods foar 1/2/7/30/90 dagen, dy't fakturearring jo noait sil sjen litte.

Kubecost-resinsje foar it besparjen fan jild op Kubernetes yn 'e wolken

It praten fan labels. Jo moatte daliks nei de ynstellings gean en de nammen fan 'e labels ynstelle dy't sille wurde brûkt as ekstra kategoryen foar groepskosten:

Kubecost-resinsje foar it besparjen fan jild op Kubernetes yn 'e wolken

Jo kinne elke etiketten derop hingje - handich as jo al jo eigen etiketteringssysteem hawwe.

Ek dêr kinne jo it adres feroarje fan it API-einpunt wêrmei't it kostenmodel ferbynt, de koartingsgrutte yn GCP oanpasse en jo eigen prizen foar boarnen en faluta ynstelle foar har mjitting (om ien of oare reden hat de funksje gjin ynfloed op Totale kosten).

Kubecost kin ferskate sjen litte problemen yn it kluster (en sels warskôgje yn gefal fan gefaar). Spitigernôch is de opsje net konfigurearber, en dêrom, as jo omjouwings hawwe foar ûntwikkelders en se brûke, sille jo konstant sa'n ding sjen:

Kubecost-resinsje foar it besparjen fan jild op Kubernetes yn 'e wolken

In wichtich ark - Cluster Savings. It mjit de aktiviteit fan pods (konsumpsje fan boarnen, ynklusyf netwurken), en berekkenet ek hoefolle jild en wêrop jo kinne besparje.

It kin lykje dat optimisaasjetips frij fanselssprekkend binne, mar ûnderfining suggerearret dat d'r noch wat te sjen is. Benammen de netwurkaktiviteit fan pods wurdt kontrolearre (Kubecost suggerearret omtinken te jaan oan ynaktyf), it frege en werklike ûnthâld en CPU-konsumpsje wurdt fergelike, lykas de CPU brûkt troch klusterknooppunten (suggest foar it ynstoarten fan ferskate knopen yn ien), skiif load en in pear tsientallen oare parameters.

Lykas by elk optimisaasjeprobleem, fereasket it optimalisearjen fan boarnen basearre op Kubecost-gegevens: behannelje mei foarsichtigens. Bygelyks, Cluster Savings suggerearret wiskjen knooppunten, beweare dat it is feilich, mar nimt gjin rekken mei de oanwêzigens fan knooppunt-selektors en tinzen yn de pods ynset op harren dy't net beskikber op oare knooppunten. En yn it algemien, sels de auteurs fan it produkt yn harren resint artikel (Trouwens, it kin heul nuttich wêze foar dyjingen dy't ynteressearre binne yn it ûnderwerp fan it projekt) It is oan te rieden om net te haasten yn kostenoptimalisaasje, mar om it probleem mei tinken te benaderjen.

Resultaten

Nei it brûken fan kubecost foar in moanne op in pear projekten, kinne wy ​​konkludearje dat it in ynteressant (en ek maklik te learen en ynstallearjen) ark is foar it analysearjen en optimalisearjen fan kosten foar de tsjinsten fan wolkproviders brûkt foar Kubernetes-klusters. De berekkeningen blike hiel krekt te wêzen: yn ús eksperiminten foelen se gear mei wat de oanbieders eins easke.

D'r binne ek wat neidielen: d'r binne net-krityske bugs, en op guon plakken dekt de funksjonaliteit net de behoeften spesifyk foar guon projekten. As jo ​​​​lykwols fluch moatte begripe wêr't it jild hinne giet en wat kin wurde "besnijd" om de rekken foar wolktsjinsten konsekwint mei 5-30% te ferminderjen (dit is wat barde yn ús gefal), dit is in geweldige opsje .

PS

Lês ek op ús blog:

Boarne: www.habr.com

Add a comment