L-aħjar prattiki ta' Kubernetes. It-twaqqif ta' talbiet u limiti tar-riżorsi

L-aħjar prattiki ta' Kubernetes. Noħolqu kontenituri żgħar
L-aħjar prattiki ta' Kubernetes. Organizzazzjoni ta' Kubernetes bi namespace
L-aħjar prattiki ta' Kubernetes. Il-validazzjoni ta' Kubernetes Liveness b'Testijiet ta' Prontezza u Liveness

Għal kull riżorsa ta' Kubernetes, tista' tikkonfigura żewġ tipi ta' rekwiżiti - Talbiet u Limiti. L-ewwel tiddeskrivi r-rekwiżiti minimi għad-disponibbiltà ta 'riżorsi ta' nodi ħielsa meħtieġa biex imexxu kontenitur jew pod, it-tieni jillimita b'mod strett ir-riżorsi disponibbli għall-kontenitur.

Meta Kubernetes jippjana l-imżiewed, huwa importanti ħafna li l-kontenituri jkollhom biżżejjed riżorsi biex jiffunzjonaw kif suppost. Jekk qed tippjana li tiskjera applikazzjoni kbira fuq node ristrett mir-riżorsi, huwa possibbli li ma titħaddemx minħabba li n-nodu qed jaħdem b'mod baxx fil-memorja jew jispiċċa mingħajr qawwa tas-CPU. F'dan l-artikolu, ser inħarsu lejn kif tista' ssolvi n-nuqqas ta' enerġija tal-kompjuter billi tuża talbiet u limiti tar-riżorsi.

It-talbiet u l-Limiti huma mekkaniżmi li Kubernetes juża biex jimmaniġġja r-riżorsi bħas-CPU u l-memorja. It-talbiet huma dak li jiżguraw li l-kontenitur jirċievi r-riżors mitluba. Jekk kontenitur jitlob riżorsa, Kubernetes se jiskedaha biss fuq node li jista 'jipprovdiha. Il-limiti jikkontrollaw li r-riżorsi mitluba mill-kontenitur qatt ma jaqbżu ċertu valur.

L-aħjar prattiki ta' Kubernetes. It-twaqqif ta' talbiet u limiti tar-riżorsi

Kontenitur jista 'biss iżid il-qawwa tal-kompjuter tiegħu sa ċertu limitu, u wara jkun limitat. Ejja naraw kif taħdem. Għalhekk, hemm żewġ tipi ta 'riżorsi - proċessur u memorja. L-iskeder tal-Kubernetes juża data dwar dawn ir-riżorsi biex jifhem fejn imexxi l-imżiewed tiegħek. Speċifikazzjoni tar-riżorsi tipiċi għal pod tidher bħal din.

L-aħjar prattiki ta' Kubernetes. It-twaqqif ta' talbiet u limiti tar-riżorsi

Kull kontenitur fi pod jista 'jiffissa l-mistoqsijiet u l-limiti tiegħu stess, huwa kollu addittiv. Ir-riżorsi tal-proċessur huma definiti f'millicores. Jekk il-kontenitur tiegħek jeħtieġ żewġ qlub sħaħ biex jaħdem, issettja l-valur għal 2000m. Jekk il-kontenitur jeħtieġ biss il-qawwa ta '1/4 tal-qalba, il-valur ikun 250m. Żomm f'moħħok li jekk tassenja valur tar-riżorsi tas-CPU akbar min-numru ta 'qlub tal-akbar nodu, il-pod tiegħek ma jkun skedat li jibda għal kollox. Sitwazzjoni simili sseħħ jekk ikollok Pod li jeħtieġ erba 'qlub, u l-cluster Kubernetes jikkonsisti biss f'żewġ magni virtwali ewlenin.

Sakemm l-applikazzjoni tiegħek ma tkunx iddisinjata speċifikament biex tieħu vantaġġ minn qlub multipli (jiġu f'moħħna programmi bħal kompjuters xjentifiċi kumplessi u operazzjonijiet ta' database), allura l-aħjar prattika hija li twaqqaf it-Talbiet tas-CPU għal 1 jew inqas u mbagħad tħaddem aktar repliki għall-iskalabbiltà. Din is-soluzzjoni se tagħti lis-sistema flessibilità u affidabilità akbar.

Fir-rigward tal-limitazzjonijiet tas-CPU, l-affarijiet isiru aktar interessanti peress li huwa meqjus bħala riżors kompressibbli. Jekk l-applikazzjoni tiegħek tibda toqrob lejn il-limitu tal-qawwa tal-proċessur, Kubernetes jibda jrażżan il-kontenitur tiegħek billi juża CPU Throttling - inaqqas il-frekwenza tal-proċessur. Dan ifisser li s-CPU se jiġi throttled artifiċjalment, u jagħti lill-applikazzjoni prestazzjoni potenzjalment agħar, iżda l-proċess mhux se jintemm jew jitneħħa.

