Надгледање ресурса Кубернетес кластера

Надгледање ресурса Кубернетес кластера

Створио сам Кубе Еагле - извозника Прометеја. Испоставило се да је то кул ствар која помаже да се боље разумеју ресурси малих и средњих кластера. На крају сам уштедео стотине долара јер сам изабрао праве типове машина и конфигурисао ограничења ресурса апликације за радна оптерећења.

Рећи ћу вам о предностима Кубе Еагле, али прво ћу објаснити шта је изазвало гужву и зашто је био потребан квалитетан надзор.

Управљао сам са неколико кластера од 4–50 чворова. Сваки кластер садржи до 200 микросервиса и апликација. Да би се боље искористио постојећи хардвер, већина имплементација је конфигурисана са брзим РАМ и ЦПУ ресурсима. На овај начин, подови могу узети расположиве ресурсе ако је потребно, а да истовремено не ометају друге апликације на овом чвору. Па, зар није сјајно?

И иако је кластер трошио релативно мало ЦПУ-а (8%) и РАМ-а (40%), стално смо имали проблема са подовима који су били преузети када су покушавали да доделе више меморије него што је било доступно на чвору. Тада смо имали само једну контролну таблу за надгледање Кубернетес ресурса. Овако:

Надгледање ресурса Кубернетес кластера
Графана контролна табла само са цАдвисор метриком

Са таквим панелом, није проблем видети чворове који једу много меморије и ЦПУ-а. Проблем је схватити шта је разлог. Да би се подови задржали на месту, могли би се, наравно, поставити загарантовани ресурси за све подове (захтевани ресурси једнаки ограничењу). Али ово није најпаметнија употреба хардвера. Кластер је имао неколико стотина гигабајта меморије, док су неки чворови били гладни, док је другима остало 4–10 ГБ у резерви.

Испоставило се да је Кубернетес планер неравномерно расподелио оптерећење на расположиве ресурсе. Кубернетес планер узима у обзир различите конфигурације: афинитет, правила о недостатку и толеранцији, бираче чворова који могу ограничити доступне чворове. Али у мом случају није било ништа слично, а подови су планирани у зависности од захтеваних ресурса на сваком чвору.

За под је изабран чвор који има највише слободних ресурса и који задовољава услове захтева. Открили смо да се тражени ресурси на чворовима не поклапају са стварном употребом, и ту су Кубе Еагле и његове могућности праћења ресурса прискочиле у помоћ.

Скоро све Кубернетес кластере пратим само са Извозник чворова и метрика државе Кубе. Ноде Екпортер пружа статистику о употреби И/О и диска, ЦПУ-а и РАМ-а, док Кубе Стате Метрицс приказује метрику Кубернетес објеката као што су захтеви и ограничења ЦПУ-а и меморијских ресурса.

Морамо да комбинујемо метрику коришћења са метриком захтева и ограничења у Графани и тада ћемо добити све информације о проблему. Ово звучи једноставно, али ова два алата заправо различито именују ознаке, а неки показатељи уопште немају ознаке метаподатака. Кубе Еагле све ради сам и панел изгледа овако:

Надгледање ресурса Кубернетес кластера

Надгледање ресурса Кубернетес кластера
Кубе Еагле контролна табла

Успели смо да решимо многе проблеме са ресурсима и уштедимо опрему:

  1. Неки програмери нису знали колико ресурса је потребно микросервисима (или се једноставно нису трудили). Није било начина да пронађемо погрешне захтеве за ресурсе - за ово морамо да знамо потрошњу плус захтеве и ограничења. Сада виде Прометхеус метрике, прате стварну употребу и прилагођавају захтеве и ограничења.
  2. ЈВМ апликације заузимају онолико РАМ-а колико могу да поднесу. Сакупљач смећа ослобађа меморију само када се користи више од 75%. А пошто већина сервиса има распрснуту меморију, увек је била заузета ЈВМ-ом. Стога су све ове Јава услуге јеле много више РАМ-а него што се очекивало.
  3. Неке апликације су захтевале превише меморије, а Кубернетес планер није дао ове чворове другим апликацијама, иако су у ствари били слободнији од других чворова. Један програмер је случајно додао додатну цифру у захтеву и зграбио велики комад РАМ-а: 20 ГБ уместо 2. Нико није приметио. Апликација је имала 3 реплике, тако да су погођена чак 3 чвора.
  4. Увели смо ограничења ресурса, репрограмирали подове са исправним захтевима и добили идеалну равнотежу коришћења хардвера у свим чворовима. Неколико чворова је могло бити потпуно затворено. А онда смо видели да имамо погрешне машине (оријентисане на ЦПУ, а не на меморију). Променили смо тип и избрисали још неколико чворова.

Резултати

Са ресурсима који се могу распршити у кластеру, ефикасније користите расположиви хардвер, али Кубернетес планер распоређује подове на основу захтева за ресурсе, а то је преоптерећено. Да бисте убили две муве једним ударцем: да бисте избегли проблеме и максимално искористили ресурсе, потребан вам је добар надзор. Због тога ће бити од користи Кубе Еагле (Прометеј извозник и Графана контролна табла).

Извор: ввв.хабр.цом

Додај коментар