Sida loo galo ilaha Kubernetes Pod

Sida loo galo ilaha Kubernetes PodAbaalmarinta Tohad

Markaad ka bilaabayso Kubernetes, waa wax caadi ah in la iloobo dejinta agabka weelka. Halkaa marka ay marayso, waa ku filan tahay in la hubiyo in sawirka Docker uu shaqeeyo oo la geyn karo kooxda Kubernetes.

Laakin hadhow arjiga wuxuu u baahan yahay in la geeyo kooxda wax soo saarka oo ay la socoto codsiyo kale. Si aad tan u samayso, waxaad u baahan tahay inaad u qoondayso agabka weelka oo aad hubiso inay ku filan yihiin si aad u kiciso codsiga iyo in codsiyada kale ee socda aysan la kulmi doonin dhibaatooyin.

kooxda Kubernetes aaS ka Mail.ru tarjumay maqaal ku saabsan agabka weelka (CPU & MEM), codsiyada iyo xaddidnaanta ilaha. Waxaad baran doontaa faa'iidooyinka goobahan iyo waxa dhacaya haddii aadan dejin.

Ilaha xisaabinta

Waxaan leenahay laba nooc oo kheyraad ah oo leh cutubyada soo socda:

  • Unug farsameedka dhexe (CPU) - koofiyadaha;
  • Xusuusta (MEM) - bytes.

Khayraadka ayaa loo cayimay weel kasta. Faylka Pod YAML ee soo socda, waxaad ku arki doontaa qayb kheyraad oo ka kooban agabka la codsaday oo xaddidaya:

  • Khayraadka Pod ee la codsaday = wadarta agabka la codsaday ee dhammaan weelasha;
  • Xadka Kheyraadka Pod = Wadarta dhammaan Xadka Kheyraadka Pod.

apiVersion: v1
kind: Pod
metadata:
  name: backend-pod-name
  labels:
    application: backend
spec:
  containers:
    β€” name: main-container
      image: my-backend
      tag: v1
      ports:
      β€” containerPort: 8080
      resources:
        requests:
          cpu: 0.2 # REQUESTED CPU: 200m cores
          memory: "1Gi" # REQUESTED MEM: 1Gi
        limits:
          cpu: 1 # MAX CPU USAGE: 1 core
          memory: "1Gi" # MAX MEM USAGE:  1Gi
    β€” name: other-container
      image: other-app
      tag: v1
      ports:
      β€” containerPort: 8000
      resources:
        requests:
          cpu: "200m" # REQUESTED CPU: 200m cores
          memory: "0.5Gi" # REQUESTED MEM: 0.5Gi
        limits:
          cpu: 1 # MAX CPU USAGE: 1 core
          memory: "1Gi" # MAX MEM USAGE:  1Gi

Tusaalaha Khayraadka la Codsado iyo kuwa xadidan

field resources.requested laga soo bilaabo qeexitaanka Pod waa mid ka mid ah walxaha loo isticmaalo in lagu helo noodhka la rabo. Waxaad horeyba u qorsheyn kartaa keenista Pod. Sidee ku heli kartaa noodh ku habboon?

Kubernetes wuxuu ka kooban yahay dhowr qaybood, oo ay ku jiraan noodhka sare ama noodhka sare (Kubernetes Control Plane). Noodka sayidku waxa uu leeyahay habab dhawr ah: kube-apiserver, kube-controller- maareeyaha iyo kube-jadwalaha.

Nidaamka kube-jadwalaha ayaa mas'uul ka ah dib u eegista galalka cusub ee la sameeyay iyo helitaanka noodhka shaqaalaha ee suurtogalka ah ee ku habboon dhammaan codsiyada pods, oo ay ku jiraan tirada ilaha la codsaday. Liiska noodyada uu helay kube-jadwalaha ayaa la qiimeeyay. Boodhka waxa lagu qorsheeyey budada leh buundooyinka ugu sarreeya.

Sida loo galo ilaha Kubernetes PodHalkee la dhigi doonaa boodhka buluuga ah?

Sawirka waxaad arki kartaa in kube-jadwaluhu uu jadwaleeyo Pod cusub oo guduudan. Kooxda Kubernetes waxay ka kooban tahay laba nood: A iyo B. Sida aad arki karto, kube-scheduler ma ballansan karo Pod on noode A - agabka la heli karo (aan la codsan) kuma habboona codsiyada Pod-guduudan. Marka, 1 GB ee xusuusta uu codsado Pod-ka guduudan kuma habboonaan doono noodhka A, maadaama xusuusta la heli karo ay tahay 0,5 GB. Laakiin noodhka B wuxuu leeyahay ilo ku filan. Natiijo ahaan, jadwalka kube-kube wuxuu go'aansadaa in meesha loo socdo Pod-ka guduudan yahay noodhka B.

Hadda waxaan ognahay sida kheyraadka la codsaday ay u saameeyaan doorashada noode si ay u socodsiiso Pod-ka. Laakin waa maxay saameynta kheyraadka yar?

Xadka kheyraadku waa xuduud aysan CPU/MEM ka gudbi karin. Si kastaba ha ahaatee, kheyraadka CPU waa dabacsanaan, sidaas darteed weelasha gaaray xadka CPU ma keeni doonaan in Pod uu baxo. Taa beddelkeeda, xakamaynta CPU ayaa bilaaban doonta. Haddii xadka isticmaalka MEM la gaaro, weelka waa la joojin doonaa sababtoo ah OOM-Killer oo dib ayaa loo bilaabayaa haddii ay ogolaato nidaamka Dib-u-Start.

Codsaday iyo ilaha ugu badan oo faahfaahsan

Sida loo galo ilaha Kubernetes PodXidhiidhka ilaha ee u dhexeeya Docker iyo Kubernetes

Habka ugu wanaagsan ee lagu sharxi karo sida codsiyada kheyraadka iyo xaddidaadaha kheyraadka u shaqeeyaan waa in la soo bandhigo xiriirka ka dhexeeya Kubernetes iyo Docker. Sawirka kore waxaad ku arki kartaa sida beeraha Kubernetes iyo calamada bilowga Docker ay xiriir la leeyihiin.

Xusuus: codsi iyo xaddidid

containers:
...
 resources:
   requests:
     memory: "0.5Gi"
   limits:
     memory: "1Gi"

Sida kor ku xusan, xusuusta waxaa lagu qiyaasaa bytes. Iyada oo ku saleysan Dukumentiyada Kubernetes, waxaan ku qeexi karnaa xusuusta lambar ahaan. Sida caadiga ah waa tiro ahaan, tusaale ahaan 2678 - taas oo ah, 2678 bytes. Waxa kale oo aad isticmaali kartaa suffixes G ΠΈ Gi, Waxa ugu weyn waa in la xasuusto in aysan u dhigmin. Midka koowaad waa jajab tobanle ka labaadna waa binary. Sida tusaalaha lagu sheegay dukumeentiyada k8s: 128974848, 129e6, 129M, 123Mi - dhab ahaantii waa u dhigma.

Doorashada Kubernetes limits.memory u dhigma calanka --memory ka Docker. Haddii ay dhacdo request.memory Ma jirto falaar loogu talagalay Docker sababtoo ah Docker ma isticmaalo goobtan. Waxaa laga yaabaa inaad weydiiso, tani xitaa lagama maarmaan ma tahay? Haa u baahan Sidii aan horeyba u idhi, goobta ayaa muhiim u ah Kubernetes. Iyadoo lagu salaynayo xogta laga helayo, kube-scheduler ayaa go'aaminaya noodhka loo qorsheeyay Pod-ka.

Maxaa dhacaya haddii aad dejiso xusuusta ku filan codsiga?

Haddii weelku uu gaadhay xadka xusuusta la codsaday, markaa Pod-ka waxaa la dhigayaa koox Pods ah oo joogsata marka aysan jirin xasuus ku filan oo ku jirta noodhka.

Maxaa dhacaya haddii aad dejiso xadka xusuusta mid aad u hooseeya?

Haddii weelku dhaafo xadka xusuusta, waa la joojin doonaa sababtoo ah OOM-Dilay. Oo dib ayuu u bilaabmi doonaa haddii ay suurtogal tahay iyadoo lagu saleynayo RestartPolicy halka qiimaha caadiga ahi yahay Always.

Maxaa dhacaya haddii aadan cayimin xusuusta la codsaday?

Kubernetes waxay qaadan doontaa qiimaha xadka waxayna u dejin doontaa sida qiimaha caadiga ah.

Maxaa dhici kara haddii aadan cayimin xadka xusuusta?