Ir-riżorsi tal-memorja huma definiti f'bytes. Normalment il-valur fis-settings jitkejjel f'mebibytes Mib, iżda tista' tissettja kwalunkwe valur, minn bytes għal petabytes. L-istess sitwazzjoni tapplika hawnhekk bħall-CPU - jekk tagħmel talba għal ammont ta 'memorja akbar mill-ammont ta' memorja fuq in-nodi tiegħek, dak il-pod mhux se jkun skedat li jwettaq. Iżda b'differenza mir-riżorsi tas-CPU, il-memorja mhix ikkompressata minħabba li m'hemm l-ebda mod kif tillimita l-użu tagħha. Għalhekk, l-eżekuzzjoni tal-kontenitur se titwaqqaf hekk kif tmur lil hinn mill-memorja allokata lilu.

L-aħjar prattiki ta' Kubernetes. It-twaqqif ta' talbiet u limiti tar-riżorsi

Huwa importanti li tiftakar li ma tistax tikkonfigura talbiet li jaqbżu r-riżorsi li jistgħu jipprovdu n-nodi tiegħek. L-ispeċifikazzjonijiet tar-riżorsi kondiviżi għal magni virtwali GKE jistgħu jinstabu fil-links taħt dan il-video.

F'dinja ideali, is-settings default tal-kontenitur ikunu biżżejjed biex iżommu l-flussi tax-xogħol jaħdmu bla xkiel. Iżda d-dinja reali mhix hekk, in-nies jistgħu faċilment jinsew li jikkonfiguraw l-użu tar-riżorsi, jew il-hackers jistabbilixxu talbiet u restrizzjonijiet li jaqbżu l-kapaċitajiet reali tal-infrastruttura. Biex tevita xenarji bħal dawn milli jseħħu, tista' tikkonfigura l-kwoti tar-riżorsi ResourceQuota u LimitRange.

Ladarba jkun inħoloq namespace, jista' jiġi mblukkat bl-użu ta' kwoti. Pereżempju, jekk għandek l-ispazji tal-isem prod u dev, il-mudell huwa li m'hemm l-ebda kwoti ta 'produzzjoni u kwoti ta' żvilupp stretti ħafna. Dan jippermetti prod, fil-każ ta 'żieda qawwija fit-traffiku, biex jieħu f'idejh ir-riżors disponibbli kollu, jimblokka kompletament dev.

Il-kwota tar-riżorsi tista' tidher bħal din. F'dan l-eżempju hemm 4 sezzjonijiet - dawn huma l-4 linji tal-qiegħ tal-kodiċi.

L-aħjar prattiki ta' Kubernetes. It-twaqqif ta' talbiet u limiti tar-riżorsi

Ejja nħarsu lejn kull wieħed minnhom. Requests.cpu huwa n-numru massimu ta' talbiet għal CPU magħquda li jistgħu jiġu mill-kontenituri kollha fl-ispazju tal-isem. F'dan l-eżempju, jista 'jkollok 50 kontenitur b'talbiet ta' 10m, ħames kontenituri b'talbiet ta '100m, jew kontenitur wieħed biss b'talbiet ta' 500m. Sakemm in-numru totali ta 'requests.cpu ta' namespace partikolari huwa inqas minn 500m, kollox ikun tajjeb.

Memorja mitluba requests.memory huwa l-ammont massimu ta' talbiet ta' memorja magħquda li jista' jkollhom il-kontenituri kollha fl-ispazju tal-isem. Bħal fil-każ preċedenti, jista' jkollok 50 kontenitur ta' 2 mib, ħames kontenituri ta' 20 mib, jew kontenitur wieħed ta' 100 mib sakemm l-ammont totali ta' memorja mitluba fl-ispazju tal-isem ikun inqas minn 100 mebibytes.

Limits.cpu huwa l-ammont massimu kkombinat ta' qawwa tas-CPU li jistgħu jużaw il-kontenituri kollha fl-ispazju tal-isem. Nistgħu nqisu dan bħala l-limitu tat-talbiet tal-qawwa tal-proċessur.

