Ngazi Tatu za Kuongeza Kiotomatiki katika Kubernetes: Jinsi ya Kuzitumia kwa Ufanisi

Ngazi Tatu za Kuongeza Kiotomatiki katika Kubernetes: Jinsi ya Kuzitumia kwa Ufanisi
Ili kufahamu Kubernetes kikamilifu, unahitaji kujua njia tofauti za kuongeza rasilimali za nguzo: kwa kulingana na watengenezaji wa mfumo, hii ni moja ya kazi kuu za Kubernetes. Tumetoa muhtasari wa hali ya juu wa mbinu za kuongeza ukubwa kiotomatiki na za wima na za kubadilisha ukubwa wa nguzo, pamoja na mapendekezo ya jinsi ya kuzitumia kwa ufanisi.

Kifungu Kubernetes Autoscaling 101: Cluster Autoscaler, Horizontal Autoscaler, na Vertical Pod Autoscaler iliyotafsiriwa na timu iliyotekeleza uwekaji picha kiotomatiki Kubernetes aaS kutoka Mail.ru.

Kwa nini ni muhimu kufikiri juu ya kuongeza

Mabernet - chombo kwa ajili ya usimamizi wa rasilimali na orchestration. Bila shaka, ni vizuri kutafakari vipengele vyema vya kupeleka, kufuatilia, na kusimamia maganda (ganda ni kundi la vyombo vinavyozinduliwa kwa kujibu ombi).

Walakini, unapaswa pia kufikiria juu ya maswali yafuatayo:

  1. Jinsi ya kuongeza moduli na programu?
  2. Jinsi ya kuweka vyombo kufanya kazi na kwa ufanisi?
  3. Jinsi ya kujibu mabadiliko ya mara kwa mara katika nambari na mzigo wa kazi kutoka kwa watumiaji?

Kusanidi vikundi vya Kubernetes ili kusawazisha rasilimali na utendakazi kunaweza kuwa changamoto na kunahitaji ujuzi wa kitaalamu wa utendaji kazi wa ndani wa Kubernetes. Mzigo wa kazi wa programu au huduma zako unaweza kubadilika siku nzima au hata kwa muda wa saa moja, kwa hivyo kusawazisha kunafikiriwa vyema kuwa mchakato unaoendelea.

Viwango vya kuongeza otomatiki vya Kubernetes

Uwekaji otomatiki unaofaa unahitaji uratibu kati ya viwango viwili:

  1. Kiwango cha ganda, ikijumuisha mlalo (Horizontal Pod Autoscaler, HPA) na kihesabu kiotomatiki kiwima (Vertical Pod Autoscaler, VPA). Hii ni kuongeza rasilimali zinazopatikana kwa vyombo vyako.
  2. Ngazi ya nguzo, ambayo inasimamiwa na Cluster Autoscaler (CA), ambayo huongeza au kupunguza idadi ya nodi ndani ya nguzo.

Moduli ya Usawazishaji wa Kiotomatiki (HPA).

Kama jina linavyopendekeza, HPA hupima idadi ya nakala za pod. Devops nyingi hutumia CPU na mzigo wa kumbukumbu kama vichochezi vya kubadilisha idadi ya nakala. Hata hivyo, inawezekana kuongeza mfumo kulingana na vipimo maalum, wao michanganyiko au hata vipimo vya nje.

Mchoro wa uendeshaji wa kiwango cha juu cha HPA:

  1. HPA hukagua mara kwa mara thamani za kipimo zilizobainishwa wakati wa usakinishaji kwa muda chaguomsingi wa sekunde 30.
  2. HPA inajaribu kuongeza idadi ya moduli ikiwa kiwango cha juu kilichobainishwa kimefikiwa.
  3. HPA husasisha idadi ya nakala ndani ya kidhibiti cha uwekaji/kunakili.
  4. Kidhibiti cha uwekaji/kunakili kisha hupeleka moduli zozote za ziada zinazohitajika.

Ngazi Tatu za Kuongeza Kiotomatiki katika Kubernetes: Jinsi ya Kuzitumia kwa Ufanisi
HPA huanza mchakato wa uwekaji wa moduli wakati kipimo cha juu kinafikiwa