Weelku ma laha wax xannibaad ah, wuxuu isticmaali karaa inta uu rabo xusuusta. Haddii uu bilaabo isticmaalka dhammaan xusuusta la heli karo ee noodhka, markaas OOM ayaa dili doonta. Weelka ayaa markaa dib loo bilaabi doonaa haddii ay suurtogal tahay iyadoo lagu salaynayo Xeerka Dib u Bilowga.

Maxaa dhacaya haddii aadan cayimin xadka xusuusta?

Tani waa xaaladdii ugu xumayd: jadwalku ma garanayo inta agab ee weelku u baahan yahay, taasina waxay sababi kartaa dhibaatooyin halis ah qanjirka. Xaaladdan oo kale, way fiicnaan lahayd in la yeesho xaddidaad ku saabsan booska magaca (waxaa dejiyay LimitRange). Ma jiraan wax xaddidaad ah - Pod-ku ma laha xad, wuxuu isticmaali karaa inta ugu badan ee xusuusta uu rabo.

Haddii xusuusta la codsado ay ka badan tahay noodhka ayaa bixin kara, Pod-ka lama ballansan doono. Waa muhiim in taas la xasuusto Requests.memory - ma aha qiimaha ugu yar. Tani waa sharraxaad qadarka xusuusta ku filan si weelku si joogto ah u socdo.

Inta badan waxaa lagu talinayaa in la dejiyo qiime isku mid ah request.memory ΠΈ limit.memory. Tani waxay hubinaysaa in Kubernetes aanu ballan u dhigi doonin Pod-ka noodhka kaas oo leh xasuus ku filan oo uu ku socodsiiyo Pod-ka laakiin aan ku filnayn inuu socodsiiyo. Maskaxda ku hay: Qorsheynta Kubernetes Pod waxay ku xisaabtamaysaa oo keliya requests.memoryiyo limits.memory kuma xisaabtamo.

CPU: codsi iyo xaddid

containers:
...
 resources:
   requests:
     cpu: 1
   limits:
     cpu: "1200m"

CPU-ga wax walba waa ka yara dhib badan yihiin. Ku noqoshada sawirka xiriirka ka dhexeeya Kubernetes iyo Docker, waad arki kartaa taas request.cpu u dhiganta --cpu-shares, halka limit.cpu u dhigma calanka cpus ee Docker.

CPU-ga uu codsado Kubernetes waxaa lagu dhuftaa 1024, saamiga wareegyada CPU. Haddii aad rabto inaad codsato 1 xudunta buuxda, waa inaad ku dartaa cpu: 1sida kor ka muuqata.

Codsiga kernel buuxa (qayb = 1024) macnaheedu maaha in weelkaagu heli doono. Haddii mashiinka martida loo yahay uu leeyahay hal xudun oo kaliya oo aad ku socoto wax ka badan hal weel, markaa dhammaan weelasha waa inay wadaagaan CPU-ga la heli karo dhexdooda. Sidee tani u dhacdaa? Bal aan eegno sawirka.

Sida loo galo ilaha Kubernetes Pod
Codsiga CPU - Nidaamka Halbeegga ah

Aynu qiyaaso inaad haysato nidaamka martigeliyaha hal xudun u ah weelasha. Hooyo (Kubernetes) waxay dubtay pie (CPU) waxayna doonaysaa inay u qaybiso carruurta (koonteenarada). Saddex carruur ah waxay rabaan basbaaska dhan (qiyaas = 1024), ilmo kalena wuxuu rabaa nus pie (512). Hooyo waxay doonaysaa inay cadaalad noqoto oo waxay samaysaa xisaab fudud.

# Бколько ΠΏΠΈΡ€ΠΎΠ³ΠΎΠ² хотят Π΄Π΅Ρ‚ΠΈ?
# 3 Ρ€Π΅Π±Π΅Π½ΠΊΠ° хотят ΠΏΠΎ Ρ†Π΅Π»ΠΎΠΌΡƒ ΠΏΠΈΡ€ΠΎΠ³Ρƒ ΠΈ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ ΠΏΠΈΡ€ΠΎΠ³Π°
cakesNumberKidsWant = (3 * 1) + (1 * 0.5) = 3.5
# Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ получаСтся Ρ‚Π°ΠΊ:
3 (Ρ€Π΅Π±Π΅Π½ΠΊΠ°/ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°) * 1 (Ρ†Π΅Π»Ρ‹ΠΉ ΠΏΠΈΡ€ΠΎΠ³/ΠΏΠΎΠ»Π½ΠΎΠ΅ ядро) + 1 (Ρ€Π΅Π±Π΅Π½ΠΎΠΊ/ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€) * 0.5 (ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΏΠΈΡ€ΠΎΠ³Π°/ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ядра)
# Бколько ΠΏΠΈΡ€ΠΎΠ³ΠΎΠ² испСчСно?
availableCakesNumber = 1
# Бколько ΠΏΠΈΡ€ΠΎΠ³Π° (максимально) Π΄Π΅Ρ‚ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ?
newMaxRequest = 1 / 3.5 =~ 28%