Fl-aħħarnett, limits.memory huwa l-ammont massimu ta 'memorja kondiviża li l-kontenituri kollha fl-ispazju tal-isem jistgħu jużaw. Dan huwa limitu fuq it-talbiet totali tal-memorja.
Għalhekk, b'mod awtomatiku, il-kontenituri fi cluster Kubernetes jaħdmu b'riżorsi ta' komputazzjoni illimitati. Bi kwoti tar-riżorsi, l-amministraturi tal-clusters jistgħu jillimitaw il-konsum tar-riżorsi u l-ħolqien tar-riżorsi bbażati fuq namespace. Fi spazju tal-isem, pod jew kontenitur jista’ jikkunsma qawwa u memorja tas-CPU daqs kemm ikun determinat mill-kwota tar-riżorsi tal-ispazju tal-isem. Madankollu, hemm tħassib li pod jew kontenitur wieħed jista' jimmonopolizza r-riżorsi kollha disponibbli. Biex tiġi evitata din is-sitwazzjoni, tintuża firxa ta 'limitu - politika biex tillimita l-allokazzjoni tar-riżorsi (għall-imżiewed jew kontenituri) fl-ispazju tal-isem.

Il-firxa tal-limitu tipprovdi restrizzjonijiet li jistgħu:

  • Tiżgura użu minimu u massimu tar-riżorsi tal-kompjuter għal kull modulu jew kontenitur fl-ispazju tal-isem;
  • jinforza talbiet minimi u massimi għall-ħażna Starage Request għal kull PersistentVolumeClaim fl-ispazju tal-isem;
  • tinforza relazzjoni bejn Talba u Limitu għal riżors fi spazju tal-isem;
  • issettja Talbiet/Limiti default għar-riżorsi tal-komputazzjoni fl-ispazju tal-isem u injettahom awtomatikament f'kontenituri waqt ir-runtime.

Dan il-mod tista 'toħloq firxa ta' limitu fl-ispazju tal-isem tiegħek. B'differenza minn kwota, li tapplika għall-ispazju tal-isem kollu, Limit Range tintuża għal kontenituri individwali. Dan jista' jipprevjeni lill-utenti milli joħolqu kontenituri ċkejkna ħafna jew, bil-maqlub, ġiganteski fi ħdan l-ispazju tal-isem. Il-Medda tal-Limitu tista' tidher bħal din.

L-aħjar prattiki ta' Kubernetes. It-twaqqif ta' talbiet u limiti tar-riżorsi

Bħal fil-każ preċedenti, 4 sezzjonijiet jistgħu jiġu distinti hawn. Ejja nħarsu lejn kull wieħed.
Is-sezzjoni default tistabbilixxi l-limiti default għall-kontenitur fil-pod. Jekk issettja dawn il-valuri fil-medda estrema, allura kwalunkwe kontenitur li għalihom dawn il-valuri ma ġewx issettjati b'mod espliċitu se jsegwu l-valuri awtomatiċi.

Is-sezzjoni tat-talba default defaultRequest tikkonfigura t-talbiet default għall-kontenitur fil-pod. Għal darb'oħra, jekk issettja dawn il-valuri fil-medda estrema, allura kwalunkwe kontenitur li ma jissettjax b'mod espliċitu dawn l-għażliet se default għal dawn il-valuri.

It-taqsima max tispeċifika l-limiti massimi li jistgħu jiġu stabbiliti għal kontenitur fil-pod. Il-valuri fit-taqsima default u l-limiti tal-kontenitur ma jistgħux jiġu stabbiliti 'l fuq minn dan il-limitu. Huwa importanti li wieħed jinnota li jekk il-valur huwa ssettjat għal max u m'hemm l-ebda sezzjoni default, allura l-valur massimu jsir il-valur default.

It-taqsima min tispeċifika t-talbiet minimi li jistgħu jiġu stabbiliti għal kontenitur f'pod. Madankollu, il-valuri fit-taqsima default u l-mistoqsijiet għall-kontenitur ma jistgħux jiġu stabbiliti taħt dan il-limitu.

Għal darb'oħra, huwa importanti li wieħed jinnota li jekk dan il-valur huwa stabbilit, default mhuwiex, allura l-valur minimu jsir il-pront default.

Dawn it-talbiet tar-riżorsi huma fl-aħħar mill-aħħar użati mill-iskeder Kubernetes biex tesegwixxi l-piżijiet tax-xogħol tiegħek. Sabiex inti tikkonfigura l-kontenituri tiegħek b'mod korrett, huwa importanti ħafna li tifhem kif taħdem. Ejja ngħidu li trid tħaddem pods multipli fil-cluster tiegħek. Jekk wieħed jassumi li l-ispeċifikazzjonijiet tal-pods huma validi, l-iskeda ta 'Kubernetes se tuża round robin bilanċjar biex tagħżel node biex tmexxi l-ammont ta' xogħol.

L-aħjar prattiki ta' Kubernetes. It-twaqqif ta' talbiet u limiti tar-riżorsi

