Kubecost-arvostelu rahan säästämiseksi Kubernetes pilvissä

Kubecost-arvostelu rahan säästämiseksi Kubernetes pilvissä

Tällä hetkellä yhä useammat yritykset ovat siirtämässä infrastruktuuriaan laitteistopalvelimista ja omista virtuaalikoneistaan ​​pilveen. Tämä ratkaisu on helppo selittää: laitteistosta ei tarvitse huolehtia, klusteri on helposti konfiguroitavissa monilla eri tavoilla... ja mikä tärkeintä, olemassa olevat tekniikat (kuten Kubernetes) mahdollistavat laskentatehon skaalauksen yksinkertaisesti kuormituksen mukaan. .

Taloudellinen puoli on aina tärkeä. Tässä artikkelissa käsitelty työkalu on suunniteltu auttamaan vähentämään budjetteja käytettäessä pilviinfrastruktuuria Kubernetesin kanssa.

Esittely

Kubecost on Googlen kalifornialainen startup, joka luo ratkaisun infrastruktuurikustannusten laskemiseen pilvipalveluissa (Kubernetes-klusterissa + jaetut resurssit), etsii pullonkauloja klusterin asetuksista ja lähettää asianmukaisia ​​ilmoituksia Slackiin.

Meillä on Kubernetes-asiakkaita sekä tutuissa AWS- ja GCP-pilveissä että harvemmin Linux-yhteisölle Azure - yleensä kaikilla Kubecostin tukemilla alustoilla. Joillekin niistä laskemme itse klusterin sisäisten palveluiden kustannukset (kubecostin kaltaisella menetelmällä) sekä seuraamme infrastruktuurikustannuksia ja yritämme optimoida niitä. Siksi on loogista, että olimme kiinnostuneita mahdollisuudesta automatisoida tällaiset tehtävät.

Kubecostin päämoduulin lähdekoodi on avoin Open Source -lisenssin (Apache License 2.0) ehtojen mukaisesti. Sitä voidaan käyttää vapaasti ja käytettävissä olevien ominaisuuksien pitäisi riittää pieniin projekteihin. Bisnes on kuitenkin bisnestä: muu osa tuotteesta on suljettu, se voi olla käytössä maksetut tilaukset, mikä tarkoittaa myös kaupallista tukea. Lisäksi kirjoittajat tarjoavat ilmaisen lisenssin pienille klusteille (1 klusteri, jossa on 10 solmua - tämän artikkelin kirjoittamisen aikana tämä raja on laajentunut 20 solmuun) tai 1 kuukauden kokeilujakson täydellä toiminnalla.

Miten se kaikki toimii

Joten Kubecostin pääosa on sovellus kustannus-malli, kirjoitettu Go. Ruorikaavio, joka kuvaa koko järjestelmän, kutsutaan kustannus-analysaattori ja sen ytimessä on kustannusmallin kokoonpano, jossa on Prometheus, Grafana ja useita kojetauluja.

Yleisesti ottaen kustannusmallilla on oma web-käyttöliittymä, joka näyttää kaavioita ja yksityiskohtaisia ​​kustannustilastoja taulukkomuodossa sekä tietysti vinkkejä kustannusten optimointiin. Grafanassa esitellyt kojelaudat ovat varhaisempaa vaihetta Kubecostin kehityksessä ja sisältävät pitkälti samat tiedot kuin kustannusmalli, täydentäen niitä tavanomaisilla tilastoilla klusterin ja sen komponenttien prosessorin/muistin/verkon/levytilan kulutuksesta. .

Miten Kubecost toimii?

  • Kustannusmalli saa hinnat palveluista pilvipalveluntarjoajien API:n kautta.
  • Lisäksi solmun rautatyypistä ja alueesta riippuen lasketaan solmukohtainen hinta.
  • Solmujen käyttökustannusten perusteella jokainen lehtityyny saa hinnan prosessorin käyttötuntia, kulutettua muistin gigatavua kohti ja tallennettua dataa gigatavua kohti - riippuen solmusta, jossa se oli käynnissä, tai tallennusluokista.
  • Yksittäisten podien käyttökustannusten perusteella maksu lasketaan nimiavaruuksista, palveluista, käyttöönotoista ja StatefulSetsistä.
  • Tilastot lasketaan käyttämällä kube-state-metrics- ja node-exporter-mittareita.

On tärkeää ottaa huomioon, että Kubecost oletusarvoisesti laskee vain Kubernetesissa saatavilla olevat resurssit. Ulkoiset tietokannat, GitLab-palvelimet, S3-varastot ja muut palvelut, jotka eivät ole klusterissa (vaikka ne sijaitsevat samassa pilvessä), eivät näy sille. Vaikka GCP:lle ja AWS:lle voit lisätä palvelutiliesi avaimet ja laskea kaiken yhdessä.

Asennus

Kubecost vaatii:

  • Kubernetes-versio 1.8 tai uudempi;
  • kube-tila-metriikka;
  • Prometheus;
  • solmuviejä.

Kävi niin, että klustereissamme kaikki nämä ehdot täyttyivät etukäteen, joten kävi ilmi, että riitti vain määrittää oikea päätepiste Prometheukseen pääsyä varten. Virallinen kubecost Helm -kaavio sisältää kuitenkin kaiken, mitä tarvitset toimiaksesi paljaalla klusterilla.

Kubecostin asentamiseen on useita tapoja:

  1. Vakioasennusmenetelmä, joka on kuvattu kohdassa ohjeet kehittäjän verkkosivustolla. Pakollinen lisää kustannusanalysaattorin arkisto Helmiin ja asenna sitten kaavio. Jäljelle jää vain välittää porttisi ja säätää asetukset haluttuun tilaan manuaalisesti (kubectlin kautta) ja/tai käyttämällä kustannusmalliverkkoliittymää.

    Emme ole edes kokeilleet tätä menetelmää, koska emme käytä kolmannen osapuolen valmiita kokoonpanoja, mutta se näyttää hyvältä "kokeile vain itse" -vaihtoehdolta. Jos jokin järjestelmäkomponenteista on jo asennettu tai haluat hienosäätää, on parempi harkita toista polkua.

  2. Käytä pohjimmiltaan sama kaavio, mutta määritä ja asenna se itse millään sopivalla tavalla.

    Kuten jo mainittiin, itse kubecostin lisäksi tämä kartta sisältää Grafana- ja Prometheus-kartat, joita voidaan myös muokata haluamallasi tavalla.

    Saatavilla kaaviossa values.yaml kustannus-analysaattorille voit määrittää:

    • luettelo kustannusanalysaattorin komponenteista, jotka on otettava käyttöön;
    • Prometheuksen päätepisteesi (jos sinulla jo on sellainen);
    • verkkotunnukset ja muut sisääntuloasetukset kustannusmallille ja Grafanalle;
    • merkinnät paloille;
    • pysyvän varastoinnin tarve ja sen koko.

    Täydellinen luettelo käytettävissä olevista konfigurointivaihtoehdoista kuvauksineen on saatavilla osoitteessa dokumentointi.

    Koska kubecost perusversiossaan ei voi rajoittaa pääsyä, sinun on heti määritettävä perustodennus verkkopaneelille.

  3. perustaa vain järjestelmän ydin - kustannus-malli. Tätä varten sinulla on oltava Prometheus asennettuna klusteriin ja määritettävä sen osoitteen vastaava arvo muuttujassa prometheusEndpoint varten Helm. Sen jälkeen - hakea joukko YAML-kokoonpanoja klusterissa.

    Jälleen sinun on lisättävä Ingress manuaalisesti perusauthilla. Lopuksi sinun on lisättävä osio kustannusmallitietojen keräämistä varten extraScrapeConfigs Prometheus-kokoonpanossa:

    - 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

Mitä saamme?

Täydellisen asennuksen jälkeen meillä on käytössämme kubecost ja Grafana-verkkopaneeli kojelaudoilla.

Kokonaiskustannukset, joka näkyy päänäytössä, näyttää itse asiassa arvioidut resurssien kustannukset kuukaudelle. Tämä ennustettavissa hinta, joka heijastaa klusterin käyttökustannuksia (kuukaudessa) nykyisellä resurssien kulutuksen tasolla.

Tämä mittari on enemmänkin kulujen analysointia ja niiden optimointia varten. Ei ole kovin kätevää tarkastella abstraktin heinäkuun kokonaiskustannuksia kubecostissa: sinun on tehtävä tämä mene laskutukseen. Voit kuitenkin nähdä kustannukset nimitilojen, tunnisteiden ja ryhmien mukaan 1/2/7/30/90 päivältä, jota laskutus ei koskaan näytä sinulle.

Kubecost-arvostelu rahan säästämiseksi Kubernetes pilvissä

Puheen ollen tarrat. Sinun tulee heti siirtyä asetuksiin ja asettaa nimet tarroille, joita käytetään lisäluokina kustannusten ryhmittelyssä:

Kubecost-arvostelu rahan säästämiseksi Kubernetes pilvissä

Voit ripustaa niihin mitä tahansa tarroja - kätevää, jos sinulla on jo oma etikettijärjestelmä.

Siellä voit myös muuttaa sen API-päätepisteen osoitetta, johon kustannusmalli muodostaa yhteyden, säätää alennuskokoa GCP:ssä ja asettaa omia hintoja resursseille ja valuuttaa niiden mittaamiseen (jostain syystä ominaisuus ei vaikuta kokonaiskustannuksiin).

Kubecost voi näyttää erilaisia ongelmia klusterissa (ja jopa hälyttävä vaaratilanteessa). Valitettavasti vaihtoehtoa ei voi määrittää, ja siksi, jos sinulla on ympäristöjä kehittäjille ja käytät niitä, näet jatkuvasti jotain tällaista:

Kubecost-arvostelu rahan säästämiseksi Kubernetes pilvissä

Tärkeä työkalu - Klusterisäästöt. Se mittaa podien aktiivisuutta (resurssien, mukaan lukien verkkojen kulutusta) ja laskee myös kuinka paljon rahaa ja mistä voit säästää.

Saattaa vaikuttaa siltä, ​​että optimointivinkit ovat melko ilmeisiä, mutta kokemus viittaa siihen, että katsottavaa riittää. Erityisesti seurataan podien verkkoaktiivisuutta (Kubecost suosittelee kiinnittämään huomiota ei-aktiivisiin), verrataan pyydettyä ja todellista muistin ja prosessorin kulutusta sekä klusterin solmujen käyttämää CPU:ta (ehdottaa useiden solmujen romuttamista yhdeksi), levy kuorma ja pari tusinaa muuta parametria.

Kuten kaikki optimointiongelmat, Kubecost-tietoihin perustuvien resurssien optimointi vaatii: käsitellä varoen. Esimerkiksi Cluster Savings ehdottaa solmujen poistamista väittäen, että se on turvallista, mutta se ei ota huomioon solmuvalitsimia ja niihin asennetuissa tyynyissä olevia tahroja, jotka eivät ole käytettävissä muissa solmuissa. Ja yleensä, jopa tuotteen kirjoittajat omassa tuore artikkeli (se voi muuten olla erittäin hyödyllistä hankkeen aiheesta kiinnostuneille) on suositeltavaa olla kiirehtimättä kustannusten optimointiin, vaan lähestyä asiaa harkiten.

Tulokset

Kun kubecostia on käytetty kuukaudessa parissa projektissa, voimme päätellä, että se on mielenkiintoinen (ja myös helppo oppia ja asentaa) työkalu Kubernetes-klustereissa käytettävien pilvipalveluntarjoajien palveluiden kustannusten analysointiin ja optimointiin. Laskelmat osoittautuvat erittäin tarkiksi: kokeiluissamme ne osuivat yhteen sen kanssa, mitä palveluntarjoajat todella vaativat.

On myös joitain huonoja puolia: ei-kriittisiä bugeja on, ja joissain paikoissa toiminnallisuus ei kata tiettyjen projektien tarpeita. Jos sinun on kuitenkin nopeasti ymmärrettävä, mihin rahat menevät ja mitä voidaan "leikata", jotta pilvipalveluiden laskua voidaan jatkuvasti pienentää 5-30% (näin tapahtui meidän tapauksessamme), tämä on loistava vaihtoehto .

PS.

Lue myös blogistamme:

Lähde: will.com

Lisää kommentti