Iyada oo ku saleysan xisaabinta, saddex carruur ah ayaa heli doona 28% xudunta, mana aha dhammaan xudunta. Ilmaha afraad wuxuu helayaa 14% kernel-ka buuxa, ma aha kala badh. Laakiin arrimuhu way ka duwanaan doonaan haddii aad leedahay nidaamka asaasiga ah.

Sida loo galo ilaha Kubernetes Pod
Codsiga CPU - Multi-core (4) Nidaamka

Sawirka kore waxaad ka arki kartaa in saddex caruur ah ay rabaan pie dhan, midna wuxuu rabaa kala bar. Maadaama ay hooyadu dubtay afar xabo, mid kasta oo carruurteeda ka mid ah ayaa heli doona inta ay rabaan. Nidaamka xudunta badan leh, agabka processor-ku waxa loo qaybiyaa dhammaan qalabka processor-yada ee jira. Haddii weelku ku xaddidan yahay wax ka yar hal unug oo buuxa oo CPU ah, wuxuu weli u isticmaali karaa 100%.

Xisaabinta kor ku xusan waa la fududeeyay si loo fahmo sida CPU loogu qaybiyo weelasha dhexdooda. Dabcan, marka laga reebo weelasha laftooda, waxaa jira habab kale oo sidoo kale isticmaala ilaha CPU. Marka hababka ku jira hal weel ay shaqo la'aan yihiin, kuwa kale ayaa isticmaali kara kheyraadkooda. CPU: "200m" u dhiganta CPU: 0,2, taas oo macnaheedu yahay qiyaastii 20% hal xudun.

Hadda aan ka hadalno limit.cpu. CPU-ga uu xaddidayo Kubernetes waxaa lagu dhuftaa 100. Natiijadu waa inta jeer ee weelku isticmaali karo 100 Β΅s kasta (cpu-period).

limit.cpu u dhigma calanka Docker --cpus. Tani waa isku-dar cusub oo duug ah --cpu-period ΠΈ --cpu-quota. Markaan dejineyno, waxaan ku tusineynaa inta agab ee CPU ee la heli karo weelka uu sida ugu badan u isticmaali karo ka hor inta uusan dillaacin:

  • cpus - isku darka cpu-period ΠΈ cpu-quota. cpus = 1.5 u dhiganta dejinta cpu-period = 100000 ΠΈ cpu-quota = 150000;
  • CPU-period - muddada Jadwalka CPU CFS, caadiga ah 100 micro seconds;
  • CPU-kootada - tirada micro seconds gudaha cpu-period, kaas oo ku xidhan weelka.

Maxaa dhacaya haddii aad rakibto CPU aan ku filnayn oo la codsaday?

Haddii weelku u baahan yahay wax ka badan inta lagu rakibay, waxay ka xadi doontaa CPU hababka kale.

Maxaa dhacaya haddii aad dejiso xadka CPU mid aad u hooseeya?

Maadaama ilaha CPU la hagaajin karo, ceejinta ayaa shid doonta.

Maxaa dhacaya haddii aadan cayimin codsiga CPU?

Sida xusuusta, qiimaha codsigu wuxuu la mid yahay xadka.

Maxaa dhacaya haddii aadan cayimin xadka CPU?

Weelku wuxuu isticmaali doonaa inta ugu badan ee CPU inta uu u baahan yahay. Haddii nidaamka CPU ee caadiga ah (LimitRange) lagu qeexo booska magaca, markaa xadkan ayaa sidoo kale loo isticmaalaa weelka.

Maxaa dhacaya haddii aadan sheegin midkood codsi ama xadka CPU?

Sida xusuusta, tani waa xaaladda ugu xun. Jadwalku ma garanayo inta agab ee weelkaagu u baahan yahay, tanina waxay sababi kartaa dhibaatooyin halis ah xagasha. Si taas looga fogaado, waxaad u baahan tahay inaad dejiso xadka caadiga ah ee meelaha magacyada (LimitRange).

