{"id":55712,"date":"2020-01-27T00:00:00","date_gmt":"2020-01-26T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/tri-urovnya-avtomasshtabirovaniya-v-kubernetes-kak-ih-effektivno-ispolzovat"},"modified":"2020-02-18T14:03:51","modified_gmt":"2020-02-18T11:03:51","slug":"tri-urovnya-avtomasshtabirovaniya-v-kubernetes-kak-ih-effektivno-ispolzovat","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/tri-urovnya-avtomasshtabirovaniya-v-kubernetes-kak-ih-effektivno-ispolzovat","title":{"rendered":"Tri \u00farovne automatick\u00e9ho \u0161k\u00e1lovania v Kubernetes: ako ich efekt\u00edvne vyu\u017ei\u0165","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Tri \u00farovne automatick\u00e9ho \u0161k\u00e1lovania v Kubernetes: ako ich efekt\u00edvne vyu\u017ei\u0165\" src=\"\/wp-content\/uploads\/2020\/01\/0b076d65db116cabdd1b4ae380d3777d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNa \u00fapln\u00e9 zvl\u00e1dnutie Kubernetes je potrebn\u00e9 pozna\u0165 r\u00f4zne sp\u00f4soby \u0161k\u00e1lovania klastrov\u00fdch zdrojov: pod\u013ea <noindex><a rel=\"nofollow\" href=\"https:\/\/speakerdeck.com\/thockin\/everything-you-ever-wanted-to-know-about-resource-scheduling-dot-dot-dot-almost\">slov v\u00fdvoj\u00e1rov syst\u00e9mu<\/a><\/noindex>, to je jedna z hlavn\u00fdch \u00faloh Kubernetes. Pripravili sme vysoko\u00farov\u0148ov\u00fd preh\u013ead mechanizmov horizont\u00e1lneho a vertik\u00e1lneho automatick\u00e9ho \u0161k\u00e1lovania a zmeny ve\u013ekosti klastrov, ako aj odpor\u00fa\u010dania, ako ich efekt\u00edvne vyu\u017ei\u0165.<\/p>\n<p>\u010cl\u00e1nok <noindex><a rel=\"nofollow\" href=\"https:\/\/www.magalix.com\/blog\/kubernetes-autoscaling-101\">Kubernetes Autoscaling 101: Cluster Autoscaler, Horizontal Autoscaler, and Vertical Pod Autoscaler<\/a><\/noindex> prelo\u017eil t\u00edm, ktor\u00fd implementoval automatick\u00e9 \u0161k\u00e1lovanie v <noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/containers\/\">Kubernetes aaS od Mail.ru<\/a><\/noindex>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Pre\u010do je d\u00f4le\u017eit\u00e9 zamyslie\u0165 sa nad \u0161k\u00e1lovan\u00edm <\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/blog\/kubernetes-for-much-stuff\">Kubernetes<\/a><\/noindex> \u2014 n\u00e1stroj na spr\u00e1vu zdrojov a orchestr\u00e1ciu. Samozrejme, nie je zl\u00e9 experimentova\u0165 s cool funkciami nasadenia, monitorovania a spr\u00e1vy podov (modul pod \u2014 skupina kontajnerov, ktor\u00e9 sa sp\u00fa\u0161\u0165aj\u00fa na z\u00e1klade po\u017eiadavky). <\/p>\n<p>Av\u0161ak je potrebn\u00e9 zamyslie\u0165 sa aj nad tak\u00fdmito ot\u00e1zkami:<\/p>\n<ol>\n<li>Ako \u0161k\u00e1lova\u0165 moduly a aplik\u00e1cie?\n<\/li>\n<li>Ako udr\u017eiava\u0165 kontajnery v prev\u00e1dzke a efekt\u00edvnom stave?\n<\/li>\n<li>Ako reagova\u0165 na neust\u00e1le zmeny v k\u00f3de a pracovn\u00fdch z\u00e1\u0165a\u017eiach od pou\u017e\u00edvate\u013eov?\n<\/li>\n<\/ol>\n<p>\nNastavenie klastrov Kubernetes na vyv\u00e1\u017eenie zdrojov a v\u00fdkonu m\u00f4\u017ee by\u0165 zlo\u017eitou \u00falohou, vy\u017eaduje si odborn\u00e9 znalosti o vn\u00fatornej pr\u00e1ci Kubernetes. Pracovn\u00e1 z\u00e1\u0165a\u017e na va\u0161u aplik\u00e1ciu alebo slu\u017eby sa m\u00f4\u017ee po\u010das d\u0148a alebo aj v priebehu jedinej hodiny meni\u0165, preto sa vyv\u00e1\u017eenie najlep\u0161ie ch\u00e1pe ako kontinu\u00e1lny proces.<\/p>\n<h2>\u00darovne automatick\u00e9ho \u0161k\u00e1lovania Kubernetes<\/h2>\n<p>\nEfekt\u00edvne automatick\u00e9 \u0161k\u00e1lovanie vy\u017eaduje koordin\u00e1ciu medzi dvoma \u00farov\u0148ami: <\/p>\n<ol>\n<li>\u00darove\u0148 podov, zah\u0155\u0148aj\u00faca horizont\u00e1lne (Horizontal Pod Autoscaler, HPA) a vertik\u00e1lne automatick\u00e9 \u0161k\u00e1lovanie (Vertical Pod Autoscaler, VPA). Toto \u0161k\u00e1lovanie rozde\u013euje existuj\u00face zdroje pre va\u0161e kontajnery.\n<\/li>\n<li>\u00darove\u0148 klasteru, ktor\u00fa spravuje syst\u00e9m automatick\u00e9ho \u0161k\u00e1lovania klasteru (Cluster Autoscaler, CA), ten zvy\u0161uje alebo zni\u017euje po\u010det uzlov v r\u00e1mci klasteru.\n<\/li>\n<\/ol>\n<p><\/p>\n<h2>Modul horizont\u00e1lneho automatick\u00e9ho \u0161k\u00e1lovania (HPA)<\/h2>\n<p>\nAko n\u00e1zov napoved\u00e1, HPA \u0161k\u00e1luje po\u010det replik podov. Ako sp\u00fa\u0161\u0165a\u010de na zmenu po\u010dtu repl\u00edk v\u00e4\u010d\u0161ina devops pou\u017e\u00edvate\u013eov pou\u017e\u00edva za\u0165a\u017eenie CPU a pam\u00e4ti. M\u00f4\u017eete v\u0161ak \u0161k\u00e1lova\u0165 syst\u00e9m na z\u00e1klade <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/run-application\/horizontal-pod-autoscale\/#support-for-custom-metrics\">vlastn\u00fdch metr\u00edk<\/a><\/noindex>, ich <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/run-application\/horizontal-pod-autoscale\/#support-for-multiple-metrics\">kombin\u00e1cie<\/a><\/noindex> alebo aj <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes-engine\/docs\/tutorials\/external-metrics-autoscaling\">extern\u00fdch metr\u00edk<\/a><\/noindex>.<\/p>\n<p>Vysoko\u00farov\u0148ov\u00e1 sch\u00e9ma fungovania HPA:<\/p>\n<ol>\n<li>HPA neust\u00e1le kontroluje hodnoty metr\u00edk, ktor\u00e9 s\u00fa nastaven\u00e9 pri in\u0161tal\u00e1cii, s predvolen\u00fdm intervalom 30 sek\u00fand.\n<\/li>\n<li>HPA sa sna\u017e\u00ed zv\u00fd\u0161i\u0165 po\u010det modulov, ak je dosiahnut\u00fd stanoven\u00fd prah.\n<\/li>\n<li>HPA aktualizuje po\u010det replik v r\u00e1mci kontrol\u00e9ra nasadenia\/replik\u00e1cie.\n<\/li>\n<li>Kontrol\u00e9r nasadenia\/replik\u00e1cie potom nasad\u00ed v\u0161etky potrebn\u00e9 \u010fal\u0161ie moduly.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Tri \u00farovne automatick\u00e9ho \u0161k\u00e1lovania v Kubernetes: ako ich efekt\u00edvne vyu\u017ei\u0165\" src=\"\/wp-content\/uploads\/2020\/01\/e98534431712eb3303668446b0fe567b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>HPA sp\u00fa\u0161\u0165a proces nasadenia modulov, ke\u010f je dosiahnut\u00fd prah metr\u00edk.<\/i><\/p>\n<p>Pri pou\u017eit\u00ed HPA berte do \u00favahy nasledovn\u00e9:<\/p>\n<ul>\n<li>Predvolen\u00fd interval kontroly HPA je 30 sek\u00fand. Je nastaven\u00fd pomocou pr\u00edznaku. <i>horizontal-pod-autoscaler-sync-period<\/i> v spr\u00e1vcovi kontrol\u00e9ra.\n<\/li>\n<li>Predpokladan\u00e1 chyba je predvolene 10%.\n<\/li>\n<li>Po poslednom zv\u00fd\u0161en\u00ed po\u010dtu modulov HPA \u010dak\u00e1 na stabiliz\u00e1ciu metr\u00edk po\u010das troch min\u00fat. Tento interval je nastaven\u00fd pomocou pr\u00edznaku. <i>horizontal-pod-autoscaler-upscale-delay<\/i>.\n<\/li>\n<li>Po poslednom zn\u00ed\u017een\u00ed po\u010dtu modulov HPA \u010dak\u00e1 na stabiliz\u00e1ciu po\u010das piatich min\u00fat. Tento interval je nastaven\u00fd pomocou pr\u00edznaku. <i>horizontal-pod-autoscaler-downscale-delay<\/i>.\n<\/li>\n<li>HPA najlep\u0161ie funguje s objektmi nasadenia, nie s kontrol\u00e9rmi replik\u00e1cie. Horizont\u00e1lne automatick\u00e9 \u0161k\u00e1lovanie nie je kompatibiln\u00e9 s postupn\u00fdm aktualizovan\u00edm (rolling update), ktor\u00e9 priamo manipuluje s kontrol\u00e9rmi replik\u00e1cie. Pri nasaden\u00ed z\u00e1vis\u00ed po\u010det replik priamo od objektov nasadenia.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Vertik\u00e1lne automatick\u00e9 \u0161k\u00e1lovanie podov<\/h2>\n<p>\nVertik\u00e1lne automatick\u00e9 \u0161k\u00e1lovanie (VPA) pridel\u00ed viac (alebo menej) procesorov\u00e9ho \u010dasu alebo pam\u00e4te pre existuj\u00face pody. Je vhodn\u00e9 pre pody so zachovan\u00edm stavu (stateful) alebo bez neho (stateless), no je najm\u00e4 ur\u010den\u00e9 pre stateful slu\u017eby. M\u00f4\u017eete v\u0161ak pou\u017ei\u0165 VPA aj pre moduly bez zachovania stavu, ak potrebujete automaticky upravi\u0165 objem p\u00f4vodne pridelen\u00fdch zdrojov. <\/p>\n<p>VPA tie\u017e reaguje na udalosti OOM (out of memory, nedostatok pam\u00e4te). Na zmenu procesorov\u00e9ho \u010dasu a objemu pam\u00e4te je potrebn\u00e9 re\u0161tartova\u0165 pody. Pri re\u0161tartovan\u00ed VPA dodr\u017eiava rozpo\u010det prerozde\u013eovania (<noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/disruptions\/\">pods distribution budget, PDB<\/a><\/noindex>), aby zabezpe\u010dilo minim\u00e1lne potrebn\u00fd po\u010det modulov. <\/p>\n<p>M\u00f4\u017eete nastavi\u0165 minim\u00e1lny a maxim\u00e1lny objem zdrojov pre ka\u017ed\u00fd modul. Takto m\u00f4\u017eete obmedzi\u0165 maxim\u00e1lny objem pridelen\u00fdch pam\u00e4\u0165ov\u00fdch zdrojov na limit 8 GB. To je u\u017eito\u010dn\u00e9, ak aktu\u00e1lne uzly nem\u00f4\u017eu pridelit viac ako 8 GB pam\u00e4te na kontajner. Podrobn\u00e9 \u0161pecifik\u00e1cie a mechanizmus fungovania s\u00fa pop\u00edsan\u00e9 v <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/community\/blob\/master\/contributors\/design-proposals\/autoscaling\/vertical-pod-autoscaler.md\">ofici\u00e1lnej wiki VPA<\/a><\/noindex>.<\/p>\n<p>Okrem toho m\u00e1 VPA zauj\u00edmav\u00fa funkciu odpor\u00fa\u010dan\u00ed (VPA Recommender). Sleduje vyu\u017e\u00edvanie zdrojov a OOM udalosti v\u0161etk\u00fdch modulov, aby navrhla nov\u00e9 hodnoty pam\u00e4te a procesorov\u00e9ho \u010dasu na z\u00e1klade inteligentn\u00e9ho algoritmu s oh\u013eadom na historick\u00e9 metriky. Existuje tie\u017e API, ktor\u00e9 prij\u00edma deskriptor podu a vracia navrhovan\u00e9 hodnoty zdrojov.<\/p>\n<p>Je potrebn\u00e9 poznamena\u0165, \u017ee VPA Recommender nesleduje \u00ablimit\u00bb zdrojov. To m\u00f4\u017ee vies\u0165 k tomu, \u017ee modul monopolizuje zdroje v r\u00e1mci uzlov. Je lep\u0161ie nastavi\u0165 prahov\u00fa hodnotu na \u00farovni priestoru n\u00e1zvov, aby sa predi\u0161lo obrovsk\u00e9mu spotrebovaniu pam\u00e4te alebo procesorov\u00e9ho \u010dasu.<\/p>\n<p>Vysokolevelov\u00fd sch\u00e9ma fungovania VPA:<\/p>\n<ol>\n<li>VPA nepretr\u017eite kontroluje hodnoty metr\u00edk, ktor\u00e9 s\u00fa uveden\u00e9 pri in\u0161tal\u00e1cii, s predvolen\u00fdm intervalom 10 sek\u00fand.\n<\/li>\n<li>Ak je dosiahnut\u00fd stanoven\u00fd prah, VPA sa sna\u017e\u00ed zmeni\u0165 pridelen\u00e9 mno\u017estvo zdrojov.\n<\/li>\n<li>VPA aktualizuje mno\u017estvo zdrojov v r\u00e1mci kontrol\u00e9ru nasadenia\/replik\u00e1cie.\n<\/li>\n<li>Pri re\u0161tarte modulov, v\u0161etky nov\u00e9 zdroje sa aplikuj\u00fa na vytvoren\u00e9 in\u0161tancie.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Tri \u00farovne automatick\u00e9ho \u0161k\u00e1lovania v Kubernetes: ako ich efekt\u00edvne vyu\u017ei\u0165\" src=\"\/wp-content\/uploads\/2020\/01\/324702d5e36e9fcf45ced8b3f276db52.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>VPA prid\u00e1va potrebn\u00e9 mno\u017estvo zdrojov <\/i><\/p>\n<p>Pam\u00e4tajte na nasleduj\u00face skuto\u010dnosti pri pou\u017e\u00edvan\u00ed VPA:<\/p>\n<ul>\n<li>\u0160k\u00e1lovanie vy\u017eaduje povinn\u00fd re\u0161tart podu. Je to potrebn\u00e9 pre vyhnutie sa nestabilite syst\u00e9mu po vykonan\u00ed zmien. Pre spo\u013eahlivos\u0165 moduly re\u0161tartuj\u00fa a rozde\u013euj\u00fa sa na uzly na z\u00e1klade nov\u00fdch pridelen\u00fdch zdrojov.\n<\/li>\n<li>VPA a HPA s\u00fa zatia\u013e nekompatibiln\u00e9 a nem\u00f4\u017eu pracova\u0165 na t\u00fdch ist\u00fdch podoch. Ak v jednom klastri pou\u017e\u00edvate oba mechanizmy \u0161k\u00e1lovania, uistite sa, \u017ee nastavenia neumo\u017enia ich aktivova\u0165 na t\u00fdch ist\u00fdch objektoch.\n<\/li>\n<li>VPA nastavuje po\u017eiadavky kontajnerov na zdroje na z\u00e1klade iba minul\u00e9ho a s\u00fa\u010dasn\u00e9ho vyu\u017eitia. Neur\u010duje limity vyu\u017eitia zdrojov. M\u00f4\u017eu nasta\u0165 probl\u00e9my s nespr\u00e1vnou funkciou aplik\u00e1ci\u00ed, ktor\u00e9 za\u010dn\u00fa zabera\u0165 \u010doraz viac zdrojov, \u010do povedie k tomu, \u017ee Kubernetes vypne tento pod.\n<\/li>\n<li>VPA je zatia\u013e vo f\u00e1ze ran\u00e9ho v\u00fdvoja. Bu\u010fte pripraven\u00ed, \u017ee v bl\u00edzkej dobe m\u00f4\u017ee syst\u00e9m prejs\u0165 niektor\u00fdmi zmenami. M\u00f4\u017eete si pre\u010d\u00edta\u0165 o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/autoscaler\/tree\/master\/vertical-pod-autoscaler#known-limitations-of-the-alpha-version\">zn\u00e1mych obmedzeniach<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/community\/blob\/master\/contributors\/design-proposals\/autoscaling\/vertical-pod-autoscaler.md#future-work\">pl\u00e1noch v\u00fdvoja<\/a><\/noindex>. Tak sa pl\u00e1nuje realizova\u0165 spolupr\u00e1cu VPA a HPA, ako aj nasadenie modulov spolu s politikou vertik\u00e1lneho automatick\u00e9ho \u0161k\u00e1lovania pre ne (napr\u00edklad \u0161peci\u00e1lna zna\u010dka 'requires VPA').\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Automatick\u00e9 \u0161k\u00e1lovanie klastru Kubernetes<\/h2>\n<p>\nAutomatick\u00e9 \u0161k\u00e1lovanie klastru (Cluster Autoscaler, CA) men\u00ed po\u010det uzlov na z\u00e1klade po\u010dtu \u010dakaj\u00facich modulov pod. Syst\u00e9m pravidelne kontroluje existenciu \u010dakaj\u00facich modulov \u2014 a zvy\u0161uje ve\u013ekos\u0165 klastru, ak s\u00fa potrebn\u00e9 \u010fal\u0161ie zdroje a ak klaster neprekra\u010duje stanoven\u00e9 limity. CA komunikuje s poskytovate\u013eom cloudov\u00fdch slu\u017eieb, \u017eiada o \u010fal\u0161ie uzly alebo uvo\u013e\u0148uje neakt\u00edvne. Prv\u00e1 verejn\u00e1 verzia CA bola predstaven\u00e1 v Kubernetes 1.8.<\/p>\n<p>Vysoko\u00farov\u0148ov\u00fd schematick\u00fd preh\u013ead CA:<\/p>\n<ol>\n<li>CA kontroluje existenciu modulov v stave \u010dakania s predvolenej peri\u00f3dou 10 sek\u00fand.\n<\/li>\n<li>Ak je jeden alebo viac modulov v stave \u010dakania kv\u00f4li nedostato\u010dn\u00fdm dostupn\u00fdm zdrojom v klastri na ich rozdelenie, sna\u017e\u00ed sa pripravi\u0165 jeden alebo viac dodato\u010dn\u00fdch uzlov.\n<\/li>\n<li>Ke\u010f poskytovate\u013e cloudov\u00fdch slu\u017eieb pridel\u00ed potrebn\u00fd uzol, ten sa pripoj\u00ed ku klastru a je pripraven\u00fd obsluhova\u0165 moduly pod.\n<\/li>\n<li>Pl\u00e1nova\u010d Kubernetes rozde\u013euje \u010dakaj\u00face moduly na nov\u00fd uzol. Ak po tomto niektor\u00e9 moduly st\u00e1le zost\u00e1vaj\u00fa v stave \u010dakania, proces sa opakuje \u2014 a do klastru sa prid\u00e1vaj\u00fa nov\u00e9 uzly.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Tri \u00farovne automatick\u00e9ho \u0161k\u00e1lovania v Kubernetes: ako ich efekt\u00edvne vyu\u017ei\u0165\" src=\"\/wp-content\/uploads\/2020\/01\/2cd3c97f5d1b040b813940a4e804365e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Automatick\u00e9 pride\u013eovanie uzlov klastru v cloude<\/i><\/p>\n<p>Zv\u00e1\u017ete nasleduj\u00face pri pou\u017e\u00edvan\u00ed CA:<\/p>\n<ul>\n<li>CA zabezpe\u010duje, \u017ee v\u0161etky moduly v klastri maj\u00fa miesto na spustenie, bez oh\u013eadu na \u00farove\u0148 za\u0165a\u017eenia procesora. Okrem toho sa sna\u017e\u00ed zabezpe\u010di\u0165, \u017ee v klastri nie s\u00fa zbyto\u010dn\u00e9 uzly.\n<\/li>\n<li>CA registruje potrebu \u0161k\u00e1lovania pribli\u017ene po 30 sekund\u00e1ch.\n<\/li>\n<li>Ke\u010f uzol prestane by\u0165 potrebn\u00fd, CA predvolene \u010dak\u00e1 10 min\u00fat, sk\u00f4r ne\u017e za\u010dne \u0161k\u00e1lova\u0165 syst\u00e9m.\n<\/li>\n<li>V syst\u00e9me automatick\u00e9ho \u0161k\u00e1lovania existuje pojem roz\u0161\u00edren\u00ed (expanders). To s\u00fa r\u00f4zne strat\u00e9gie na v\u00fdber skupiny uzlov, do ktorej bud\u00fa pridan\u00e9 nov\u00e9.\n<\/li>\n<li>Zodpovedne aplikujte mo\u017enos\u0165 <i>cluster-autoscaler.kubernetes.io\/safe-to-evict (true)<\/i>. Ak nain\u0161talujete ve\u013ea podov alebo ak bud\u00fa mnoh\u00e9 z nich rozmiestnen\u00e9 po v\u0161etk\u00fdch uzloch, do zna\u010dnej miery strat\u00edte schopnos\u0165 zmen\u0161i\u0165 \u0161k\u00e1lu klastra.\n<\/li>\n<li>Pou\u017eite <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/disruptions\/\">PodDisruptionBudgets<\/a><\/noindex>, aby ste predi\u0161li odstr\u00e1neniu podov, \u010do m\u00f4\u017ee sp\u00f4sobi\u0165, \u017ee \u010das\u0165 va\u0161ej aplik\u00e1cie \u00faplne zlyh\u00e1.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Ako syst\u00e9my automatick\u00e9ho \u0161k\u00e1lovania Kubernetes interaguj\u00fa medzi sebou<\/h2>\n<p>\nPre ide\u00e1lnu harm\u00f3niu by sa malo aplika\u010dn\u00e9 \u0161k\u00e1lovanie vykon\u00e1va\u0165 na \u00farovni podov (HPA\/VPA) a na \u00farovni klastra. Tieto dva mechanizmy medzi sebou relat\u00edvne jednoducho interaguj\u00fa:<\/p>\n<ol>\n<li>HPA alebo VPA aktualizuj\u00fa repliky podov alebo prostriedky pridelen\u00e9 existuj\u00facim podom.\n<\/li>\n<li>Ak pre pl\u00e1novan\u00e9 \u0161k\u00e1lovanie ch\u00fdbaj\u00fa uzly, CA si v\u0161imne existenciu podov v stave \u010dakaj\u00facom.\n<\/li>\n<li>CA pride\u013euje nov\u00e9 uzly.\n<\/li>\n<li>Moduly s\u00fa prerozdelen\u00e9 na nov\u00e9 uzly.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Tri \u00farovne automatick\u00e9ho \u0161k\u00e1lovania v Kubernetes: ako ich efekt\u00edvne vyu\u017ei\u0165\" src=\"\/wp-content\/uploads\/2020\/01\/09379f30f349a235bb26a670ad0d0bfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Spolo\u010dn\u00fd syst\u00e9m syst\u00e9mov \u0161k\u00e1lovania Kubernetes<\/i><\/p>\n<h2>Typick\u00e9 chyby v automatickom \u0161k\u00e1lovan\u00ed Kubernetes<\/h2>\n<p>\nExistuje nieko\u013eko typick\u00fdch probl\u00e9mov, s ktor\u00fdmi sa devops profesion\u00e1li stret\u00e1vaj\u00fa, ke\u010f sa sna\u017eia pou\u017ei\u0165 automatick\u00e9 \u0161k\u00e1lovanie.<\/p>\n<p>HPA a VPA z\u00e1visia od metriky a niektor\u00fdch historick\u00fdch \u00fadajov. Ak je pridelen\u00fdch nedostato\u010dne zdrojov, moduly bud\u00fa zn\u00ed\u017een\u00e9 a nebud\u00fa schopn\u00e9 generova\u0165 metriky. V tomto pr\u00edpade nikdy ned\u00f4jde k automatick\u00e9mu \u0161k\u00e1lovaniu.<\/p>\n<p>Samotn\u00e1 oper\u00e1cia \u0161k\u00e1lovania je \u010dasovo citliv\u00e1. Chceme, aby sa moduly a klaster \u0161k\u00e1lovali r\u00fdchlo \u2014 sk\u00f4r, ne\u017e si pou\u017e\u00edvate\u013e v\u0161imne ak\u00e9ko\u013evek probl\u00e9my a zlyhania. Preto by sa malo zoh\u013eadni\u0165 priemern\u00e9 \u010dasov\u00e9 obdobie \u0161k\u00e1lovania podov a klastru.<\/p>\n<p>Ide\u00e1lny scen\u00e1r - 4 min\u00faty:<\/p>\n<ol>\n<li>30 sek\u00fand. Aktualiz\u00e1cia cie\u013eov\u00fdch metr\u00edk: 30\u221260 sek\u00fand.\n<\/li>\n<li>30 sek\u00fand. HPA kontroluje hodnoty metr\u00edk: 30 sek\u00fand.\n<\/li>\n<li>Menej ako 2 sekundy. Moduly pod s\u00fa vytvoren\u00e9 a prech\u00e1dzaj\u00fa do \u010dakaj\u00faceho stavu: 1 sekunda.\n<\/li>\n<li>Menej ako 2 sekundy. CA vid\u00ed \u010dakaj\u00face moduly a odosiela po\u017eiadavky na pr\u00edpravu uzlov: 1 sekunda.\n<\/li>\n<li>3 min\u00faty. Cloudov\u00fd poskytovate\u013e pride\u013euje uzly. K8s \u010dak\u00e1, k\u00fdm bud\u00fa pripraven\u00e9: a\u017e 10 min\u00fat (z\u00e1vis\u00ed od nieko\u013ek\u00fdch faktorov).\n<\/li>\n<\/ol>\n<p>\nNajhor\u0161\u00ed (realistickej\u0161\u00ed) scen\u00e1r \u2014 12 min\u00fat:<\/p>\n<ol>\n<li>30 sek\u00fand. Aktualiz\u00e1cia cie\u013eov\u00fdch metrik.\n<\/li>\n<li>30 sek\u00fand. HPA kontroluje hodnoty metrik.\n<\/li>\n<li>Menej ako 2 sekundy. Pod moduly s\u00fa vytvoren\u00e9 a prech\u00e1dzaj\u00fa do stavu \u010dakaj\u00faceho.\n<\/li>\n<li>Menej ako 2 sekundy. CA vid\u00ed \u010dakaj\u00face moduly a posiela po\u017eiadavky na pr\u00edpravu uzlov.\n<\/li>\n<li>10 min\u00fat. Cloudov\u00fd poskytovate\u013e pride\u013euje uzly. K8s \u010dak\u00e1, k\u00fdm bud\u00fa pripraven\u00e9. \u010cas \u010dakania z\u00e1vis\u00ed od nieko\u013ek\u00fdch faktorov, ako s\u00fa oneskorenie poskytovate\u013ea, oneskorenie OS, prev\u00e1dzka pomocn\u00fdch n\u00e1strojov.\n<\/li>\n<\/ol>\n<p>\nNezamie\u0148ajte mechanizmy \u0161k\u00e1lovania cloudov\u00fdch poskytovate\u013eov s na\u0161ou CA. T\u00e1to pracuje vo vn\u00fatri klastru Kubernetes, zatia\u013e \u010do mechanizmus cloudov\u00e9ho poskytovate\u013ea funguje na z\u00e1klade distrib\u00facie uzlov. Nevie, \u010do sa deje s va\u0161imi podmi alebo aplik\u00e1ciou. Tieto syst\u00e9my funguj\u00fa paralelne. <\/p>\n<h2>Ako spravova\u0165 \u0161k\u00e1lovanie v Kubernetes<\/h2>\n<p><\/p>\n<ol>\n<li>Kubernetes je n\u00e1stroj na spr\u00e1vu zdrojov a orchestr\u00e1ciu. Oper\u00e1cie spr\u00e1vy podov a prostriedkov klastru s\u00fa k\u013e\u00fa\u010dov\u00fdm m\u00ed\u013enikom v osvojen\u00ed Kubernetes.\n<\/li>\n<li>Osvojte si logiku \u0161k\u00e1lovate\u013enosti podov s oh\u013eadom na HPA a VPA.\n<\/li>\n<li>CA by sa mala pou\u017e\u00edva\u0165 iba vtedy, ak dobre rozumiete potreb\u00e1m svojich podov a kontajnerov.\n<\/li>\n<li>Pre optim\u00e1lnu konfigur\u00e1ciu klastra je potrebn\u00e9 pochopi\u0165, ako r\u00f4zne \u0161k\u00e1lovacie syst\u00e9my funguj\u00fa spolu.\n<\/li>\n<li>Pri hodnoten\u00ed \u010dasu \u0161k\u00e1lovania majte na pam\u00e4ti najhor\u0161\u00ed a najlep\u0161\u00ed scen\u00e1r.\n<\/li>\n<\/ol>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/484344\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u043e\u0435\u043d\u0438\u044f Kubernetes \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432: \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 Kubernetes. \u041c\u044b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043e\u0431\u0437\u043e\u0440 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438, \u043a\u0430\u043a \u0438\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0421\u0442\u0430\u0442\u044c\u044e Kubernetes Autoscaling 101: Cluster Autoscaler, Horizontal Autoscaler, and Vertical Pod Autoscaler \u043f\u0435\u0440\u0435\u0432\u0435\u043b\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55712","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/tri-urovnya-avtomasshtabirovaniya-v-kubernetes-kak-ih-effektivno-ispolzovat\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0422\u0440\u0438 \u0443\u0440\u043e\u0432\u043d\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Kubernetes: \u043a\u0430\u043a \u0438\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/tri-urovnya-avtomasshtabirovaniya-v-kubernetes-kak-ih-effektivno-ispolzovat\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-26T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:51+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Tri \u00farovne automatick\u00e9ho \u0161k\u00e1lovania v Kubernetes: ako ich efekt\u00edvne vyu\u017ei\u0165 | ProHoster","description":"Na \u00faplne.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/tri-urovnya-avtomasshtabirovaniya-v-kubernetes-kak-ih-effektivno-ispolzovat","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0422\u0440\u0438 \u0443\u0440\u043e\u0432\u043d\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Kubernetes: \u043a\u0430\u043a \u0438\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c | ProHoster","og:description":"\u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e.","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/tri-urovnya-avtomasshtabirovaniya-v-kubernetes-kak-ih-effektivno-ispolzovat","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-26T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55712","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:38:31","updated":"2022-09-29 14:33:55","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/55712","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=55712"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/55712\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=55712"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=55712"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=55712"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}