Kubernetes se jiċċekkja jekk in-Node 1 għandux biżżejjed riżorsi biex iwettaq it-talbiet mill-kontenituri tal-pods, u jekk ma jagħmilx hekk, jgħaddi għan-nodu li jmiss. Jekk l-ebda nodi fis-sistema ma jkun kapaċi jissodisfa t-talbiet, il-miżwed se jmorru fl-istat Pendenti. Bl-użu tal-karatteristiċi tal-magna Google Kubernetes bħal node autoscaling, GKE jista 'awtomatikament jiskopri l-istat ta' stennija u joħloq bosta nodi addizzjonali.

Jekk sussegwentement tispiċċa l-kapaċità tan-nodi, l-autoscaling inaqqas in-numru ta 'nodi biex jiffranka l-flus. Huwa għalhekk li Kubernetes jippjana pods ibbażati fuq talbiet. Madankollu, il-limitu jista 'jkun ogħla mit-talbiet, u f'xi każijiet in-nodu jista' fil-fatt jispiċċa mingħajr riżorsi. Aħna nsejħu dan l-istat overcommitment state.

L-aħjar prattiki ta' Kubernetes. It-twaqqif ta' talbiet u limiti tar-riżorsi

Kif għedt, meta niġu għas-CPU, Kubernetes se jibda jillimita l-imżiewed. Kull pod se jirċievi kemm talab, iżda jekk ma jilħaqx il-limitu, jibda japplika throttling.

Fir-rigward tar-riżorsi tal-memorja, Kubernetes huwa sfurzat jieħu deċiżjonijiet dwar liema mżiewed iħassar u liema jżomm sakemm tillibera r-riżorsi tas-sistema jew is-sistema kollha tiġġarraf.

Ejja nimmaġinaw xenarju fejn għandek magna bla memorja - Kubernetes kif jimmaniġġja dan?

Kubernetes se jfittex imżiewed li qed jużaw aktar riżorsi milli talbu. Mela jekk il-kontenituri tiegħek m'għandhom l-ebda Talba, dan ifisser li qed jonqsu milli jużaw aktar milli talbu, sempliċement għax ma talbu xejn! Kontenituri bħal dawn isiru kandidati ewlenin għall-għeluq. Il-kandidati li jmiss huma kontejners li ssodisfaw it-talbiet kollha tagħhom iżda għadhom taħt il-limitu massimu.

Mela jekk Kubernetes isib diversi pods li qabżu l-parametri tat-talba tagħhom, issortjahom skont il-prijorità u mbagħad ineħħi l-imżiewed tal-inqas prijorità. Jekk il-miżwed kollha għandhom l-istess prijorità, allura Kubernetes se jtemm dawk il-miżwed li jaqbżu t-talbiet tagħhom aktar minn imżiewed oħra.

F'każijiet rari ħafna, Kubernetes jista' jabbanduna l-imżiewed li għadhom fl-ambitu tat-talbiet tagħhom. Dan jista 'jiġri meta komponenti kritiċi tas-sistema bħall-aġent Kubelet jew Docker jibdew jikkunsmaw aktar riżorsi minn dak li kien riservat għalihom.
Għalhekk, fl-istadji bikrija ta 'kumpaniji żgħar, cluster Kubernetes jista' jaħdem tajjeb mingħajr ma jistabbilixxi talbiet ta 'riżorsi u restrizzjonijiet, iżda hekk kif it-timijiet u l-proġetti tiegħek jibdew jikbru fid-daqs, inti tirriskja li tiffaċċja problemi f'dan il-qasam. Iż-żieda ta' mistoqsijiet u restrizzjonijiet mal-moduli u l-ispazji tal-isem tiegħek teħtieġ ftit sforz żejjed u tista' tiffranka ħafna battikata.

L-aħjar prattiki ta' Kubernetes. Ittemm korrett

Xi reklami 🙂

Grazzi talli bqajt magħna. Tħobb l-artikoli tagħna? Trid tara aktar kontenut interessanti? Appoġġuna billi tagħmel ordni jew tirrakkomanda lill-ħbieb, Cloud VPS għall-iżviluppaturi minn $4.99, analogu uniku ta 'servers ta' livell ta 'dħul, li ġie ivvintat minna għalik: Il-verità kollha dwar VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps minn $19 jew kif taqsam server? (disponibbli b'RAID1 u RAID10, sa 24 core u sa 40GB DDR4).

Dell R730xd 2 darbiet orħos fiċ-ċentru tad-dejta Equinix Tier IV f'Amsterdam? Hawn biss 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV minn $199 fl-Olanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - minn $99! Aqra dwar Kif tibni l-infrastruttura corp. klassi bl-użu ta 'servers Dell R730xd E5-2650 v4 li jiswew 9000 ewro għal ċenteżmu?

Sors: www.habr.com

Żid kumment