Xusuusnow: haddii aad codsato CPU ka badan inta noodhadhku bixin karaan, Pod-ka lama ballansan doono. Requests.cpu - ma aha qiimaha ugu yar, laakiin qiimaha ku filan in la bilaabo Pod-ka oo uu shaqeeyo guuldarro la'aan. Haddii codsigu aanu samayn xisaabin adag, doorashada ugu fiican waa in la rakibo request.cpu <= 1 oo bilow inta nuqul ka mid ah intii loo baahdo.

Qadarka ku habboon ee kheyraadka la codsaday ama xadka kheyraadka

Waxaan baranay xaddidaadda ilaha xisaabinta. Hadda waa waqtigii laga jawaabi lahaa su'aasha: "Immisa agab ah ayuu Pod-kaygu u baahan yahay si uu u socodsiiyo codsiga iyada oo aan wax dhibaato ah la kulmin? Waa maxay qaddarka ugu habboon?

Nasiib darro, ma jiraan jawaabo cad oo su'aalahan ah. Haddii aadan aqoon sida codsigaagu u shaqeeyo ama inta uu le'eg yahay CPU ama xusuusta uu u baahan yahay, ikhtiyaarka ugu fiican ayaa ah inaad siisid arjiga xusuusta badan iyo CPU ka dibna aad sameyso imtixaannada waxqabadka.

Marka lagu daro imtixaanada waxqabadka, la soco habdhaqanka arjiga marka la kormeerayo muddo toddobaad ah. Haddii garaafyadu ay muujiyaan in codsigaagu uu isticmaalayo ilo ka yar intii aad codsatay, waxaad yarayn kartaa cadadka CPU ama xusuusta la codsaday.

Tusaale ahaan tan arag Grafana dashboard. Waxay muujinaysaa farqiga u dhexeeya khayraadka la codsaday ama xadka khayraadka iyo isticmaalka khayraadka hadda.

gunaanad

Codsiga iyo xaddididda agabku waxay kaa caawinaysaa in kooxda Kubernetes ay caafimaad qabaan. Isku xidhka xaddidan ee saxda ah wuxuu yareeyaa kharashyada wuxuuna ilaaliyaa codsiyada socda mar walba.

Marka la soo koobo, waxaa jira dhowr waxyaalood oo ay tahay in maskaxda lagu hayo:

  1. Agabka la codsaday waa qaabayn lagu xisaabtamayo wakhtiga bilawga ah (marka Kubernetes qorshaynayo inuu martigeliyo arjiga). Taas bedelkeeda, xaddididda agabku waa muhiim wakhtiga runtime-marka codsigu mar horeba ku socdo noodhka.
  2. Marka la barbar dhigo xusuusta, CPU waa kheyraad nidaamsan. Haddii aysan jirin CPU ku filan, Pod-kaagu ma xirmi doono oo habka ceejinta ayaa shidi doona.
  3. Kheyraadka la codsaday iyo xadka kheyraadku maaha kuwa ugu yar iyo qiimaha ugu badan! Markaad qeexdo agabka la codsaday, waxaad hubisaa in codsigu u socon doono dhibaato la'aan.
  4. Dhaqanka wanaagsani waa in codsiga xusuusta loo siman yahay xadka xusuusta.
  5. Ok rakib ayaa la codsaday CPU <=1, haddii codsigu aanu samayn xisaabin adag.
  6. Haddii aad codsato kheyraad ka badan kuwa laga heli karo duleelka, Pod-ka waligiis looma qorsheyn doono noodhkaas.
  7. Si loo go'aamiyo qadarka saxda ah ee khayraadka/ xadka ilaha la codsaday, isticmaal tijaabinta culayska iyo la socodka.

Waxaan rajeynayaa in maqaalkani uu kaa caawinayo inaad fahamto fikradda aasaasiga ah ee xaddidaadda kheyraadka. Oo waxaad awoodi doontaa inaad aqoontan ku dabaqdo shaqadaada.

nasiib wacan!

Maxaa kale oo la akhriyaa:

  1. U fiirsashada SRE: Goobaha Magacyada iyo Qaab-dhismeedka Metric.
  2. 90+ qalab waxtar u leh Kubernetes: geynta, maamulka, la socodka, amniga iyo in ka badan.
  3. Kanaalkayaga Kubernetes ee Telegram.

Source: www.habr.com

Add a comment