Unapotumia HPA, zingatia yafuatayo:

  • Muda wa kuangalia HPA chaguomsingi ni sekunde 30. Imewekwa na bendera mlalo-pod-autoscaler-sync-period katika meneja wa mtawala.
  • Hitilafu chaguo-msingi ya jamaa ni 10%.
  • Baada ya ongezeko la mwisho la idadi ya moduli, HPA inatarajia vipimo kutengemaa ndani ya dakika tatu. Muda huu umewekwa na bendera usawa-pod-autoscaler-upscale-cheleweshaji.
  • Baada ya kupunguzwa kwa mwisho kwa idadi ya moduli, HPA inasubiri kwa dakika tano ili kuleta utulivu. Muda huu umewekwa na bendera usawa-pod-autoscaler-downscale-cheleweshaji.
  • HPA hufanya kazi vizuri zaidi na vitu vya kupeleka badala ya vidhibiti vya urudufishaji. Uwekaji picha kiotomatiki wa mlalo hauoani na usasishaji unaoendelea, ambao hubadilisha moja kwa moja vidhibiti vya urudufishaji. Kwa kupelekwa, idadi ya nakala inategemea moja kwa moja kwenye vitu vya kupeleka.

Uwekaji wima wa maganda

Wima kiotomatiki (VPA) hutenga muda zaidi (au chini) wa CPU au kumbukumbu kwa maganda yaliyopo. Yanafaa kwa maganda ya serikali au yasiyo na uraia, lakini yanayokusudiwa hasa kwa huduma za hali ya juu. Hata hivyo, unaweza pia kutumia VPA kwa moduli zisizo na uraia ikiwa unahitaji kurekebisha kiotomatiki kiasi cha rasilimali zilizotengwa awali.

VPA pia hujibu matukio ya OOM (ya nje ya kumbukumbu). Kubadilisha muda wa CPU na kumbukumbu kunahitaji kuanzisha upya maganda. Inapoanzishwa upya, VPA inaheshimu bajeti ya mgao (bajeti ya usambazaji wa maganda, PDB) ili kuhakikisha idadi ya chini inayohitajika ya moduli.

Unaweza kuweka rasilimali za chini na za juu kwa kila moduli. Kwa hivyo, unaweza kupunguza kiwango cha juu cha kumbukumbu iliyotengwa hadi 8 GB. Hii ni muhimu ikiwa nodi za sasa hakika haziwezi kutenga zaidi ya GB 8 ya kumbukumbu kwa kila kontena. Ufafanuzi wa kina na utaratibu wa uendeshaji umeelezewa katika wiki rasmi ya VPA.

Kwa kuongeza, VPA ina kazi ya mapendekezo ya kuvutia (Mpendekezo wa VPA). Hufuatilia matumizi ya rasilimali na matukio ya OOM ya moduli zote ili kupendekeza kumbukumbu mpya na thamani za saa za CPU kulingana na algoriti mahiri kulingana na vipimo vya kihistoria. Pia kuna API ambayo inachukua kipini cha ganda na kurudisha thamani za rasilimali zilizopendekezwa.

Inafaa kumbuka kuwa Mshauri wa VPA hafuatilii "kikomo" cha rasilimali. Hii inaweza kusababisha moduli kuhodhi rasilimali ndani ya nodi. Ni bora kuweka kikomo katika kiwango cha nafasi ya majina ili kuzuia kumbukumbu kubwa au matumizi ya CPU.

Mpango wa uendeshaji wa VPA wa kiwango cha juu:

  1. VPA hukagua mara kwa mara thamani za kipimo zilizobainishwa wakati wa usakinishaji kwa muda chaguomsingi wa sekunde 10.
  2. Iwapo kiwango kilichotajwa kinafikiwa, VPA inajaribu kubadilisha kiasi kilichotengwa cha rasilimali.
  3. VPA husasisha idadi ya rasilimali ndani ya kidhibiti cha uwekaji/rudufi.
  4. Wakati moduli zinapoanzishwa upya, rasilimali zote mpya zinatumika kwa matukio yaliyoundwa.

Ngazi Tatu za Kuongeza Kiotomatiki katika Kubernetes: Jinsi ya Kuzitumia kwa Ufanisi
VPA huongeza kiasi kinachohitajika cha rasilimali

