JĂ€lgime Kubernetes klastri ressursse

JĂ€lgime Kubernetes klastri ressursse

Loomisin Kube Eagle'i – Prometheuse eksportija. Selgus, et see on lahe tööriist, mis aitab paremini mĂ”ista vĂ€ikeste ja keskmise suurusega klastrite ressursse. LĂ”ppkokkuvĂ”ttes sÀÀsin mitusada dollarit, sest valisin Ă”iged masinatĂŒĂŒbid ja kohandasin rakenduste ressursipiirangud vastavalt töökoormusele.

RÀÀgin eeliste kohta Kube Eagle, aga enne seletan, mis probleemid tekkisid ja miks oli vajalik kvaliteetne vaatlus.

Haldasin mitut klastri 4–50 sĂ”lmega. Igas klastris oli kuni 200 mikroteenust ja rakendust. Et kasutada olemasolevat riistvara tĂ”husamalt, olid enamik juurutusi seadistatud burstable-mĂ€luga ja CPU ressurssidega. Nii saavad podid vĂ”tta vajadusel saadaval olevaid ressursse, segamata samas teisi rakendusi sellel sĂ”lmel. Kas pole tore?

Ja kuigi klaster tarbis suhteliselt vĂ€he CPU-d (8%) ja mĂ€lukuunde (40%), tekkis meil pidevalt probleeme podide vĂ€ljasaatmisega, kui nad ĂŒritasid eraldada rohkem mĂ€lu, kui sĂ”lmelt saadaval oli. Siis oli meil ainult ĂŒks paneel Kubernetes ressursside jĂ€lgimiseks. Selline:

JĂ€lgime Kubernetes klastri ressursse
Grafana paneel ainult cAdvisori mÔÔdikute jaoks

Sellise paneeliga ei ole probleem nĂ€ha node'e, mis söövad palju mĂ€lu ja CPU-d. Probleem on mĂ”ista, mis on pĂ”hjus. Et podid paigal pĂŒsiksid, oleks muidugi vĂ”imalik seadistada garanteeritud ressursid kĂ”igile podidele (taotletud ressursid vĂ”rduvad limiidiga). Kuid see ei ole kĂ”ige arukam raua kasutamine. Klusteril oli mitu sada gigabaiti mĂ€lu, samas kui mĂ”ned node'id nĂ€lgisid ja teistel jĂ€i alles 4–10 GB.

LÔppkokkuvÔttes jaotab Kubernetes'e planeerija töökoormusi saadaval olevate ressursside vahel ebavÔrdselt. Kubernetes'e planeerija arvestab erinevaid konfiguratsioone: affinity reeglid, taints ja tolerations, node'i selektorid, mis vÔivad piirata saadaval olevate node'ide hulka. Kuid minu juhul ei olnud midagi sellist, ning podid planeeriti sÔltuvalt taotletud ressurssidest igas node'is.

Podile valiti node, millel oli kÔige rohkem vabu ressursse ja mis rahuldas taotluse tingimusi. Meil oli olukord, kus taotletud ressursid node'ides ei vastanud tegelikule kasutusele, ja siia tuli appi Kube Eagle ja selle ressursimonitorimise vÔimalused.

Mul on peaaegu kÔik Kubernetes klastrid jÀlgitud ainult Node exporteri ja Kube State Metrics. Node Exporter annab statistikat sisendi, vÀljundi ja diskikasutuse, CPU ja mÀluga, samas Kube State Metrics nÀitab Kubernetes objektide metrikat, nagu CPU ja mÀlu ressursside pÀringud ja limiidid.

Peame ĂŒhendama kasutusmÔÔdikud pĂ€ringute ja limiitide mÔÔdikute jĂ€rgi Grafanas ning siis saame kogu teabe probleemist. See kĂ”lab lihtsalt, kuid tegelikult nimetatakse nende kahe tööriista sildid erinevalt ja mĂ”nedel mÔÔdikutel pole ĂŒldse metaandmete silte. Kube Eagle teeb kĂ”ik ise ja paneel nĂ€eb vĂ€lja selline:

JĂ€lgime Kubernetes klastri ressursse

JĂ€lgime Kubernetes klastri ressursse
Kube Eagle'i seirepaneel

Me oleme suutnud lahendada palju ressursiprobleeme ja sÀÀsta seadmeid:

  1. MĂ”ned arendajad ei teadnud, kui palju ressursse mikroteenused vajavad (vĂ”i lihtsalt ei viitsinud). Meil polnud midagi, millega leida vale ressursipĂ€ringud - selleks on vaja teadlikkust tarbimisest pluss pĂ€ringud ja limiidid. NĂŒĂŒd nad nĂ€evad Prometheuse mÔÔdiku, jĂ€lgivad tegelikku kasutust ja kohandavad pĂ€ringud ning limiidid.
  2. JVM-rakendused kasutavad nii palju mĂ€lu, kui suudavad. PrĂŒgikorjaja vabastab mĂ€lu ainult siis, kui ĂŒle 75% on kasutusel. Kuna enamik teenuseid kasutab burstable mĂ€lu, oli JVM alati selle hĂ”ivanud. SeetĂ”ttu kasutasid kĂ”ik need Java-teenused palju rohkem mĂ€lu, kui oli oodata.
  3. MĂ”ned rakendused kĂŒsisid liiga palju mĂ€lu, ning Kubernetes'i ajakava ei andnud neid sĂ”lmi teistele rakendustele, kuigi tegelikult olid need vabamad kui teised sĂ”lmed. Üks arendaja lisas kogemata taotlusse liigse numbri ja hĂ”ivas suure hulga mĂ€lu: 20 GB asemel 2. Keegi ei mĂ€rganud. Rakendusel oli 3 repliiki, nii et kannatasid lausa 3 sĂ”lme.
  4. Seadsime ressurssidepiirangud, ĂŒmberplaneerisime podid Ă”ige taotlusega ja saavutatud ideaalne tasakaal raua kasutamisel kĂ”igis sĂ”lmedes. MĂ”ne sĂ”lme oleks isegi saanud sulgeda. Siis nĂ€gime, et meil on vale masin (suunitletud CPU, mitte mĂ€lu suunas). Vahetasime tĂŒĂŒpi ja kustutasime veel mĂ”ned sĂ”lmed.

KokkuvÔte

Burstable ressurssidega klastris kasutate olemasolevat riistvara tĂ”husamalt, kuid Kubernetes'i planeerija planeerib podid ressursi nĂ”udmiste alusel, mis vĂ”ib pĂ”hjustada probleeme. Kuidas ĂŒhte saamata jĂ€tta: vĂ€ltida probleeme ja kasutada ressursse maksimaalselt — vajalik on kvaliteetne jĂ€lgimine. Selleks sobib Kube Eagle (Prometheuse eksportija ja Grafana juhtpaneel).

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster