Tliet Livelli ta 'Autoscaling f'Kubernetes: Kif Tużahom Effettivament

Tliet Livelli ta 'Autoscaling f'Kubernetes: Kif Tużahom Effettivament
Biex tikkontrolla kompletament Kubernetes, trid tkun taf modi differenti biex tiskala r-riżorsi tal-cluster: by skond l-iżviluppaturi tas-sistema, dan huwa wieħed mill-kompiti ewlenin ta 'Kubernetes. Aħna ipprovdejna ħarsa ġenerali ta' livell għoli ta' mekkaniżmi ta' autoscaling orizzontali u vertikali u r-ridimensing tal-clusters, kif ukoll rakkomandazzjonijiet dwar kif tużahom b'mod effettiv.

Artikolu Kubernetes Autoscaling 101: Cluster Autoscaler, Autoscaler Orizzontali, u Vertical Pod Autoscaler tradott mit-tim li implimenta l-autoscaling fi Kubernetes aaS minn Mail.ru.

Għaliex huwa importanti li wieħed jaħseb dwar l-iskala

Kubernetes - għodda għall-ġestjoni tar-riżorsi u l-orkestrazzjoni. Naturalment, huwa sabiħ li tinker mal-karatteristiċi friski tal-iskjerament, il-monitoraġġ u l-ġestjoni tal-imżiewed (pod huwa grupp ta 'kontenituri li huma mnedija bi tweġiba għal talba).

Madankollu, għandek taħseb ukoll dwar il-mistoqsijiet li ġejjin:

  1. Kif tiskala moduli u applikazzjonijiet?
  2. Kif iżżomm il-kontenituri operattivi u effiċjenti?
  3. Kif tirrispondi għal bidliet kostanti fil-kodiċi u l-piżijiet tax-xogħol mill-utenti?

Il-konfigurazzjoni ta' clusters ta' Kubernetes biex jibbilanċjaw ir-riżorsi u l-prestazzjoni tista' tkun ta' sfida u teħtieġ għarfien espert tal-ħidma interna ta' Kubernetes. L-ammont ta’ xogħol tal-applikazzjoni jew tas-servizzi tiegħek jista’ jvarja tul il-ġurnata jew saħansitra matul siegħa, għalhekk l-aħjar bilanċ huwa meqjus bħala proċess kontinwu.

Livelli ta' autoscaling ta' Kubernetes

Autoscaling effettiv jeħtieġ koordinazzjoni bejn żewġ livelli:

  1. Livell tal-pod, inkluż orizzontali (Horizontal Pod Autoscaler, HPA) u awtoscaler vertikali (Vertical Pod Autoscaler, VPA). Dan huwa l-iskala tar-riżorsi disponibbli għall-kontenituri tiegħek.
  2. Livell ta 'cluster, li huwa mmaniġġjat mill-Cluster Autoscaler (CA), li jżid jew inaqqas in-numru ta' nodi fi ħdan il-cluster.

Modulu Horizontal Autoscaler (HPA).

Kif jissuġġerixxi l-isem, l-HPA tiskala n-numru ta 'repliki tal-miżwed. Il-biċċa l-kbira tad-devops jużaw is-CPU u t-tagħbija tal-memorja bħala triggers għall-bidla tan-numru ta 'repliki. Madankollu, huwa possibbli li tiskala s-sistema bbażata fuq metriċi tad-dwana, tagħhom kombinazzjoni jew saħansitra metriċi esterni.

Dijagramma operattiva HPA ta' livell għoli:

  1. L-HPA jiċċekkja kontinwament il-valuri metriċi speċifikati waqt l-installazzjoni f'intervall default ta '30 sekonda.
  2. L-HPA tipprova żżid in-numru ta' moduli jekk jintlaħaq il-limitu speċifikat.
  3. L-HPA jaġġorna n-numru ta' repliki fi ħdan il-kontrollur tal-iskjerament/replikazzjoni.
  4. Il-kontrollur tal-iskjerament/replikazzjoni mbagħad juża kwalunkwe moduli addizzjonali meħtieġa.

Tliet Livelli ta 'Autoscaling f'Kubernetes: Kif Tużahom Effettivament
HPA jibda l-proċess ta' skjerament tal-modulu meta jintlaħaq limitu metriku

Meta tuża HPA, ikkunsidra dan li ġej:

  • L-intervall tal-kontroll HPA default huwa 30 sekonda. Huwa stabbilit mill-bandiera orizzontali-pod-autoscaler-sync-perjodu fil-maniġer tal-kontrollur.
  • L-iżball relattiv default huwa 10%.
  • Wara l-aħħar żieda fin-numru ta 'moduli, HPA jistenna li l-metriċi jistabbilizzaw fi żmien tliet minuti. Dan l-intervall huwa stabbilit mill-bandiera orizzontali-pod-autoscaler-upscale-dewmien.
  • Wara l-aħħar tnaqqis fin-numru ta 'moduli, l-HPA jistenna għal ħames minuti biex jistabbilizza. Dan l-intervall huwa stabbilit mill-bandiera orizzontali-pod-autoscaler-downscale-dewmien.
  • L-HPA taħdem l-aħjar b'oġġetti ta' skjerament aktar milli kontrolluri ta' replikazzjoni. Autoscaling orizzontali huwa inkompatibbli ma 'rolling update, li jimmanipula direttament il-kontrolluri tar-replikazzjoni. Bl-iskjerament, in-numru ta 'repliki jiddependi direttament fuq l-oġġetti tal-iskjerament.

Autoscaling vertikali tal-imżiewed

Vertical autoscaling (VPA) jalloka aktar (jew inqas) ħin jew memorja tas-CPU għall-imżiewed eżistenti. Adattat għal pods stateful jew mingħajr stat, iżda prinċipalment maħsuba għal servizzi stateful. Madankollu, tista' tuża wkoll VPA għal moduli mingħajr stat jekk ikollok bżonn taġġusta awtomatikament l-ammont ta' riżorsi allokati inizjalment.

VPA jirrispondi wkoll għal avvenimenti OOM (mingħajr memorja). Il-bidla fil-ħin tas-CPU u l-memorja teħtieġ li jerġgħu jibdew il-miżwed. Meta jerġa' jibda, il-VPA jirrispetta l-baġit ta' allokazzjoni (baġit tad-distribuzzjoni tal-imżiewed, PDB) biex jiggarantixxi n-numru minimu meħtieġ ta' moduli.

Tista' tissettja r-riżorsi minimi u massimi għal kull modulu. Għalhekk, tista 'tillimita l-ammont massimu ta' memorja allokata għal 8 GB. Dan huwa utli jekk in-nodi attwali definittivament ma jistgħux jallokaw aktar minn 8 GB ta 'memorja għal kull kontenitur. Speċifikazzjonijiet dettaljati u mekkaniżmu operattiv huma deskritti fi wiki uffiċjali tal-VPA.

Barra minn hekk, il-VPA għandu funzjoni ta 'rakkomandazzjoni interessanti (Rakkomandatur tal-VPA). Jissorvelja l-użu tar-riżorsi u l-avvenimenti OOM tal-moduli kollha biex jissuġġerixxi valuri ġodda ta 'memorja u ħin tas-CPU bbażati fuq algoritmu intelliġenti bbażat fuq metriċi storiċi. Hemm ukoll API li tieħu manku tal-pod u tirritorna l-valuri ssuġġeriti tar-riżorsi.

Ta 'min jinnota li VPA Recommender ma jsegwix ir-riżorsi "limitu". Dan jista 'jirriżulta li l-modulu jimmonopolizza r-riżorsi fi ħdan in-nodi. Huwa aħjar li tiffissa l-limitu fil-livell tal-ispazju tal-isem biex tevita memorja enormi jew konsum ta 'CPU.

Skema ta' operazzjoni VPA ta' livell għoli:

  1. VPA jiċċekkja kontinwament il-valuri metriċi speċifikati waqt l-installazzjoni f'intervall default ta '10 sekondi.
  2. Jekk jintlaħaq il-limitu speċifikat, il-VPA jipprova jibdel l-ammont allokat ta' riżorsi.
  3. Il-VPA jaġġorna n-numru ta' riżorsi fi ħdan il-kontrollur tal-iskjerament/replikazzjoni.
  4. Meta l-moduli jerġgħu jibdew, ir-riżorsi l-ġodda kollha jiġu applikati għall-istanzi maħluqa.

Tliet Livelli ta 'Autoscaling f'Kubernetes: Kif Tużahom Effettivament
Il-VPA żżid l-ammont meħtieġ ta’ riżorsi

Jekk jogħġbok żomm f'moħħok il-punti li ġejjin meta tuża VPA:

  • L-iskala teħtieġ bidu mill-ġdid obbligatorju tal-pod. Dan huwa meħtieġ biex tiġi evitata operazzjoni instabbli wara li jsiru bidliet. Għall-affidabbiltà, il-moduli jerġgħu jibdew u mqassma fuq in-nodi bbażati fuq riżorsi allokati ġodda.
  • VPA u HPA għadhom mhumiex kompatibbli ma 'xulxin u ma jistgħux jaħdmu fuq l-istess imżiewed. Jekk qed tuża ż-żewġ mekkaniżmi tal-iskala fl-istess cluster, kun żgur li s-settings tiegħek jipprevjenuhom milli jiġu attivati ​​fuq l-istess oġġetti.
  • Il-VPA tixgħel it-talbiet tal-kontejners għal riżorsi bbażati biss fuq l-użu tal-passat u attwali. Ma tistabbilixxix limiti għall-użu tar-riżorsi. Jista' jkun hemm problemi bl-applikazzjonijiet li ma jaħdmux sew u jibdew jieħdu aktar u aktar riżorsi, dan iwassal biex Kubernetes jitfi dan il-pod.
  • Il-VPA għadu fi stadju bikri ta' żvilupp. Kun ippreparat li s-sistema tista 'tgħaddi minn xi bidliet fil-futur qarib. Tista 'taqra dwar limitazzjonijiet magħrufa и pjanijiet ta’ żvilupp. Għalhekk, hemm pjanijiet biex tiġi implimentata l-operazzjoni konġunta ta’ VPA u HPA, kif ukoll l-iskjerament ta’ moduli flimkien ma’ politika ta’ awtoskala vertikali għalihom (pereżempju, tikketta speċjali ‘jeħtieġ VPA’).

Autoscaling cluster Kubernetes

Cluster Autoscaler (CA) jibdel in-numru ta 'nodi bbażat fuq in-numru ta' stennija miżwed. Is-sistema tiċċekkja perjodikament għal moduli pendenti - u żżid id-daqs tal-cluster jekk ikunu meħtieġa aktar riżorsi u jekk il-cluster ma jaqbiżx il-limiti stabbiliti. Is-CA tikkomunika mal-fornitur tas-servizz tal-cloud, titlob nodi addizzjonali mingħandu, jew tirrilaxxa dawk inattivi. L-ewwel verżjoni ġeneralment disponibbli ta 'CA ġiet introdotta f'Kubernetes 1.8.

Skema ta' livell għoli ta' operazzjoni SA:

  1. CA jiċċekkja għal moduli pendenti f'intervall default ta '10 sekondi.
  2. Jekk pods wieħed jew aktar huma fi stat standby minħabba li l-cluster m'għandux biżżejjed riżorsi disponibbli biex jallokahom, jipprova jipprovdi nodu addizzjonali wieħed jew aktar.
  3. Meta l-fornitur tas-servizz tal-cloud jalloka n-nodu meħtieġ, jingħaqad mal-cluster u jkun lest biex iservi l-imżiewed.
  4. L-iskeder Kubernetes iqassam imżiewed pendenti lin-nodu l-ġdid. Jekk wara dan xi moduli xorta jibqgħu fi stat ta 'stennija, il-proċess jiġi ripetut u nodi ġodda jiġu miżjuda mal-cluster.

Tliet Livelli ta 'Autoscaling f'Kubernetes: Kif Tużahom Effettivament
Proviżjoni awtomatika ta 'cluster nodes fil-cloud

Ikkunsidra dan li ġej meta tuża CA:

  • CA jiżgura li l-imżiewed kollha fil-cluster ikollhom spazju biex jaħdmu, irrispettivament mit-tagħbija tas-CPU. Jipprova wkoll jiżgura li ma jkunx hemm nodi mhux meħtieġa fil-cluster.
  • CA tirreġistra l-ħtieġa li tiskala wara madwar 30 sekonda.
  • Ladarba node ma jkunx aktar meħtieġ, is-CA default tistenna 10 minuti qabel ma tiskala s-sistema.
  • Is-sistema ta 'autoscaling għandha l-kunċett ta' expanders. Dawn huma strateġiji differenti għall-għażla ta 'grupp ta' nodi li magħhom se jiġu miżjuda nodi ġodda.
  • Uża l-għażla b'mod responsabbli cluster-autoscaler.kubernetes.io/safe-to-evict (veru). Jekk tinstalla ħafna imżiewed, jew jekk ħafna minnhom huma mferrxa fuq in-nodi kollha, fil-biċċa l-kbira titlef il-kapaċità li tiskala l-cluster.
  • Użu PodDisruptionBudgetsbiex tipprevjeni li l-imżiewed jitħassru, li jistgħu jikkawżaw li partijiet mill-applikazzjoni tiegħek ifallu kompletament.

Kif l-awtoscalers ta' Kubernetes jinteraġixxu ma' xulxin

Għal armonija perfetta, l-autoscaling għandu jiġi applikat kemm fil-livell tal-pod (HPA/VPA) kif ukoll fil-livell tal-cluster. Huma jinteraġixxu ma 'xulxin relattivament sempliċi:

  1. L-HPAs jew il-VPAs jaġġornaw ir-repliki tal-miżwed jew ir-riżorsi allokati lill-miżwed eżistenti.
  2. Jekk ma jkunx hemm biżżejjed nodi għall-iskala ppjanata, is-CA tinnota l-preżenza ta 'miżwed fi stat ta' stennija.
  3. Is-CA talloka nodi ġodda.
  4. Il-moduli huma mqassma għal nodi ġodda.

Tliet Livelli ta 'Autoscaling f'Kubernetes: Kif Tużahom Effettivament
Sistema ta' skala kollaborattiva ta' Kubernetes

Żbalji komuni fl-autoscaling ta' Kubernetes

Hemm diversi problemi komuni li jiltaqgħu magħhom id-devops meta jippruvaw jimplimentaw awtoscaling.

HPA u VPA jiddependu fuq metriċi u xi dejta storika. Jekk jiġu allokati riżorsi insuffiċjenti, il-moduli jiġu minimizzati u ma jkunux jistgħu jiġġeneraw metriċi. F'dan il-każ, l-autoscaling qatt mhu se jiġri.

L-operazzjoni tal-iskala nnifisha hija sensittiva għall-ħin. Irridu li l-moduli u l-cluster jiżkalaw malajr - qabel ma l-utenti jinnutaw xi problemi jew fallimenti. Għalhekk, għandu jittieħed kont tal-ħin medju tal-iskala għall-imżiewed u r-raggruppament.

Xenarju ideali - 4 minuti:

  1. 30 sekonda. Aġġorna l-metriċi tal-mira: 30−60 sekonda.
  2. 30 sekonda. HPA jiċċekkja l-valuri metriċi: 30 sekonda.
  3. Inqas minn 2 sekondi. Il-miżwed huma maħluqa u jmorru fi stat ta 'stennija: 1 sekonda.
  4. Inqas minn 2 sekondi. CA jara moduli ta' stennija u jibgħat sejħiet lil nodi ta' forniment: 1 sekonda.
  5. 3 minuti. Il-fornitur tas-sħab jalloka nodi. K8s jistenna sakemm ikunu lesti: sa 10 minuti (skond diversi fatturi).

L-agħar xenarju (aktar realistiku) - 12-il minuta:

  1. 30 sekonda. Aġġorna l-metriċi tal-mira.
  2. 30 sekonda. HPA jiċċekkja l-valuri metriċi.
  3. Inqas minn 2 sekondi. Il-miżwed huma maħluqa u jidħlu fl-istat standby.
  4. Inqas minn 2 sekondi. Is-CA tara l-moduli ta' stennija u tagħmel sejħiet biex tipprovdi n-nodi.
  5. 10 minuti. Il-fornitur tas-sħab jalloka nodi. K8s jistenna sakemm ikunu lesti. Il-ħin ta 'stennija jiddependi fuq diversi fatturi, bħal dewmien tal-bejjiegħ, dewmien tal-OS, u għodod ta' appoġġ.

Tħawwadx il-mekkaniżmi ta' skalar tal-fornituri tal-cloud mal-CA tagħna. Dan tal-aħħar jaħdem ġewwa cluster Kubernetes, filwaqt li l-magna tal-fornitur tal-cloud topera fuq bażi ta 'distribuzzjoni ta' nodi. Ma jafx x'inhu għaddej bil-miżwed jew l-applikazzjoni tiegħek. Dawn is-sistemi joperaw b'mod parallel.

Kif timmaniġġja l-iskala f'Kubernetes

  1. Kubernetes huwa għodda ta 'ġestjoni u orkestrazzjoni tar-riżorsi. L-operazzjonijiet għall-ġestjoni tal-pods u r-riżorsi tal-clusters huma pass ewlieni fil-ħakma ta’ Kubernetes.
  2. Ifhem il-loġika tal-iskalabbiltà tal-pods filwaqt li tqis HPA u VPA.
  3. CA għandu jintuża biss jekk għandek fehim tajjeb tal-ħtiġijiet tal-imżiewed u l-kontenituri tiegħek.
  4. Biex tikkonfigura cluster bl-aħjar mod, trid tifhem kif is-sistemi ta' skala differenti jaħdmu flimkien.
  5. Meta tistma l-ħin tal-iskala, żomm f'moħħok ix-xenarji tal-agħar u tal-aħjar każ.

Sors: www.habr.com

Żid kumment