Tafadhali kumbuka mambo yafuatayo unapotumia VPA:

  • Kuongeza kunahitaji kuanza tena kwa lazima kwa ganda. Hii ni muhimu ili kuepuka operesheni isiyo imara baada ya kufanya mabadiliko. Kwa kutegemewa, moduli zinaanzishwa upya na kusambazwa kwenye nodi kulingana na rasilimali mpya zilizotengwa.
  • VPA na HPA bado hazioani na haziwezi kukimbia kwenye maganda sawa. Ikiwa unatumia njia zote mbili za kuongeza alama kwenye nguzo moja, hakikisha kuwa mipangilio yako inazizuia kuamilishwa kwenye vitu sawa.
  • VPA huimba maombi ya vyombo vya rasilimali kulingana na matumizi ya zamani na ya sasa pekee. Haiweki vikomo vya matumizi ya rasilimali. Kunaweza kuwa na matatizo na programu hazifanyi kazi kwa usahihi na kuanza kuchukua rasilimali zaidi na zaidi, hii itasababisha Kubernetes kuzima pod hii.
  • VPA bado iko katika hatua ya awali ya maendeleo. Kuwa tayari kuwa mfumo unaweza kufanyiwa mabadiliko fulani katika siku za usoni. Unaweza kusoma kuhusu vikwazo vinavyojulikana ΠΈ mipango ya maendeleo. Kwa hiyo, kuna mipango ya kutekeleza uendeshaji wa pamoja wa VPA na HPA, pamoja na kupelekwa kwa modules pamoja na sera ya wima ya autoscaling kwao (kwa mfano, lebo maalum 'inahitaji VPA').

Kuongeza kiotomatiki nguzo ya Kubernetes

Cluster Autoscaler (CA) hubadilisha idadi ya nodi kulingana na idadi ya maganda yanayosubiri. Mfumo mara kwa mara hukagua moduli zinazosubiri - na huongeza ukubwa wa nguzo ikiwa rasilimali zaidi zinahitajika na ikiwa nguzo haizidi mipaka iliyowekwa. CA inawasiliana na mtoa huduma wa wingu, inaomba nodi za ziada kutoka kwayo, au inatoa zisizo na kazi. Toleo la kwanza linalopatikana kwa ujumla la CA lilianzishwa katika Kubernetes 1.8.

Mpango wa kiwango cha juu cha uendeshaji wa SA:

  1. CA hukagua moduli zinazosubiri kwa muda chaguo-msingi wa sekunde 10.
  2. Ikiwa ganda moja au zaidi ziko katika hali ya kusubiri kwa sababu nguzo haina rasilimali za kutosha kuzigawa, inajaribu kutoa nodi moja au zaidi za ziada.
  3. Wakati mtoa huduma wa wingu anagawa node inayohitajika, inajiunga na nguzo na iko tayari kutumikia maganda.
  4. Kipanga ratiba cha Kubernetes husambaza maganda yanayosubiri kwenye nodi mpya. Ikiwa baada ya hii moduli zingine bado zinabaki katika hali ya kungojea, mchakato unarudiwa na nodi mpya zinaongezwa kwenye nguzo.

Ngazi Tatu za Kuongeza Kiotomatiki katika Kubernetes: Jinsi ya Kuzitumia kwa Ufanisi
Utoaji otomatiki wa nodi za nguzo katika wingu

Fikiria yafuatayo unapotumia CA:

  • CA huhakikisha kwamba maganda yote kwenye nguzo yana nafasi ya kufanya kazi, bila kujali upakiaji wa CPU. Pia inajaribu kuhakikisha kuwa hakuna nodi zisizohitajika kwenye nguzo.
  • CA husajili hitaji la kuongeza ukubwa baada ya takriban sekunde 30.
  • Mara nodi haihitajiki tena, CA inabadilika kusubiri dakika 10 kabla ya kuongeza mfumo.
  • Mfumo wa autoscaling una dhana ya vipanuzi. Hizi ni mikakati tofauti ya kuchagua kikundi cha nodi ambazo nodi mpya zitaongezwa.
  • Tumia chaguo kwa kuwajibika cluster-autoscaler.kubernetes.io/safe-to-evict (kweli). Ikiwa utaweka maganda mengi, au ikiwa mengi yao yametawanyika kwenye nodi zote, kwa kiasi kikubwa utapoteza uwezo wa kupanua nguzo.
  • Tumia PodDisruptionBudgetsili kuzuia maganda kufutwa, ambayo yanaweza kusababisha sehemu za programu yako kuvunjika kabisa.

