DevOps

Kubernetes költségláthatóság: ki fizeti a namespace-t?

A megosztott klaszter költségallokációja csak címkézéssel és showback-kel válik igazságossá. Hogyan tedd láthatóvá, melyik csapat mennyit fogyaszt a közös klaszteren?

Röviden: A megosztott klaszter költségallokációja csak címkézéssel és showback-kel válik igazságossá. Hogyan tedd láthatóvá, melyik csapat mennyit fogyaszt a közös klaszteren?

A megosztott Kubernetes-klaszter üzemeltetési szempontból hatékony: több csapat és sok szolgáltatás osztozik ugyanazon az infrastruktúrán, jó kihasználtsággal. Költségszempontból viszont fekete doboz: a klaszter számlája egyetlen tétel, amiről nem derül ki, melyik csapat, melyik szolgáltatás mennyit fogyasztott. A kérdés — „ki fizeti ezt a namespace-t?” — meglepően nehéz megválaszolni, ha nincs mögötte tudatos költségláthatóság.

Miért nehéz a Kubernetes-költség?

A nehézség onnan jön, hogy a klaszter erőforrásai (a mögöttes gépek) meg vannak osztva. A számla a gépekről szól, a fogyasztás viszont a rájuk telepített, sok különböző tulajdonoshoz tartozó workloadoké. A felhő számlázása nem látja ezt a belső felosztást — csak a klasztert, mint egészet. A leképezést a klaszteren belüli fogyasztásról a tulajdonosokra neked kell megoldanod.

Az alap: címkézés és névtér-fegyelem

Mint minden költségallokációnál, itt is a címkézés a fundamentum — csak Kubernetes-specifikus formában. A workloadokat következetes címkékkel (label) kell ellátni: melyik csapat, melyik termék, melyik környezet. A namespace-ek tiszta, tulajdonoshoz köthető felosztása pedig strukturális alapot ad az allokációnak.

  1. Minden workload kapjon következetes tulajdonos- és termékcímkét.
  2. A namespace-ek tükrözzék a szervezeti/tulajdonosi felosztást.
  3. A kényszerítés automatikus legyen — címke nélküli workload ne mehessen élesre.

Request vs. usage: a rejtett igazságtalanság

A Kubernetesben a workloadok erőforrást foglalnak (request) és ténylegesen használnak (usage) — és a kettő gyakran nagyon eltér. Ha csak a tényleges használatot allokálod, akkor a túlfoglaló csapatok „ingyen” blokkolnak kapacitást. Ha csak a foglalást, akkor a hatékonyakat bünteted. A jó allokáció mindkettőt figyelembe veszi, és ösztönzi a reális foglalást.

Showback: a viselkedésváltozás motorja

Amint a fogyasztás láthatóvá válik csapatonként, jön a showback: mindenki látja, mennyit fogyaszt. Ez önmagában elindítja a viselkedésváltozást — a csapatok elkezdik reálisan méretezni a foglalásaikat, leállítják a felesleges workloadokat. A cél nem feltétlenül a valós átterhelés (chargeback), hanem a láthatóság, ami felelősségtudatot teremt.

A közös infrastruktúra felosztása

Marad egy nehéz kérdés: a klaszter közös költségei (a vezérlősík, a megosztott szolgáltatások, a kihasználatlan tartalék kapacitás), amit egyetlen csapat sem birtokol. Ezt valamilyen igazságos kulcs szerint kell szétosztani — például a fogyasztás arányában —, és fontos, hogy a felosztás módja átlátható és elfogadott legyen, különben vita lesz belőle. A tökéletes pontosság itt kevésbé fontos, mint az elfogadott, következetes szabály.

A request vs. usage kérdés

A Kubernetesben a workloadok erőforrást foglalnak (request) és ténylegesen használnak (usage) — és a kettő gyakran nagyon eltér. Ha csak a tényleges használatot allokálod, akkor a túlfoglaló csapatok "ingyen" blokkolnak kapacitást. Ha csak a foglalást, akkor a hatékonyakat bünteted. A jó allokáció mindkettőt figyelembe veszi, és ösztönzi a reális foglalást.

Ez a szétválasztás teszi igazságossá a költségmegosztást: egy csapat, ami sokat foglal, de keveset használ, más beszélgetést érdemel, mint aki a foglalását tényleg kihasználja.

A címkézés és a showback

Mint minden költségallokációnál, itt is a címkézés a fundamentum — Kubernetes-specifikus formában. A workloadokat következetes címkékkel kell ellátni (melyik csapat, termék, környezet), és a namespace-ek tiszta, tulajdonoshoz köthető felosztása strukturális alapot ad. Amint a fogyasztás láthatóvá válik csapatonként, jön a showback: mindenki látja, mennyit fogyaszt.

  1. Következetes tulajdonos- és termékcímkék minden workloadon.
  2. Tiszta, tulajdonoshoz köthető namespace-felosztás.
  3. Automatikus kényszerítés: címke nélküli workload ne mehessen élesre.

A közös költségek felosztása

Marad egy nehéz kérdés: a klaszter közös költségei (a vezérlősík, a megosztott szolgáltatások, a kihasználatlan tartalék kapacitás), amit egyetlen csapat sem birtokol. Ezt valamilyen igazságos kulcs szerint kell szétosztani — például a fogyasztás arányában —, és fontos, hogy a felosztás módja átlátható és elfogadott legyen. A tökéletes pontosság itt kevésbé fontos, mint a következetes, elfogadott szabály, ami nem szül vitát.

Mit jelent ez neked?

A megosztott Kubernetes-klaszter költsége csak akkor válik igazságossá és kezelhetővé, ha láthatóvá teszed, ki mennyit fogyaszt. Az alap a következetes címkézés és a tiszta namespace-felosztás, automatikusan kikényszerítve. Nézd a foglalást és a tényleges használatot is, hogy az allokáció igazságos legyen, és vezess be showbackot — a puszta láthatóság elindítja a reálisabb erőforrás-gazdálkodást. A közös költségeket oszd fel átlátható, elfogadott kulcs szerint. A cél, hogy a „ki fizeti a namespace-t?” kérdésre végre legyen válasz.