Eftirlit með Kubernetes klasaauðlindum

Eftirlit með Kubernetes klasaauðlindum

Ég bjó til Kube Eagle - Prometheus útflytjanda. Það reyndist flott hlutur sem hjálpar til við að skilja betur auðlindir lítilla og meðalstórra klasa. Að lokum sparaði ég hundruð dollara vegna þess að ég valdi réttar vélagerðir og stillti tilfangamörk forrita fyrir vinnuálag.

Ég skal segja þér frá kostunum Kube Eagle, en fyrst skal ég útskýra hvað olli lætin og hvers vegna þörf var á hágæða eftirliti.

Ég stjórnaði nokkrum klösum með 4–50 hnútum. Hver þyrping inniheldur allt að 200 örþjónustur og forrit. Til að nýta betur núverandi vélbúnað voru flestar dreifingar stilltar með sprengihæfu vinnsluminni og örgjörvaauðlindum. Þannig geta fræbelgir tekið tiltæk úrræði ef nauðsyn krefur og á sama tíma ekki truflað önnur forrit á þessum hnút. Jæja, er það ekki frábært?

Og þó að þyrpingin hafi neytt tiltölulega lítið af örgjörva (8%) og vinnsluminni (40%), áttum við stöðugt í vandræðum með að belg hafi verið fyrirbyggt þegar þeir reyndu að úthluta meira minni en var tiltækt á hnútnum. Þá vorum við aðeins með eitt mælaborð til að fylgjast með Kubernetes auðlindum. Svona:

Eftirlit með Kubernetes klasaauðlindum
Grafana mælaborð með cAdvisor mæligildum eingöngu

Með slíku spjaldi er ekki vandamál að sjá hnúta sem borða mikið af minni og örgjörva. Vandamálið er að komast að því hver ástæðan er. Til að halda belgunum á sínum stað gæti maður auðvitað sett upp tryggðar auðlindir á öllum belgjum (beðið um auðlindir jafnháar mörkunum). En þetta er ekki snjöllasta notkun vélbúnaðar. Þyrpingin hafði nokkur hundruð gígabæta af minni, á meðan sumir hnútar voru sveltir, en aðrir áttu 4–10 GB eftir í varasjóði.

Það kemur í ljós að Kubernetes tímaáætlunin dreifði vinnuálagi ójafnt yfir tiltæk tilföng. Kubernetes tímaáætlunin tekur tillit til mismunandi stillinga: skyldleika, tamt og umburðarlyndi, hnútavalara sem geta takmarkað tiltæka hnúta. En í mínu tilfelli var ekkert svoleiðis og belgirnir voru skipulagðir eftir því hvaða úrræði var beðið um á hverjum hnút.

Hnúturinn sem hefur mest ókeypis úrræði og uppfyllir beiðniskilyrði var valinn fyrir hólfið. Við komumst að því að umbeðnar auðlindir á hnútunum passa ekki við raunverulega notkun og þetta er þar sem Kube Eagle og auðlindaeftirlitsgeta þess kom til bjargar.

Ég er með næstum alla Kubernetes þyrpinga eingöngu með Hnútaútflytjandi и Kube ástandsmælingar. Node Exporter veitir tölfræði um I/O og disk, örgjörva og vinnsluminni notkun, á meðan Kube State Metrics sýnir Kubernetes hlutmælingar eins og beiðnir og CPU og minnisauðlindamörk.

Við þurfum að sameina notkunarmælingar við beiðnir og takmarkanir í Grafana og þá fáum við allar upplýsingar um vandamálið. Þetta hljómar einfalt, en tólin tvö heita í raun merkimiðunum á annan hátt og sumar mælingar hafa alls ekki nein lýsigagnamerki. Kube Eagle gerir allt sjálfur og spjaldið lítur svona út:

Eftirlit með Kubernetes klasaauðlindum

Eftirlit með Kubernetes klasaauðlindum
Kube Eagle mælaborð

Okkur tókst að leysa mörg vandamál með auðlindum og spara búnað:

  1. Sumir forritarar vissu ekki hversu mörg tilföng örþjónustur þurftu (eða einfaldlega nenntu því ekki). Það var engin leið fyrir okkur að finna rangar beiðnir um auðlindir - til þess þurfum við að vita neyslu ásamt beiðnum og takmörkunum. Nú sjá þeir Prometheus mælikvarða, fylgjast með raunverulegri notkun og stilla beiðnir og takmörk.
  2. JVM forrit taka eins mikið vinnsluminni og þau geta séð. Sorphirðarinn losar aðeins um minni þegar meira en 75% er notað. Og þar sem flestar þjónustur hafa burstable minni, var það alltaf upptekið af JVM. Þess vegna var öll þessi Java þjónusta að éta upp miklu meira vinnsluminni en búist var við.
  3. Sum forrit báðu um of mikið minni og Kubernetes tímaáætlunin gaf þessum hnútum ekki til annarra forrita, jafnvel þó að þeir væru í raun frjálsari en aðrir hnútar. Einn verktaki bætti óvart aukastaf í beiðninni og greip stórt vinnsluminni: 20 GB í stað 2. Enginn tók eftir því. Forritið hafði 3 eftirlíkingar, þannig að allt að 3 hnútar urðu fyrir áhrifum.
  4. Við kynntum auðlindatakmörk, endurskiptuðum belg með réttum beiðnum og fengum kjörið jafnvægi á vélbúnaðarnotkun á öllum hnútum. Nokkrum hnútum hefði getað verið lokað með öllu. Og svo sáum við að við vorum með rangar vélar (CPU stilla, ekki minni stilla). Við breyttum gerðinni og eyddum nokkrum hnútum í viðbót.

Niðurstöður

Með sprengihæfum tilföngum í þyrpingunni notarðu tiltækan vélbúnað á skilvirkari hátt, en Kubernetes tímaáætlunin skipuleggur belg byggt á beiðnum um tilföng, og þetta er mikið. Til að slá tvær flugur í einu höggi: til að forðast vandamál og nýta auðlindir til hins ýtrasta þarf gott eftirlit. Þess vegna mun það vera gagnlegt Kube Eagle (Prometheus útflytjandi og Grafana mælaborð).

Heimild: www.habr.com

Bæta við athugasemd