Jinsi waendeshaji otomatiki wa Kubernetes huingiliana

Kwa upatanifu kamili, kupima kiotomatiki kunafaa kutumika katika kiwango cha ganda (HPA/VPA) na kiwango cha nguzo. Wanaingiliana kwa urahisi:

  1. HPA au VPA husasisha nakala za pod au rasilimali zilizogawiwa kwa maganda yaliyopo.
  2. Ikiwa hakuna nodi za kutosha kwa upanuzi uliopangwa, CA inaona uwepo wa maganda katika hali ya kusubiri.
  3. CA inatenga nodi mpya.
  4. Moduli zinasambazwa kwa nodi mpya.

Ngazi Tatu za Kuongeza Kiotomatiki katika Kubernetes: Jinsi ya Kuzitumia kwa Ufanisi
Mfumo wa Kuboresha Ushirikiano wa Kubernetes

Makosa ya kawaida katika Kubernetes autoscaling

Kuna shida kadhaa za kawaida ambazo devops huingia wakati wa kujaribu kutekeleza uwekaji otomatiki.

HPA na VPA hutegemea vipimo na baadhi ya data ya kihistoria. Iwapo rasilimali hazitoshi zitatolewa, moduli zitapunguzwa na hazitaweza kuzalisha vipimo. Katika kesi hii, autoscaling haitatokea kamwe.

Operesheni ya kuongeza yenyewe ni nyeti kwa wakati. Tunataka moduli na nguzo ziongezeke haraka - kabla ya watumiaji kutambua matatizo au hitilafu zozote. Kwa hiyo, muda wa wastani wa kuongeza maganda na nguzo unapaswa kuzingatiwa.

Hali inayofaa - dakika 4:

  1. Sekunde 30. Sasisha vipimo lengwa: sekunde 30βˆ’60.
  2. Sekunde 30. HPA hukagua thamani za metri: sekunde 30.
  3. Chini ya sekunde 2. Pods huundwa na kwenda katika hali ya kungojea: sekunde 1.
  4. Chini ya sekunde 2. CA inaona moduli za kusubiri na kutuma simu kwa nodi za utoaji: sekunde 1.
  5. Dakika 3. Mtoa huduma wa wingu hutenga nodi. K8s inasubiri hadi iko tayari: hadi dakika 10 (kulingana na mambo kadhaa).

Hali mbaya zaidi (ya kweli zaidi) - dakika 12:

  1. Sekunde 30. Sasisha vipimo lengwa.
  2. Sekunde 30. HPA hukagua thamani za kipimo.
  3. Chini ya sekunde 2. Maganda yanaundwa na kuingia katika hali ya kusubiri.
  4. Chini ya sekunde 2. CA huona moduli za kusubiri na hupiga simu ili kutoa nodi.
  5. dakika 10. Mtoa huduma wa wingu hutenga nodi. K8s husubiri hadi ziwe tayari. Muda wa kusubiri unategemea mambo kadhaa, kama vile kuchelewa kwa muuzaji, kuchelewa kwa mfumo wa uendeshaji na zana za usaidizi.

Usichanganye taratibu za kuongeza watoa huduma za wingu na CA yetu. Mwisho huendesha ndani ya nguzo ya Kubernetes, wakati injini ya mtoaji wa wingu inafanya kazi kwa msingi wa usambazaji wa nodi. Haijui kinachoendelea na maganda au programu yako. Mifumo hii inafanya kazi kwa usawa.

Jinsi ya kudhibiti kuongeza katika Kubernetes

  1. Kubernetes ni zana ya usimamizi wa rasilimali na uandaaji. Operesheni za kudhibiti maganda na rasilimali za nguzo ni hatua muhimu katika kufahamu Kubernetes.
  2. Elewa mantiki ya upanuzi wa maganda kwa kuzingatia HPA na VPA.
  3. CA inapaswa kutumika tu ikiwa una ufahamu mzuri wa mahitaji ya maganda na vyombo vyako.
  4. Ili kusanidi kikundi kikamilifu, unahitaji kuelewa jinsi mifumo tofauti ya kuongeza vipimo inavyofanya kazi pamoja.
  5. Wakati wa kukadiria wakati wa kuongeza, kumbuka hali mbaya zaidi na hali bora zaidi.

Chanzo: mapenzi.com

Kuongeza maoni