Kubecost recenzia na šetrenie peňazí na Kubernetes v cloude

Kubecost recenzia na šetrenie peňazí na Kubernetes v cloude

V súčasnosti čoraz viac spoločností presúva svoju infraštruktúru z hardvérových serverov a vlastných virtuálnych strojov do cloudu. Toto riešenie sa dá ľahko vysvetliť: nie je potrebné sa starať o hardvér, klaster sa ľahko konfiguruje mnohými rôznymi spôsobmi... a čo je najdôležitejšie, existujúce technológie (ako Kubernetes) umožňujú jednoducho škálovať výpočtový výkon v závislosti od zaťaženia .

Finančná stránka je vždy dôležitá. Nástroj popísaný v tomto článku je navrhnutý tak, aby pomohol znížiť rozpočty pri používaní cloudovej infraštruktúry s Kubernetes.

Úvod

Kubecost je kalifornský startup od Google, ktorý vytvára riešenie pre výpočet nákladov na infraštruktúru v cloudových službách (v rámci klastra Kubernetes + zdieľané zdroje), hľadanie úzkych miest v nastaveniach klastra a odosielanie vhodných upozornení do Slacku.

Máme klientov s Kubernetes v známych cloudoch AWS a GCP a zriedkavejšie pre linuxovú komunitu Azure - vo všeobecnosti na všetkých platformách podporovaných Kubecostom. Pri niektorých si sami kalkulujeme náklady na vnútroklastrové služby (podobnou metódou, akú používa Kubecost), sledujeme aj náklady na infraštruktúru a snažíme sa ich optimalizovať. Preto je logické, že nás zaujímala možnosť automatizácie takýchto úloh.

Zdrojový kód hlavného modulu Kubecost je otvorený za podmienok licencie Open Source (Apache License 2.0). Dá sa voľne používať a dostupné funkcie by mali stačiť na malé projekty. Obchod je však biznis: zvyšok produktu je uzavretý, môže ho používať platené predplatné, čo zahŕňa aj komerčnú podporu. Okrem toho autori ponúkajú bezplatnú licenciu pre malé klastre (1 klaster s 10 uzlami – počas písania tohto článku sa tento limit rozšíril na 20 uzlov) alebo skúšobnú dobu s plnými možnosťami na 1 mesiac.

Ako to celé funguje

Hlavnou časťou Kubecostu je teda aplikácia nákladový model, napísaný v Go. Nazýva sa Helmova tabuľka, ktorá popisuje celý systém analyzátor nákladov a jeho jadrom je zostava z nákladového modelu s Prometheus, Grafana a niekoľkými prístrojovými doskami.

Vo všeobecnosti má cost-model svoje webové rozhranie, ktoré zobrazuje grafy a podrobné štatistiky nákladov v tabuľkovej forme a samozrejme aj tipy na optimalizáciu nákladov. Dashboardy prezentované v Grafane sú skorším štádiom vývoja Kubecostu a obsahujú takmer rovnaké údaje ako nákladový model, dopĺňajú ich zvyčajnými štatistikami o spotrebe CPU/pamäte/siete/miesta na disku v klastri a jeho komponentoch. .

Ako funguje Kubecost?

  • Nákladový model získava ceny za služby prostredníctvom API poskytovateľov cloudu.
  • Ďalej v závislosti od typu železa uzla a regiónu sa vypočítajú náklady na uzol.
  • Na základe nákladov na prevádzku uzlov dostane každý listový modul cenu za hodinu využitia procesora, za spotrebovaný gigabajt pamäte a za hodinu za gigabajt uložených dát – v závislosti od uzla, na ktorom bežal, alebo triedy úložiska.
  • Na základe nákladov na prevádzku jednotlivých modulov sa vypočíta platba za menné priestory, služby, nasadenia, stavové sady.
  • Štatistiky sa vypočítavajú pomocou metrík poskytovaných nástrojmi kube-state-metrics a node-exporter.

Je dôležité zvážiť, že Kubecost v predvolenom nastavení počíta iba zdroje dostupné v Kubernetes. Externé databázy, servery GitLab, úložiská S3 a ďalšie služby, ktoré nie sú v klastri (aj keď sa nachádzajú v rovnakom cloude), nie sú viditeľné. Aj keď pre GCP a AWS môžete pridať kľúče svojich servisných účtov a vypočítať všetko spolu.

Inštalácia

Kubecost vyžaduje:

  • Kubernetes verzia 1.8 a vyššia;
  • kube-state-metrics;
  • Prometheus;
  • uzol-exportér.

Stalo sa, že v našich klastroch boli všetky tieto podmienky vopred splnené, takže sa ukázalo, že pre prístup k Prometheusu stačilo len špecifikovať správny koncový bod. Oficiálny graf kubecost Helm však obsahuje všetko, čo potrebujete na spustenie na holom klastri.

