Kubernetes klastrite ressursside jÀlgimine

Kubernetes klastrite ressursside jÀlgimine

Ma lĂ”in Kube Eagle'i – Prometheus'e eksportija. See on lahe tööriist, mis aitab paremini mĂ”ista vĂ€ikeste ja keskmiste klasside ressursse. LĂ”ppkokkuvĂ”ttes sÀÀstsin ma mitusada dollarit, kuna suutsin leida Ă”iged masina tĂŒĂŒbid ja seadistada rakenduste ressursipiirangud vastavalt töökoormusele.

RÀÀgin eelistest Kube Eagle, kuid kÔigepealt selgitan, mis probleemid tekkisid ja miks oli vajalik kvaliteetne jÀlgimine.

Haldasin mĂ”nda klassi, kus oli 4–50 sĂ”lme. Igas klassis oli kuni 200 mikroteenust ja rakendust. Et tĂ”husamalt kasutada olemasolevat riistvara, olid enamus kasutuselevĂ”tteid seadistatud burstable-mĂ€lu ja CPU ressurssidega. Nii saavad pood vĂ”tta kasutusele saadaval olevad ressursid, kui neid on vaja, ja seejuures ei sega nad teisi rakendusi selle sĂ”lme peal. Kas see pole tore?

Ja kuigi klass kasutas suhteliselt vĂ€he CPU-d (8%) ja mĂ€lu (40%), tekkis meil pidevalt probleeme poodide vĂ€ljatĂ”rjumisega, kui need pĂŒĂŒdsid eraldada rohkem mĂ€lu, kui sĂ”lmes oli saadaval. Meil oli tol ajal ainult ĂŒks paneel Kubernetes'e ressursside jĂ€lgimiseks. Selline:

Kubernetes klastrite ressursside jÀlgimine
Grafana paneel ainult cAdvisor'i mÔÔdikute jaoks

Sellega paneeliga ei ole probleem nĂ€ha sĂ”lmi, mis tarbivad palju mĂ€lu ja CPU-d. Probleem on aru saada, mis on pĂ”hjuseks. Et potid ikka paigal pĂŒsiksid, vĂ”iks kĂ”ikides pod'des tĂ”epoolest seadistada tagatud ressursid (taotletud ressursid on vĂ”rdsed piiranguga). Kuid see ei ole ruumi kĂ”ige nutikam kasutamine. Klassis oli mitusada gigabaiti mĂ€lu, kuid mĂ”ned sĂ”lmed nĂ€lgisid, samas kui teistel jĂ€i ĂŒle 4–10 GB.

Tuleb vÀlja, et Kubernetes'e planeerija jagas töökoormusi saadaval olevate ressursside vahel ebavÔrdselt. Kubernetes'e planeerija arvesse vÔtab erinevaid konfiguratsioone: affinity reeglid, taints ja tolerantsid, sÔlmede valijad, mis vÔivad piirata saadaval olevaid sÔlmi. Kuid minu puhul ei olnud midagi sellist, ja pod'd planeeriti vastavalt igas sÔlmes taotletud ressurssidele.

Pod'ile valiti sÔlm, kus oli kÔige rohkem vabu ressursse ja mis vastas taotluse tingimustele. LÔpuks selgus, et sÔlmedes taotletud ressursid ei kattunud tegeliku kasutusega, ja siin tuli appi Kube Eagle ning tema ressursside jÀlgimisvÔimalused.

Peaaegu kÔik minu Kubernetes'i klassid jÀlgiti ainult Node exporter ja Kube State MetricsNode Exporter annab statistikat sisendi, vÀljundi ja ketta kasutamise, CPU ja RAM-i kohta, samas kui Kube State Metrics nÀitab Kubernetes'i objektide mÔÔdikuid, nÀiteks CPU ja mÀlu ressursi nÔudeid ja limiite.

Peame ĂŒhendama kasutuse mÔÔdikud nĂ”udluse ja limiitidega Grafanas, et saada kogu teave probleemist. Tundub lihtne, kuid tegelikult on nende kahe tööriista mĂ€rgistamine erinev ning mĂ”nel mÔÔdikul pole isegi metaandmete sildid. Kube Eagle teeb kĂ”ik ise ja paneel nĂ€eb vĂ€lja selline:

Kubernetes klastrite ressursside jÀlgimine

Kubernetes klastrite ressursside jÀlgimine
Kube Eagle'i jÀlgimispaneel

Oleme suutnud lahendada palju ressursiprobleeme ja sÀÀsta riistvara:

  1. MĂ”ned arendajad ei teadnud, kui palju ressursse mikroteenused vajavad (vĂ”i ei viitsinud sellega tegeleda). Meil polnud vahendeid vale ressursi nĂ”udluse leidmiseks - selleks peab teadma kasutust ning nĂ”udmisi ja limiite. NĂŒĂŒd nad nĂ€evad Prometheuse mÔÔdikuid, jĂ€lgivad tegelikku kasutust ja kohandavad nĂ”udmisi ja limiite.
  2. JVM-i rakendused vĂ”tavad nii palju RAM-i, kui nad saavad. PrĂŒgikoristaja vabastab mĂ€lu ainult siis, kui kasutus ĂŒletab 75%. Kuna enamikul teenustest on mĂ€lu burstable, kasutas JVM alati rohkem mĂ€lu. SeetĂ”ttu tarbisid kĂ”ik need Java-teenused palju rohkem RAM-i, kui oodata oli.
  3. MĂ”ned rakendused kĂŒsisid liiga palju mĂ€lu, ja Kubernetes'i planeerija ei eraldanud neid sĂ”lmede teistele rakendustele, ehkki tegelikult olid nad vabad. Üks arendaja lisas kogemata nĂ”udlusse liigse numbri ja haaras endale suure osa RAM-ist: 20 GB asemel 2. Keegi ei mĂ€rganud. Rakendusel oli 3 replikat, nii et kannatada sai koguni 3 sĂ”lme.
  4. Oleme kehtestanud piirangud ressurssidele, ĂŒmber planeerinud podid Ă”igete nĂ”udmistega ja saavutanud ideaalse tasakaalu raudvara kasutuses kĂ”igis sĂ”lmedes. MĂ”ned sĂ”lmed oleks isegi vĂ”imalik sulgeda. Ja siis nĂ€gime, et meil on valed masinad (CPU-le orienteeritud, mitte mĂ€lule). Muutsime tĂŒĂŒpi ja eemaldasime veel mĂ”ned sĂ”lmed.

Summary

Burstable ressurssidega klastris kasutate paremini olemasolevat riistvara, kuid Kubernetes'i planeerija plaanib podid ressursside nÔudluste alusel, mis on ohtlik. Et kahe kÀrbsega pihta saada: vÀltida probleeme ja kasutada ressursse maksimaalselt, on vajalik hea jÀlgimine. Seda ongi vaja. Kube Eagle (Prometheuse eksportija ja Grafana jÀlgimistahvel).

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster