ProHoster > Blog > Adminisztráció > Kubecost-értékelés a felhőkben lévő Kubernetesen való pénzmegtakarításról
Kubecost-értékelés a felhőkben lévő Kubernetesen való pénzmegtakarításról
Jelenleg egyre több cég helyezi át infrastruktúráját hardveres szerverekről és saját virtuális gépeiről a felhőbe. Ez a megoldás könnyen magyarázható: nem kell aggódni a hardver miatt, a fürt könnyen konfigurálható sokféleképpen... és ami a legfontosabb, a meglévő technológiák (például a Kubernetes) lehetővé teszik a számítási teljesítmény egyszerű skálázását a terheléstől függően .
A pénzügyi szempont mindig fontos. Az ebben a cikkben tárgyalt eszköz célja, hogy segítsen csökkenteni a költségvetést a Kubernetes felhő-infrastruktúra használatakor.
Bevezetés
Kubecost egy kaliforniai startup a Google-tól, amely megoldást hoz létre a felhőszolgáltatások infrastrukturális költségeinek kiszámítására (Kubernetes klaszteren belül + megosztott erőforrások), keresi a szűk keresztmetszeteket a fürt beállításaiban, és megfelelő értesítéseket küld a Slacknek.
Vannak Kubernetes-ügyfeleink az ismert AWS- és GCP-felhőkben, illetve ritkábban a Linux-közösség számára az Azure-ban – általában a Kubecost által támogatott összes platformon. Egy részüknél mi magunk számoljuk ki a klaszteren belüli szolgáltatások költségeit (a Kubecost által használt módszerhez hasonló módszerrel), valamint figyeljük az infrastrukturális költségeket és igyekszünk optimalizálni azokat. Ezért logikus, hogy érdeklődtünk az ilyen feladatok automatizálásának lehetősége iránt.
A fő Kubecost-modul forráskódja a nyílt forráskódú licenc (Apache License 2.0) feltételei szerint nyitva áll. Szabadon használható, és a rendelkezésre álló funkcióknak elegendőnek kell lenniük kis projektekhez. Az üzlet azonban üzlet: a termék többi része le van zárva, használhatja fizetett előfizetések, ami egyben kereskedelmi támogatást is jelent. Emellett a szerzők ingyenes licencet kínálnak kis klaszterekhez (1 klaszter 10 csomóponttal - a cikk írása során ez a limit 20 csomópontra bővült), vagy 1 hónapos próbaidőszakot teljes kapacitással.
Hogyan működik minden
Tehát a Kubecost fő része az alkalmazás költség-modell, Go-ban írva. A teljes rendszert leíró Helm diagramot hívják költségelemző és a lényege egy költségmodell összeállítása Prometheusszal, Grafanával és számos műszerfallal.
Általánosságban elmondható, hogy a költségmodellnek saját webes felülete van, amely táblázatos formában grafikonokat és részletes költségstatisztikát, valamint természetesen költségoptimalizálási tippeket jelenít meg. A Grafana-ban bemutatott műszerfalak a Kubecost fejlesztésének egy korábbi szakaszát képezik, és nagyjából ugyanazokat az adatokat tartalmazzák, mint a költségmodell, kiegészítve azokat a szokásos statisztikával a CPU/memória/hálózat/lemezterület felhasználásáról a fürtben és összetevőiben. .
Hogyan működik a Kubecost?
A költségmodell a felhőszolgáltatók API-ján keresztül kapja meg a szolgáltatások árait.
Továbbá a csomópont vastípusától és a régiótól függően a csomópontonkénti költség kiszámításra kerül.
A csomópontok működtetésének költsége alapján minden egyes levéldoboz költséget kap óránként CPU-használatonként, gigabájtnyi memóriánként és óránként gigabájtnyi tárolt adatonként – attól függően, hogy melyik csomóponton fut, vagy a tároló osztályától függően.
Az egyes pod-ok üzemeltetési költsége alapján számítják ki a fizetést a névterekre, szolgáltatásokra, telepítésekre és StatefulSetekre.
A statisztikák kiszámítása a kube-state-metrics és a node-exporter által biztosított metrikák segítségével történik.
Fontos figyelembe venni, hogy a Kubecost alapértelmezés szerint csak a Kubernetesben elérhető erőforrásokat számolja. A fürtben nem szereplő külső adatbázisok, GitLab-kiszolgálók, S3-tárolók és egyéb szolgáltatások (még akkor sem, ha ugyanabban a felhőben találhatók) nem láthatók számára. Bár a GCP és az AWS esetében hozzáadhatja szolgáltatásfiókjainak kulcsait, és mindent együtt számíthat ki.
Telepítés
A Kubecost megköveteli:
Kubernetes 1.8 és újabb verzió;
kube-state-metrics;
Prométheusz;
csomópont-exportőr.
Történt, hogy klasztereinkben ezek a feltételek előre teljesültek, így kiderült, hogy elég csak a megfelelő végpontot megadni a Prometheus eléréséhez. A hivatalos kubecost Helm diagram azonban mindent tartalmaz, ami a csupasz klaszteren való futtatáshoz szükséges.
A Kubecost telepítésének többféle módja van:
pontban leírt szabványos telepítési mód utasítás a fejlesztő webhelyén. Kötelező adja hozzá a költségelemző tárat a Helmhez, majd telepítse a diagramot. Nincs más hátra, mint továbbítani a portot, és manuálisan (kubectl-en keresztül) és/vagy a költségmodell webes felületén keresztül beállítani a kívánt állapotba a beállításokat.
Ezt a módszert még nem is próbáltuk, mivel nem használunk harmadik féltől származó kész konfigurációkat, de jó „próbáld ki magad” opciónak tűnik. Ha a rendszerelemek egy része már telepítve van, vagy további finomhangolást szeretne, jobb, ha a második utat választja.
Lényegében használd ugyanaz a diagram, de konfigurálja és telepítse saját maga bármilyen kényelmes módon.
Mint már említettük, a kubecost mellett ez a diagram Grafana és Prometheus diagramokat is tartalmaz, amelyek tetszés szerint testreszabhatók.
A diagramon elérhető values.yaml a költségelemző számára lehetővé teszi a következők konfigurálását:
a telepítendő költségelemző összetevők listája;
a Prometheus végpontja (ha már van ilyen);
tartományok és egyéb belépési beállítások a költségmodell és a Grafana számára;
megjegyzések hüvelyekhez;
állandó tároló használatának szükségessége és mérete.
Az elérhető konfigurációs opciók teljes listája leírásokkal a következő helyen érhető el dokumentáció.
Mivel a kubecost az alapverziójában nem korlátozhatja a hozzáférést, azonnal be kell állítania az alapvető hitelesítést a webpanelen.
megállapítása csak a rendszermag - költség-modell. Ehhez telepítenie kell a Prometheust a klaszterbe, és meg kell adnia a cím megfelelő értékét a változóban. prometheusEndpoint Helm számára. Ezt követően - jelentkezzen YAML konfigurációk készlete a klaszterben.
Ismét manuálisan kell hozzáadnia az Ingress-t az basic-auth segítségével. Végül hozzá kell adnia egy szakaszt a költségmodell-mutatók összegyűjtésére extraScrapeConfigs a Prometheus konfigurációban:
Teljes telepítéssel rendelkezésünkre áll a kubecost és a Grafana webpanel műszerfalkészlettel.
Összköltsége, amely a főképernyőn jelenik meg, valójában az erőforrások havi becsült költségét mutatja. Ez kiszámítható ár, amely tükrözi a klaszter használatának költségét (havonta) az erőforrás-felhasználás aktuális szintjén.
Ez a mérőszám inkább a költségek elemzésére és azok optimalizálására szolgál. Nem túl kényelmes megnézni az absztrakt július teljes költségét kubecostban: muszáj lesz menj a számlázáshoz. De láthatja a költségeket névterek, címkék és sorok szerinti bontásban 1/2/7/30/90 napra, amit a számlázás soha nem fog megmutatni.
Apropó címkéket. Azonnal menjen a beállításokhoz, és állítsa be a címkék nevét, amelyeket további kategóriákként fog használni a költségek csoportosításához:
Bármilyen címkét felakaszthat rájuk – kényelmes, ha már rendelkezik saját címkézőrendszerrel.
Ugyanitt módosíthatja annak az API-végpontnak a címét, amelyhez a költségmodell csatlakozik, módosíthatja a kedvezmény mértékét a GCP-ben, és saját árat állíthat be az erőforrásokhoz és a pénznemhez a mérésükhöz (valamilyen oknál fogva a funkció nem befolyásolja a teljes költséget).
A Kubecost sokféle képet mutathat problémák a klaszterben (sőt veszély esetén riaszt). Sajnos az opció nem konfigurálható, ezért ha vannak fejlesztői környezetei és használja őket, akkor folyamatosan valami ilyesmit fog látni:
Fontos eszköz - Klaszter megtakarítás. Méri a podok aktivitását (erőforrás-fogyasztást, beleértve a hálózatiakat is), és azt is kiszámolja, hogy mennyi pénzt és min spórolhatsz.
Úgy tűnhet, hogy az optimalizálási tippek elég kézenfekvőek, de a tapasztalatok azt mutatják, hogy van még mit nézni. Elsősorban a podok hálózati tevékenységét figyelik (a Kubecost az inaktívakra javasolja figyelni), összehasonlítja a kért és a tényleges memória- és CPU-fogyasztást, valamint a fürtcsomópontok által használt CPU-t (több csomópont összecsukását javasolja), lemezt terhelés és még pár tucat paraméter.
Mint minden optimalizálási probléma esetében, a Kubecost-adatokon alapuló erőforrások optimalizálásához a következőkre van szükség: óvatosan kezelje. A Cluster Savings például csomópontok törlését javasolja, azt állítva, hogy ez biztonságos, de nem veszi figyelembe a csomópontválasztók és a más csomópontokon nem elérhető szennyeződések jelenlétét a rájuk telepített podokban. És általában még a termék szerzői is saját magukban friss cikk (egyébként nagyon hasznos lehet azoknak, akiket érdekel a projekt témája) ajánlott nem kapkodni a költségoptimalizálással, hanem átgondoltan közelíteni a kérdéshez.
Eredményei
A kubecost egy hónapos használata után néhány projekten megállapíthatjuk, hogy érdekes (és könnyen megtanulható és telepíthető) eszköz a Kubernetes-fürtökhöz használt felhőszolgáltatók szolgáltatásai költségeinek elemzésére és optimalizálására. A számítások nagyon pontosnak bizonyulnak: kísérleteinkben egybeestek azzal, amit a szolgáltatók ténylegesen igényeltek.
Vannak árnyoldalai is: vannak nem kritikus hibák, és helyenként a funkcionalitás nem fedi le az egyes projektekre jellemző igényeket. Ha azonban gyorsan meg kell értenie, hová megy a pénz, és mit lehet „lefaragni” annak érdekében, hogy a felhőszolgáltatások számláját következetesen 5-30%-kal csökkentsük (a mi esetünkben ez történt), ez egy nagyszerű lehetőség .