Recenze Kubecost pro úsporu peněz na Kubernetes v cloudu

Recenze Kubecost pro úsporu peněz na Kubernetes v cloudu

V současné době stále více společností převádí svou infrastrukturu z hardwarových serverů a vlastních virtuálních strojů do cloudu. Toto řešení lze snadno vysvětlit: není třeba se starat o hardware, cluster se snadno konfiguruje mnoha různými způsoby... a co je nejdůležitější, stávající technologie (jako Kubernetes) umožňují jednoduše škálovat výpočetní výkon v závislosti na zatížení .

Finanční stránka je vždy důležitá. Nástroj popsaný v tomto článku je navržen tak, aby pomohl snížit rozpočty při používání cloudové infrastruktury s Kubernetes.

úvod

Kubecost je kalifornský startup od Googlu, vytvářející řešení pro kalkulaci nákladů na infrastrukturu v cloudových službách (v rámci clusteru Kubernetes + sdílené zdroje), vyhledávání úzkých míst v nastavení clusteru a odesílání příslušných upozornění na Slack.

Máme klienty s Kubernetes jak ve známých cloudech AWS a GCP, tak vzácněji pro linuxovou komunitu v Azure – obecně na všech platformách podporovaných Kubecostem. U některých z nich sami kalkulujeme náklady na vnitroklastrové služby (podobnou metodou, jakou používá Kubecost), sledujeme i náklady na infrastrukturu a snažíme se je optimalizovat. Proto je logické, že jsme se zajímali o možnost automatizace takových úloh.

Zdrojový kód hlavního modulu Kubecost je otevřen za podmínek licence Open Source (Apache License 2.0). Lze jej volně používat a dostupné funkce by měly být dostatečné pro malé projekty. Byznys je však byznys: zbytek produktu je uzavřen, může být používán placené předplatné, což také znamená komerční podporu. Autoři navíc nabízejí bezplatnou licenci pro malé clustery (1 cluster s 10 uzly – během psaní tohoto článku se tento limit rozšířil na 20 uzlů) nebo zkušební dobu s plnými možnostmi na 1 měsíc.

Jak to všechno funguje

Hlavní částí Kubecostu je tedy aplikace nákladový model, napsaný v Go. Nazývá se Helmův diagram, který popisuje celý systém analyzátor nákladů a jeho jádrem je sestava z nákladového modelu s Prometheus, Grafana a několika přístrojovými deskami.

Obecně lze říci, že cost-model má vlastní webové rozhraní, které zobrazuje grafy a podrobné statistiky nákladů v tabulkové podobě a samozřejmě také tipy na optimalizaci nákladů. Dashboardy prezentované v Grafaně jsou dřívější fází vývoje Kubecost a obsahují většinu stejných dat jako nákladový model, doplňují je obvyklé statistiky o spotřebě CPU/paměti/sítě/místa na disku v clusteru a jeho komponenty.

Jak Kubecost funguje?

  • Nákladový model získává ceny za služby prostřednictvím API cloudových poskytovatelů.
  • Dále, v závislosti na typu železa uzlu a regionu, se vypočítávají náklady na uzel.
  • Na základě nákladů na provoz uzlů získá každý listový modul cenu za hodinu využití CPU, za spotřebovaný gigabajt paměti a za hodinu za gigabajt uložených dat – v závislosti na uzlu, na kterém běžel, nebo třídě úložiště.
  • Na základě nákladů na provoz jednotlivých modulů se vypočítá platba za jmenné prostory, služby, nasazení, stavové sady.
  • Statistiky se počítají pomocí metrik poskytovaných kube-state-metrics a node-exporter.

Je důležité vzít v úvahu, že Kubecost ve výchozím nastavení počítá pouze zdroje dostupné v Kubernetes. Externí databáze, servery GitLab, úložiště S3 a další služby, které nejsou v clusteru (i když jsou umístěny ve stejném cloudu), nejsou pro něj viditelné. Ačkoli pro GCP a AWS můžete přidat klíče svých servisních účtů a vypočítat vše dohromady.

Instalace

Kubecost vyžaduje:

  • Kubernetes verze 1.8 a vyšší;
  • kube-state-metrics;
  • Prometheus;
  • uzel-exportér.

Stalo se, že v našich clusterech byly všechny tyto podmínky předem splněny, takže se ukázalo, že pro přístup k Prometheusu stačilo jen zadat správný koncový bod. Oficiální graf kubecost Helm však obsahuje vše, co potřebujete ke spuštění na holém clusteru.