Existuje niekoľko spôsobov, ako nainštalovať Kubecost:

  1. Štandardný spôsob inštalácie opísaný v inštrukcie na webových stránkach vývojára. Povinné pridajte úložisko analyzátora nákladov do Helm a potom nainštalujte graf. Zostáva len preposlať váš port a upraviť nastavenia do požadovaného stavu manuálne (cez kubectl) a/alebo pomocou web rozhrania cost-model.

    Túto metódu sme ani nevyskúšali, pretože nepoužívame hotové konfigurácie tretích strán, ale vyzerá to ako dobrá možnosť „len si to vyskúšajte sami“. Ak už máte nainštalované niektoré systémové komponenty alebo chcete viac doladiť, je lepšie zvážiť druhú cestu.

  2. Použiť zásadne ten istý graf, ale nakonfigurujte a nainštalujte si ho sami akýmkoľvek pohodlným spôsobom.

    Ako už bolo spomenuté, okrem samotnej kubecosti obsahuje tento graf grafy Grafana a Prometheus, ktoré je možné tiež prispôsobiť podľa želania.

    Dostupné na grafe values.yaml pre analyzátor nákladov vám umožňuje konfigurovať:

    • zoznam komponentov analyzátora nákladov, ktoré je potrebné nasadiť;
    • váš koncový bod pre Prometheus (ak ho už máte);
    • domény a iné nastavenia vstupu pre nákladový model a Grafana;
    • anotácie pre struky;
    • nutnosť používať trvalé úložisko a jeho veľkosť.

    Úplný zoznam dostupných možností konfigurácie s popisom je dostupný v dokumentáciu.

    Keďže kubecost vo svojej základnej verzii nemôže obmedziť prístup, budete musieť okamžite nakonfigurovať základné overenie pre webový panel.

  3. zriadiť iba jadro systému - nákladový model. Na to musíte mať v klastri nainštalovaný Prometheus a do premennej zadať zodpovedajúcu hodnotu jeho adresy prometheusEndpoint pre Helma. Potom - aplikujte súbor konfigurácií YAML v klastri.

    Opäť budete musieť manuálne pridať Ingress so základným overením. Nakoniec budete musieť pridať sekciu na zhromažďovanie metrík nákladového modelu extraScrapeConfigs v konfigurácii Prometheus:

    - 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

čo získame?

Po kompletnej inštalácii máme k dispozícii webový panel kubecost a Grafana so sadou dashboardov.

Celkové náklady, zobrazený na hlavnej obrazovke, v skutočnosti zobrazuje odhadované náklady na zdroje za mesiac. Toto projektované cena odrážajúca náklady na používanie klastra (za mesiac) pri aktuálnej úrovni spotreby zdrojov.

Táto metrika je skôr na analýzu výdavkov a ich optimalizáciu. Nie je veľmi vhodné pozerať sa na celkové náklady na abstraktný júl v kubecost: budete musieť prejdite na fakturáciu. Môžete však vidieť náklady rozdelené podľa menných priestorov, štítkov, podov za 1/2/7/30/90 dní, ktoré vám fakturácia nikdy neukáže.

Kubecost recenzia na šetrenie peňazí na Kubernetes v cloude

Hovoriac o štítky. Mali by ste okamžite prejsť do nastavení a nastaviť názvy štítkov, ktoré sa použijú ako ďalšie kategórie pre náklady na zoskupenie:

Kubecost recenzia na šetrenie peňazí na Kubernetes v cloude

Môžete na ne zavesiť akékoľvek štítky - praktické, ak už máte vlastný systém štítkov.

Tiež tam môžete zmeniť adresu koncového bodu API, ku ktorému sa nákladový model pripája, upraviť veľkosť zľavy v GCP a nastaviť vlastné ceny za zdroje a menu na ich meranie (z nejakého dôvodu funkcia neovplyvňuje celkové náklady).

Kubecost môže ukázať rôzne problémy v klastri (a dokonca aj varovať v prípade nebezpečenstva). Bohužiaľ, možnosť nie je konfigurovateľná, a preto, ak máte prostredia pre vývojárov a používate ich, budete neustále vidieť niečo také:

Kubecost recenzia na šetrenie peňazí na Kubernetes v cloude

Dôležitý nástroj - Klastrové úspory. Meria aktivitu podov (spotrebu zdrojov vrátane sieťových) a tiež vypočítava, koľko peňazí a na čom môžete ušetriť.

Môže sa zdať, že optimalizačné tipy sú celkom samozrejmé, no skúsenosti naznačujú, že sa stále je na čo pozerať. Monitoruje sa najmä sieťová aktivita podov (Kubecost navrhuje venovať pozornosť neaktívnym), porovnáva sa požadovaná a skutočná spotreba pamäte a CPU, ako aj CPU využívané uzlami klastra (navrhuje zrútenie viacerých uzlov do jedného), disk zaťaženie a niekoľko desiatok ďalších parametrov.

Ako každý problém s optimalizáciou, aj optimalizácia zdrojov na základe údajov Kubecost vyžaduje: zaobchádzať opatrne. Napríklad Cluster Savings navrhuje vymazanie uzlov, tvrdiac, že ​​je to bezpečné, ale neberie do úvahy prítomnosť selektorov uzlov a kazov v podoch nasadených na nich, ktoré nie sú dostupné na iných uzloch. A vôbec, aj autori produktu vo svojom nedávny článok (mimochodom, pre záujemcov o tému projektu to môže byť veľmi užitočné) odporúča sa nevrhnúť sa bezhlavo do optimalizácie nákladov, ale pristupovať k problematike premyslene.

Výsledky

Po mesačnom používaní kubecostu na niekoľkých projektoch môžeme konštatovať, že ide o zaujímavý (a tiež jednoduchý na naučenie a inštaláciu) nástroj na analýzu a optimalizáciu nákladov na služby poskytovateľov cloudu používaných pre klastre Kubernetes. Výpočty sa ukázali byť veľmi presné: v našich experimentoch sa zhodovali s tým, čo poskytovatelia skutočne požadovali.

Existujú aj niektoré nevýhody: existujú nekritické chyby a na niektorých miestach funkcia nepokrýva potreby špecifické pre niektoré projekty. Ak však potrebujete rýchlo pochopiť, kam idú peniaze a čo sa dá „ukrojiť“, aby ste dôsledne znížili účet za cloudové služby o 5 – 30 % (to sa stalo v našom prípade), je to skvelá možnosť .

PS

Prečítajte si aj na našom blogu:

Zdroj: hab.com

Pridať komentár