{"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\/cs\/blog\/administrirovanie\/tri-urovnya-avtomasshtabirovaniya-v-kubernetes-kak-ih-effektivno-ispolzovat","title":{"rendered":"T\u0159i \u00farovn\u011b automatick\u00e9ho \u0161k\u00e1lov\u00e1n\u00ed v Kubernetes: jak je efektivn\u011b vyu\u017e\u00edt","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"T\u0159i \u00farovn\u011b automatick\u00e9ho \u0161k\u00e1lov\u00e1n\u00ed v Kubernetes: jak je efektivn\u011b vyu\u017e\u00edt\" src=\"\/wp-content\/uploads\/2020\/01\/0b076d65db116cabdd1b4ae380d3777d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nPro kompletn\u00ed osvojen\u00ed Kubernetes je nutn\u00e9 zn\u00e1t r\u016fzn\u00e9 zp\u016fsoby \u0161k\u00e1lov\u00e1n\u00ed clusterov\u00fdch zdroj\u016f: podle <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\u00e1\u0159\u016f syst\u00e9mu<\/a><\/noindex>, to je jedna z hlavn\u00edch \u00faloh Kubernetes. P\u0159ipravili jsme vysoce kvalitn\u00ed p\u0159ehled mechanism\u016f horizont\u00e1ln\u00edho a vertik\u00e1ln\u00edho automas\u0161k\u00e1lov\u00e1n\u00ed a zm\u011bn velikosti cluster\u016f, stejn\u011b jako doporu\u010den\u00ed, jak je efektivn\u011b vyu\u017e\u00edvat.<\/p>\n<p>\u010cl\u00e1nek <noindex><a rel=\"nofollow\" href=\"https:\/\/www.magalix.com\/blog\/kubernetes-autoscaling-101\">Kubernetes Autoscaling 101: Cluster Autoscaler, Horizontal Autoscaler, a Vertical Pod Autoscaler<\/a><\/noindex> p\u0159elo\u017eil t\u00fdm, kter\u00fd implementoval automas\u0161k\u00e1lov\u00e1n\u00ed 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>Pro\u010d je d\u016fle\u017eit\u00e9 uva\u017eovat o \u0161k\u00e1lov\u00e1n\u00ed <\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/blog\/kubernetes-for-much-stuff\">Kubernetes<\/a><\/noindex> \u2014 n\u00e1stroj pro spr\u00e1vu zdroj\u016f a orchestraci. Samoz\u0159ejm\u011b nen\u00ed \u0161patn\u00e9 si pohr\u00e1t s cool funkcemi nasazen\u00ed, monitorov\u00e1n\u00ed a spr\u00e1vy pod\u016f (modul pod \u2014 skupina kontejner\u016f spou\u0161t\u011bn\u00fdch na z\u00e1klad\u011b po\u017eadavk\u016f). <\/p>\n<p>Je v\u0161ak tak\u00e9 t\u0159eba uva\u017eovat o takov\u00fdch ot\u00e1zk\u00e1ch:<\/p>\n<ol>\n<li>Jak \u0161k\u00e1lovat moduly a aplikace?\n<\/li>\n<li>Jak udr\u017eovat kontejnery v provozuschopn\u00e9m a efektivn\u00edm stavu?\n<\/li>\n<li>Jak reagovat na neust\u00e1l\u00e9 zm\u011bny v k\u00f3du a pracovn\u00edch z\u00e1t\u011b\u017e\u00edch od u\u017eivatel\u016f?\n<\/li>\n<\/ol>\n<p>\nNastaven\u00ed cluster\u016f Kubernetes pro vyv\u00e1\u017een\u00ed zdroj\u016f a v\u00fdkonu m\u016f\u017ee b\u00fdt slo\u017eit\u00fd \u00fakol, vy\u017eaduje expert\u00edzu ohledn\u011b vnit\u0159n\u00ed pr\u00e1ce Kubernetes. Z\u00e1t\u011b\u017e na va\u0161i aplikaci nebo slu\u017eby se m\u016f\u017ee b\u011bhem dne nebo dokonce jedn\u00e9 hodiny m\u011bnit, proto by m\u011blo b\u00fdt vyv\u00e1\u017een\u00ed ch\u00e1p\u00e1no jako nep\u0159etr\u017eit\u00fd proces.<\/p>\n<h2>\u00darovn\u011b automas\u0161k\u00e1lov\u00e1n\u00ed Kubernetes<\/h2>\n<p>\nEfektivn\u00ed automas\u0161k\u00e1lov\u00e1n\u00ed vy\u017eaduje koordinaci mezi dv\u011bma \u00farovn\u011bmi: <\/p>\n<ol>\n<li>\u00darove\u0148 pod\u016f zahrnuj\u00edc\u00ed horizont\u00e1ln\u00ed (Horizontal Pod Autoscaler, HPA) a vertik\u00e1ln\u00ed automatick\u00e9 \u0161k\u00e1lov\u00e1n\u00ed (Vertical Pod Autoscaler, VPA). Toto \u0161k\u00e1lov\u00e1n\u00ed se t\u00fdk\u00e1 dostupn\u00fdch zdroj\u016f pro va\u0161e kontejnery.\n<\/li>\n<li>\u00darove\u0148 clusteru, kterou spravuje syst\u00e9m klasick\u00e9ho automas\u0161k\u00e1lov\u00e1n\u00ed (Cluster Autoscaler, CA), zvy\u0161uje nebo sni\u017euje po\u010det uzl\u016f uvnit\u0159 clusteru.\n<\/li>\n<\/ol>\n<p><\/p>\n<h2>Modul horizont\u00e1ln\u00edho automas\u0161k\u00e1lov\u00e1n\u00ed (HPA)<\/h2>\n<p>\nJak n\u00e1zev napov\u00edd\u00e1, HPA \u0161k\u00e1luje po\u010det replik pod\u016f. Jako spou\u0161t\u011b\u010de pro zm\u011bnu po\u010dtu replik v\u011bt\u0161ina DevOps odborn\u00edk\u016f pou\u017e\u00edv\u00e1 zat\u00ed\u017een\u00ed CPU a pam\u011bti. Nicm\u00e9n\u011b je mo\u017en\u00e9 \u0161k\u00e1lovat syst\u00e9m na z\u00e1klad\u011b <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/run-application\/horizontal-pod-autoscale\/#support-for-custom-metrics\">u\u017eivatelsk\u00fdch metrik<\/a><\/noindex>, jejich <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/run-application\/horizontal-pod-autoscale\/#support-for-multiple-metrics\">kombinac\u00ed<\/a><\/noindex> nebo dokonce <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes-engine\/docs\/tutorials\/external-metrics-autoscaling\">vn\u011bj\u0161\u00edch metrik<\/a><\/noindex>.<\/p>\n<p>Vysoce \u00farov\u0148ov\u00e1 sch\u00e9ma fungov\u00e1n\u00ed HPA:<\/p>\n<ol>\n<li>HPA neust\u00e1le kontroluje hodnoty metrik uveden\u00e9 p\u0159i instalaci s v\u00fdchoz\u00edm intervalem 30 sekund.\n<\/li>\n<li>HPA se pokou\u0161\u00ed zv\u00fd\u0161it po\u010det modul\u016f, pokud je dosa\u017eeno stanoven\u00e9ho prahu.\n<\/li>\n<li>HPA aktualizuje po\u010det replik uvnit\u0159 \u0159adi\u010de nasazen\u00ed\/replikace.\n<\/li>\n<li>\u0158adi\u010d nasazen\u00ed\/replikace pot\u00e9 nasad\u00ed v\u0161echny pot\u0159ebn\u00e9 dal\u0161\u00ed moduly.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"T\u0159i \u00farovn\u011b automatick\u00e9ho \u0161k\u00e1lov\u00e1n\u00ed v Kubernetes: jak je efektivn\u011b vyu\u017e\u00edt\" src=\"\/wp-content\/uploads\/2020\/01\/e98534431712eb3303668446b0fe567b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>HPA spou\u0161t\u00ed proces nasazen\u00ed modul\u016f p\u0159i dosa\u017een\u00ed prahov\u00e9 hodnoty metrik.<\/i><\/p>\n<p>P\u0159i pou\u017eit\u00ed HPA m\u011bjte na pam\u011bti n\u00e1sleduj\u00edc\u00ed:<\/p>\n<ul>\n<li>V\u00fdchoz\u00ed interval kontroly HPA je 30 sekund. Je nastavov\u00e1n p\u0159\u00edznakem <i>horizontal-pod-autoscaler-sync-period<\/i> v \u0159adi\u010di.\n<\/li>\n<li>Relativn\u00ed odchylka je ve v\u00fdchoz\u00edm nastaven\u00ed 10%.\n<\/li>\n<li>Po posledn\u00edm zv\u00fd\u0161en\u00ed po\u010dtu modul\u016f HPA \u010dek\u00e1 na stabilizaci metrik po dobu t\u0159\u00ed minut. Tento interval je nastaven p\u0159\u00edznakem <i>horizontal-pod-autoscaler-upscale-delay<\/i>.\n<\/li>\n<li>Po posledn\u00edm sn\u00ed\u017een\u00ed po\u010dtu modul\u016f HPA \u010dek\u00e1 na stabilizaci po dobu p\u011bti minut. Tento interval je nastaven p\u0159\u00edznakem <i>horizontal-pod-autoscaler-downscale-delay<\/i>.\n<\/li>\n<li>HPA funguje nejl\u00e9pe s objekty nasazen\u00ed, nikoli s \u0159adi\u010di replik. Horizont\u00e1ln\u00ed automatick\u00e9 \u0161k\u00e1lov\u00e1n\u00ed nen\u00ed kompatibiln\u00ed s postupn\u00fdm aktualizov\u00e1n\u00edm (rolling update), kter\u00e9 p\u0159\u00edmo manipuluje s \u0159adi\u010di replik. P\u0159i nasazen\u00ed z\u00e1vis\u00ed po\u010det replik p\u0159\u00edmo na objektech nasazen\u00ed.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Vertik\u00e1ln\u00ed automatick\u00e9 \u0161k\u00e1lov\u00e1n\u00ed pod\u016f<\/h2>\n<p>\nVertik\u00e1ln\u00ed automatick\u00e9 \u0161k\u00e1lov\u00e1n\u00ed (VPA) alokuje v\u00edce (nebo m\u00e9n\u011b) procesorov\u00e9ho \u010dasu nebo pam\u011bti pro existuj\u00edc\u00ed pody. Je vhodn\u00e9 jak pro pod s ulo\u017een\u00fdm stavem (stateful), tak bez n\u011bj (stateless), av\u0161ak je hlavn\u011b ur\u010deno pro slu\u017eby s ulo\u017een\u00fdm stavem. M\u016f\u017eete v\u0161ak aplikovat VPA tak\u00e9 pro moduly bez ulo\u017een\u00e9ho stavu, pokud je pot\u0159eba automaticky upravit mno\u017estv\u00ed p\u016fvodn\u011b p\u0159id\u011blen\u00fdch zdroj\u016f. <\/p>\n<p>VPA tak\u00e9 reaguje na ud\u00e1losti OOM (out of memory, nedostatek pam\u011bti). K \u00faprav\u011b procesorov\u00e9ho \u010dasu a objemu pam\u011bti je nutn\u00e9 restartovat pody. P\u0159i restartu VPA dodr\u017euje rozpo\u010det alokace (<noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/disruptions\/\">pods distribution budget, PDB<\/a><\/noindex>), aby zajistil minim\u00e1ln\u011b pot\u0159ebn\u00fd po\u010det modul\u016f. <\/p>\n<p>M\u016f\u017eete nastavit minim\u00e1ln\u00ed a maxim\u00e1ln\u00ed objem zdroj\u016f pro ka\u017ed\u00fd modul. Nap\u0159\u00edklad m\u016f\u017eete omezit maxim\u00e1ln\u00ed objem p\u0159id\u011blen\u00e9 pam\u011bti na 8 GB. To je u\u017eite\u010dn\u00e9, pokud aktu\u00e1ln\u00ed uzly nemohou p\u0159id\u011blit v\u00edce ne\u017e 8 GB pam\u011bti na kontejner. Podrobn\u00e9 specifikace a mechanismus fungov\u00e1n\u00ed jsou pops\u00e1ny v <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/community\/blob\/master\/contributors\/design-proposals\/autoscaling\/vertical-pod-autoscaler.md\">ofici\u00e1ln\u00ed wiki VPA<\/a><\/noindex>.<\/p>\n<p>Krom\u011b toho m\u00e1 VPA zaj\u00edmavou funkci doporu\u010den\u00ed (VPA Recommender). Sleduje vyu\u017eit\u00ed zdroj\u016f a ud\u00e1losti OOM pro v\u0161echny moduly, aby navrhl nov\u00e9 hodnoty pam\u011bti a procesorov\u00e9ho \u010dasu na z\u00e1klad\u011b inteligentn\u00edho algoritmu zohled\u0148uj\u00edc\u00edho historick\u00e9 metriky. K dispozici je tak\u00e9 API, kter\u00e9 p\u0159ij\u00edm\u00e1 popisova\u010d podu a vrac\u00ed navrhovan\u00e9 hodnoty zdroj\u016f.<\/p>\n<p>Je t\u0159eba poznamenat, \u017ee VPA Recommender nesleduje \u201elimit\u201c zdroj\u016f. To m\u016f\u017ee v\u00e9st k tomu, \u017ee modul monopolizuje zdroje uvnit\u0159 uzl\u016f. Je lep\u0161\u00ed nastavit limit na \u00farovni prostoru jmen, aby se p\u0159ede\u0161lo nadm\u011brn\u00e9mu vyu\u017e\u00edv\u00e1n\u00ed pam\u011bti nebo procesorov\u00e9ho \u010dasu.<\/p>\n<p>Vysok\u00e1 \u00farove\u0148 sch\u00e9matu pr\u00e1ce VPA:<\/p>\n<ol>\n<li>VPA neust\u00e1le kontroluje hodnoty metrik, kter\u00e9 byly uvedeny p\u0159i instalaci, v intervalu 10 sekund.\n<\/li>\n<li>Pokud je dosa\u017eeno zadan\u00e9ho prahu, VPA se pokus\u00ed zm\u011bnit p\u0159id\u011blen\u00e9 mno\u017estv\u00ed zdroj\u016f.\n<\/li>\n<li>VPA aktualizuje mno\u017estv\u00ed zdroj\u016f uvnit\u0159 ovlada\u010de nasazen\u00ed\/replicace.\n<\/li>\n<li>P\u0159i restartu modul\u016f se v\u0161echny nov\u00e9 zdroje aplikuj\u00ed na vytvo\u0159en\u00e9 instance.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"T\u0159i \u00farovn\u011b automatick\u00e9ho \u0161k\u00e1lov\u00e1n\u00ed v Kubernetes: jak je efektivn\u011b vyu\u017e\u00edt\" src=\"\/wp-content\/uploads\/2020\/01\/324702d5e36e9fcf45ced8b3f276db52.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>VPA p\u0159id\u00e1v\u00e1 pot\u0159ebn\u00e9 mno\u017estv\u00ed zdroj\u016f <\/i><\/p>\n<p>Zva\u017ete n\u00e1sleduj\u00edc\u00ed skute\u010dnosti p\u0159i pou\u017e\u00edv\u00e1n\u00ed VPA:<\/p>\n<ul>\n<li>\u0160k\u00e1lov\u00e1n\u00ed vy\u017eaduje povinn\u00fd restart podu. Je to nezbytn\u00e9, aby se p\u0159ede\u0161lo nestabiln\u00edmu chov\u00e1n\u00ed po proveden\u00ed zm\u011bn. Pro zaji\u0161t\u011bn\u00ed spolehlivosti se moduly restartuj\u00ed a distribuuj\u00ed na uzlech na z\u00e1klad\u011b nov\u011b p\u0159id\u011blen\u00fdch zdroj\u016f.\n<\/li>\n<li>VPA a HPA jsou prozat\u00edm navz\u00e1jem nekompatibiln\u00ed a nemohou fungovat na stejn\u00fdch podech. Pokud nasad\u00edte oba mechanismy \u0161k\u00e1lov\u00e1n\u00ed v jednom clusteru, ujist\u011bte se, \u017ee jejich nastaven\u00ed nezp\u016fsob\u00ed, \u017ee se aktivuj\u00ed na stejn\u00fdch objektech.\n<\/li>\n<li>VPA nastavuje po\u017eadavky kontejner\u016f na zdroje pouze na z\u00e1klad\u011b jejich minul\u00e9ho a sou\u010dasn\u00e9ho pou\u017e\u00edv\u00e1n\u00ed. Nezav\u00e1d\u00ed limity pro vyu\u017e\u00edv\u00e1n\u00ed zdroj\u016f. Mohou se vyskytnout probl\u00e9my s nespr\u00e1vn\u00fdm fungov\u00e1n\u00edm aplikac\u00ed, kter\u00e9 za\u010dnou zab\u00edrat st\u00e1le v\u00edce zdroj\u016f, co\u017e povede k tomu, \u017ee Kubernetes vypne dan\u00fd pod.\n<\/li>\n<li>VPA je zat\u00edm v ran\u00e9 f\u00e1zi v\u00fdvoje. Bu\u010fte p\u0159ipraveni na to, \u017ee syst\u00e9m m\u016f\u017ee v bl\u00edzk\u00e9 dob\u011b proj\u00edt ur\u010dit\u00fdmi zm\u011bnami. M\u016f\u017eete si p\u0159e\u010d\u00edst o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/autoscaler\/tree\/master\/vertical-pod-autoscaler#known-limitations-of-the-alpha-version\">zn\u00e1m\u00fdch omezen\u00edch<\/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\u00e1nech v\u00fdvoje<\/a><\/noindex>. V pl\u00e1nech je implementovat spolupr\u00e1ci mezi VPA a HPA, stejn\u011b jako nasazen\u00ed modul\u016f spolu s politikou vertik\u00e1ln\u00edho automatick\u00e9ho \u0161k\u00e1lov\u00e1n\u00ed pro n\u011b (nap\u0159\u00edklad speci\u00e1ln\u00ed \u0161t\u00edtek 'requires VPA').\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Automatick\u00e9 \u0161k\u00e1lov\u00e1n\u00ed klastru Kubernetes<\/h2>\n<p>\nAutomatick\u00e9 \u0161k\u00e1lov\u00e1n\u00ed klastru (Cluster Autoscaler, CA) m\u011bn\u00ed po\u010det uzl\u016f na z\u00e1klad\u011b po\u010dtu \u010dekaj\u00edc\u00edch modul\u016f pod. Syst\u00e9m periodicky kontroluje p\u0159\u00edtomnost \u010dekaj\u00edc\u00edch modul\u016f \u2014 a zv\u011bt\u0161uje velikost klastru, pokud jsou pot\u0159eba dal\u0161\u00ed zdroje a pokud klastr nep\u0159ekra\u010duje stanoven\u00e9 limity. CA interaguje s poskytovatelem cloudov\u00fdch slu\u017eeb, \u017e\u00e1d\u00e1 o dal\u0161\u00ed uzly nebo uvol\u0148uje ne\u010dinn\u00e9. Prvn\u00ed ve\u0159ejn\u00e1 verze CA byla p\u0159edstavena v Kubernetes 1.8.<\/p>\n<p>Vysoce\u00farov\u0148ov\u00fd diagram fungov\u00e1n\u00ed CA:<\/p>\n<ol>\n<li>CA kontroluje p\u0159\u00edtomnost modul\u016f ve stavu \u010dek\u00e1n\u00ed s v\u00fdchoz\u00edm intervalem 10 sekund.\n<\/li>\n<li>Pokud je jeden nebo v\u00edce modul\u016f ve stavu \u010dek\u00e1n\u00ed kv\u016fli nedostate\u010dn\u00fdm dostupn\u00fdm zdroj\u016fm v klastru pro jejich rozd\u011blen\u00ed, pokus\u00ed se p\u0159ipravit jeden nebo v\u00edce dodate\u010dn\u00fdch uzl\u016f.\n<\/li>\n<li>Kdy\u017e poskytovatel cloudov\u00fdch slu\u017eeb p\u0159id\u011bl\u00ed pot\u0159ebn\u00fd uzel, p\u0159ipoj\u00ed se k klastru a je p\u0159ipraven obsluhovat moduly pod.\n<\/li>\n<li>Pl\u00e1nova\u010d Kubernetes rozd\u011bluje \u010dekaj\u00edc\u00ed moduly na nov\u00fd uzel. Pokud n\u011bkter\u00e9 moduly st\u00e1le z\u016fst\u00e1vaj\u00ed ve stavu \u010dek\u00e1n\u00ed, proces se opakuje \u2014 a do klastru se p\u0159id\u00e1vaj\u00ed nov\u00e9 uzly.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"T\u0159i \u00farovn\u011b automatick\u00e9ho \u0161k\u00e1lov\u00e1n\u00ed v Kubernetes: jak je efektivn\u011b vyu\u017e\u00edt\" src=\"\/wp-content\/uploads\/2020\/01\/2cd3c97f5d1b040b813940a4e804365e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Automatick\u00e9 p\u0159id\u011blov\u00e1n\u00ed uzl\u016f klastru v cloudu<\/i><\/p>\n<p>Zva\u017ete n\u00e1sleduj\u00edc\u00ed p\u0159i pou\u017e\u00edv\u00e1n\u00ed CA:<\/p>\n<ul>\n<li>CA zaji\u0161\u0165uje, \u017ee v\u0161echny moduly v klastru maj\u00ed m\u00edsto pro spu\u0161t\u011bn\u00ed, bez ohledu na \u00farove\u0148 zat\u00ed\u017een\u00ed procesoru. Krom\u011b toho se sna\u017e\u00ed zajistit, aby v klastru nebyly zbyte\u010dn\u00e9 uzly.\n<\/li>\n<li>CA registruje pot\u0159ebu \u0161k\u00e1lov\u00e1n\u00ed p\u0159ibli\u017en\u011b po 30 sekund\u00e1ch.\n<\/li>\n<li>Jakmile uzel p\u0159estane b\u00fdt pot\u0159ebn\u00fd, CA ve v\u00fdchoz\u00edm nastaven\u00ed \u010dek\u00e1 10 minut, ne\u017e za\u010dne \u0161k\u00e1lovat syst\u00e9m.\n<\/li>\n<li>V syst\u00e9mu automatick\u00e9ho \u0161k\u00e1lov\u00e1n\u00ed existuje pojem roz\u0161i\u0159ova\u010de (expanders). To jsou r\u016fzn\u00e9 strategie pro v\u00fdb\u011br skupiny uzl\u016f, do kter\u00e9 budou p\u0159id\u00e1ny nov\u00e9.\n<\/li>\n<li>Odpov\u011bdn\u011b pou\u017eijte mo\u017enost <i>cluster-autoscaler.kubernetes.io\/safe-to-evict (true)<\/i>. Pokud nasad\u00edte mnoho pod\u016f nebo pokud budou rozpt\u00fdleny po v\u0161ech uzlech, v\u00fdrazn\u011b ztrat\u00edte schopnost zmen\u0161ovat m\u011b\u0159\u00edtko clusteru.\n<\/li>\n<li>Pou\u017eijte <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/disruptions\/\">PodDisruptionBudgets<\/a><\/noindex>, abyste zabr\u00e1nili odstra\u0148ov\u00e1n\u00ed pod\u016f, co\u017e by mohlo zp\u016fsobit \u00fapln\u00fd v\u00fdpadek \u010d\u00e1sti va\u0161\u00ed aplikace.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Jak spolu syst\u00e9my automatick\u00e9ho \u0161k\u00e1lov\u00e1n\u00ed Kubernetes interaguj\u00ed<\/h2>\n<p>\nPro ide\u00e1ln\u00ed harmonii by m\u011blo b\u00fdt automatick\u00e9 \u0161k\u00e1lov\u00e1n\u00ed aplikov\u00e1no na \u00farovni pod\u016f (HPA\/VPA) i na \u00farovni clusteru. Vz\u00e1jemn\u011b si relativn\u011b snadno rozum\u00ed:<\/p>\n<ol>\n<li>HPA nebo VPA aktualizuj\u00ed repliky pod\u016f nebo prost\u0159edky vyhrazen\u00e9 pro st\u00e1vaj\u00edc\u00ed pody.\n<\/li>\n<li>Pokud pro pl\u00e1novan\u00e9 \u0161k\u00e1lov\u00e1n\u00ed chyb\u00ed uzly, CA si v\u0161imne pody ve stavu \u010dek\u00e1n\u00ed.\n<\/li>\n<li>CA p\u0159id\u011bluje nov\u00e9 uzly.\n<\/li>\n<li>Pody jsou rozd\u011bleny mezi nov\u00e9 uzly.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"T\u0159i \u00farovn\u011b automatick\u00e9ho \u0161k\u00e1lov\u00e1n\u00ed v Kubernetes: jak je efektivn\u011b vyu\u017e\u00edt\" src=\"\/wp-content\/uploads\/2020\/01\/09379f30f349a235bb26a670ad0d0bfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Spole\u010dn\u00fd syst\u00e9m automatick\u00e9ho \u0161k\u00e1lov\u00e1n\u00ed Kubernetes<\/i><\/p>\n<h2>Typick\u00e9 chyby p\u0159i automatick\u00e9m \u0161k\u00e1lov\u00e1n\u00ed Kubernetes<\/h2>\n<p>\nExistuje n\u011bkolik typick\u00fdch probl\u00e9m\u016f, se kter\u00fdmi se devops t\u00fdm setk\u00e1v\u00e1, kdy\u017e se sna\u017e\u00ed aplikovat automatick\u00e9 \u0161k\u00e1lov\u00e1n\u00ed.<\/p>\n<p>HPA a VPA z\u00e1vis\u00ed na metrik\u00e1ch a n\u011bkter\u00fdch historick\u00fdch datech. Pokud je p\u0159id\u011bleno nedostate\u010dn\u00e9 mno\u017estv\u00ed prost\u0159edk\u016f, pody budou zredukov\u00e1ny a nebudou schopny generovat metriky. V takov\u00e9m p\u0159\u00edpad\u011b automatick\u00e9 \u0161k\u00e1lov\u00e1n\u00ed nikdy nenastane.<\/p>\n<p>Samotn\u00e1 operace \u0161k\u00e1lov\u00e1n\u00ed je \u010dasov\u011b citliv\u00e1. Chceme, aby se moduly a klastr \u0161k\u00e1lovaly rychle \u2014 d\u0159\u00edve, ne\u017e si u\u017eivatel\u00e9 v\u0161imnou n\u011bjak\u00fdch probl\u00e9m\u016f nebo selh\u00e1n\u00ed. Proto je t\u0159eba vz\u00edt v \u00favahu pr\u016fm\u011brn\u00fd \u010das \u0161k\u00e1lov\u00e1n\u00ed pod\u016f a klastru.<\/p>\n<p>Ide\u00e1ln\u00ed sc\u00e9n\u00e1\u0159 \u2014 4 minuty:<\/p>\n<ol>\n<li>30 sekund. Aktualizace c\u00edlov\u00fdch metrik: 30\u201360 sekund.\n<\/li>\n<li>30 sekund. HPA kontroluje hodnoty metrik: 30 sekund.\n<\/li>\n<li>M\u00e9n\u011b ne\u017e 2 sekundy. Pody vytvo\u0159eny a p\u0159ech\u00e1z\u00ed do stavu \u010dek\u00e1n\u00ed: 1 sekunda.\n<\/li>\n<li>M\u00e9n\u011b ne\u017e 2 sekundy. CA vid\u00ed \u010dekaj\u00edc\u00ed pody a pos\u00edl\u00e1 v\u00fdzvy na p\u0159\u00edpravu uzl\u016f: 1 sekunda.\n<\/li>\n<li>3 minuty. Cloudov\u00fd poskytovatel p\u0159id\u011bluje uzly. K8s \u010dek\u00e1, a\u017e budou p\u0159ipraveny: a\u017e 10 minut (z\u00e1vis\u00ed na n\u011bkolika faktorech).\n<\/li>\n<\/ol>\n<p>\nNejhor\u0161\u00ed (realisti\u010dt\u011bj\u0161\u00ed) sc\u00e9n\u00e1\u0159 \u2014 12 minut:<\/p>\n<ol>\n<li>30 sekund. Aktualizace c\u00edlov\u00fdch metrik.\n<\/li>\n<li>30 sekund. HPA kontroluje hodnoty metrik.\n<\/li>\n<li>M\u00e9n\u011b ne\u017e 2 sekundy. Pod moduly jsou vytvo\u0159eny a p\u0159ech\u00e1zej\u00ed do stavu \u010dek\u00e1n\u00ed.\n<\/li>\n<li>M\u00e9n\u011b ne\u017e 2 sekundy. CA vid\u00ed \u010dekaj\u00edc\u00ed moduly a pos\u00edl\u00e1 po\u017eadavky na p\u0159\u00edpravu uzl\u016f.\n<\/li>\n<li>10 minut. Cloudov\u00fd poskytovatel p\u0159id\u011bluje uzly. K8s \u010dek\u00e1, a\u017e budou p\u0159ipraveny. Doba \u010dek\u00e1n\u00ed z\u00e1vis\u00ed na n\u011bkolika faktorech, jako jsou zpo\u017ed\u011bn\u00ed poskytovatele, zpo\u017ed\u011bn\u00ed OS a pr\u00e1ce pomocn\u00fdch n\u00e1stroj\u016f.\n<\/li>\n<\/ol>\n<p>\nNeple\u0165te si mechanismy \u0161k\u00e1lov\u00e1n\u00ed cloudov\u00fdch poskytovatel\u016f s na\u0161\u00edm CA. To posledn\u00ed funguje uvnit\u0159 klastru Kubernetes, zat\u00edmco mechanismus cloudov\u00e9ho poskytovatele pracuje na z\u00e1klad\u011b distribuce uzl\u016f. Nev\u00ed, co se d\u011bje s va\u0161imi pody nebo aplikacemi. Tyto syst\u00e9my funguj\u00ed paraleln\u011b. <\/p>\n<h2>Jak spravovat \u0161k\u00e1lov\u00e1n\u00ed v Kubernetes<\/h2>\n<p><\/p>\n<ol>\n<li>Kubernetes je n\u00e1stroj pro spr\u00e1vu prost\u0159edk\u016f a orchestraci. Operace spr\u00e1vy pod\u016f a prost\u0159edk\u016f klastru jsou kl\u00ed\u010dov\u00fdm miln\u00edkem v osvojen\u00ed Kubernetes.\n<\/li>\n<li>Osvojte si logiku \u0161k\u00e1lovatelnosti pod\u016f s ohledem na HPA a VPA.\n<\/li>\n<li>CA by m\u011bla b\u00fdt pou\u017eita pouze tehdy, pokud dob\u0159e rozum\u00edte pot\u0159eb\u00e1m sv\u00fdch pod\u016f a kontejner\u016f.\n<\/li>\n<li>Pro optim\u00e1ln\u00ed nastaven\u00ed clusteru je t\u0159eba pochopit, jak r\u016fzn\u00e9 syst\u00e9my \u0161k\u00e1lov\u00e1n\u00ed spolupracuj\u00ed.\n<\/li>\n<li>P\u0159i hodnocen\u00ed doby \u0161k\u00e1lov\u00e1n\u00ed m\u011bjte na pam\u011bti nejhor\u0161\u00ed a nejlep\u0161\u00ed sc\u00e9n\u00e1\u0159e.\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.3 - 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\/cs\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\udd47T\u0159i \u00farovn\u011b automatick\u00e9ho \u0161k\u00e1lov\u00e1n\u00ed v Kubernetes: jak je efektivn\u011b vyu\u017e\u00edt | ProHoster","description":"Pro \u00faplnost.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/tri-urovnya-avtomasshtabirovaniya-v-kubernetes-kak-ih-effektivno-ispolzovat","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/55712","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=55712"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/55712\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=55712"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=55712"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=55712"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}