Existuje několik způsobů, jak nainstalovat Kubecost:

  1. Standardní způsob instalace popsaný v instrukce na webu vývojáře. Povinné přidejte úložiště analyzátoru nákladů do Helmu a poté nainstalujte graf. Zbývá pouze přeposlat váš port a upravit nastavení do požadovaného stavu ručně (přes kubectl) a/nebo pomocí webového rozhraní cost-model.

    Tuto metodu jsme ani nezkoušeli, protože nepoužíváme hotové konfigurace třetích stran, ale vypadá to jako dobrá možnost „vyzkoušejte si to sami“. Pokud již máte nainstalované některé systémové komponenty nebo chcete více doladit, je lepší zvážit druhou cestu.

  2. Používejte zásadně stejný graf, ale nakonfigurujte a nainstalujte jej sami jakýmkoli pohodlným způsobem.

    Jak již bylo zmíněno, kromě samotné kubecost obsahuje tento graf grafy Grafana a Prometheus, které lze také upravit dle přání.

    Dostupné na grafu values.yaml pro cost-analyzer umožňuje konfigurovat:

    • seznam součástí analyzátoru nákladů, které je třeba nasadit;
    • váš koncový bod pro Prometheus (pokud jej již máte);
    • domény a další nastavení vstupu pro nákladový model a Grafana;
    • poznámky pro lusky;
    • nutnost použití trvalého úložiště a jeho velikost.

    Kompletní seznam dostupných možností konfigurace s popisy je k dispozici v dokumentace.

    Vzhledem k tomu, že kubecost ve své základní verzi nemůže omezit přístup, budete muset pro webový panel okamžitě nakonfigurovat basic-auth.

  3. Chcete-li nainstalovat pouze jádro systému - nákladový model. K tomu musíte mít v clusteru nainstalovaný Prometheus a do proměnné zadat odpovídající hodnotu jeho adresy prometheusEndpoint pro Helma. Poté - aplikujte sada konfigurací YAML v klastru.

    Opět budete muset ručně přidat Ingress se základním ověřením. Nakonec budete muset přidat sekci pro shromažďování metrik modelu nákladů extraScrapeConfigs v konfiguraci 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

co získáme?

S plnou instalací máme k dispozici webový panel kubecost a Grafana se sadou dashboardů.

Celkové náklady, zobrazený na hlavní obrazovce, ve skutečnosti ukazuje odhadované náklady na zdroje za měsíc. Tento předvídatelný cena odrážející náklady na používání clusteru (za měsíc) při aktuální úrovni spotřeby zdrojů.

Tato metrika je spíše pro analýzu výdajů a jejich optimalizaci. Není příliš vhodné dívat se na celkové náklady na abstraktní červenec v kubecost: budete muset přejít na fakturaci. Ale můžete vidět náklady rozdělené podle jmenných prostorů, štítků, podů za 1/2/7/30/90 dní, které vám fakturace nikdy neukáže.

Recenze Kubecost pro úsporu peněz na Kubernetes v cloudu

Mimochodem štítky. Měli byste okamžitě přejít do nastavení a nastavit názvy štítků, které budou použity jako další kategorie pro seskupování nákladů:

Recenze Kubecost pro úsporu peněz na Kubernetes v cloudu

Můžete na ně pověsit libovolné štítky – praktické, pokud již máte svůj vlastní systém štítků.

Také tam můžete změnit adresu koncového bodu API, ke kterému se nákladový model připojuje, upravit velikost slevy v GCP a nastavit vlastní ceny za zdroje a měnu pro jejich měření (z nějakého důvodu tato funkce neovlivňuje celkové náklady).

Kubecost může ukázat různé problémy v clusteru (a v případě nebezpečí dokonce varovat). Bohužel tato možnost není konfigurovatelná, a proto, pokud máte prostředí pro vývojáře a používáte je, budete neustále vidět něco takového:

Recenze Kubecost pro úsporu peněz na Kubernetes v cloudu

Důležitý nástroj - Klastrové úspory. Měří aktivitu podů (spotřebu zdrojů včetně síťových) a také počítá, kolik peněz a na čem můžete ušetřit.

Může se zdát, že optimalizační tipy jsou celkem samozřejmé, ale zkušenosti naznačují, že je stále na co koukat. Sleduje se zejména síťová aktivita podů (Kubecost doporučuje věnovat pozornost neaktivním), porovnává se požadovaná a skutečná spotřeba paměti a CPU, dále CPU využívané uzly clusteru (navrhuje sbalit několik uzlů do jednoho), disk zatížení a několik desítek dalších parametrů.

Jako každý problém s optimalizací vyžaduje optimalizace zdrojů na základě dat Kubecost: zacházet opatrně. Například Cluster Savings navrhuje smazání uzlů, tvrdí, že je to bezpečné, ale nebere v úvahu přítomnost selektorů uzlů a narušení v podech nasazených na nich, které nejsou dostupné na jiných uzlech. A vůbec, i autoři produktu ve svém nedávný článek (mimochodem, pro zájemce o téma projektu to může být velmi užitečné) doporučuje se nevrhnout se bezhlavě do optimalizace nákladů, ale přistupovat k problematice promyšleně.

Výsledky

Po měsíčním používání kubecost na několika projektech můžeme konstatovat, že jde o zajímavý (a také snadno naučitelný a instalovatelný) nástroj pro analýzu a optimalizaci nákladů na služby cloudových poskytovatelů používaných pro clustery Kubernetes. Výpočty se ukázaly být velmi přesné: v našich experimentech se shodovaly s tím, co poskytovatelé skutečně požadovali.

Existují také některé nevýhody: existují nekritické chyby a na některých místech funkce nepokrývají potřeby specifické pro některé projekty. Pokud však potřebujete rychle pochopit, kam peníze jdou a co lze „ukrojit“, abyste trvale snížili účet za cloudové služby o 5–30 % (to se stalo v našem případě), je to skvělá volba .

PS

Přečtěte si také na našem blogu:

Zdroj: www.habr.com

Přidat komentář