{"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\/pl\/blog\/administrirovanie\/tri-urovnya-avtomasshtabirovaniya-v-kubernetes-kak-ih-effektivno-ispolzovat","title":{"rendered":"Trzy poziomy automatycznego skalowania w Kubernetes: jak je efektywnie wykorzysta\u0107","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Trzy poziomy automatycznego skalowania w Kubernetes: jak je efektywnie wykorzysta\u0107\" src=\"\/wp-content\/uploads\/2020\/01\/0b076d65db116cabdd1b4ae380d3777d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAby w pe\u0142ni zrozumie\u0107 Kubernetes, nale\u017cy zna\u0107 r\u00f3\u017cne metody skalowania zasob\u00f3w klastr\u00f3w: wed\u0142ug <noindex><a rel=\"nofollow\" href=\"https:\/\/speakerdeck.com\/thockin\/everything-you-ever-wanted-to-know-about-resource-scheduling-dot-dot-dot-almost\">s\u0142\u00f3w tw\u00f3rc\u00f3w systemu<\/a><\/noindex>, to jedno z g\u0142\u00f3wnych zada\u0144 Kubernetes. Przygotowali\u015bmy podsumowanie mechanizm\u00f3w automatycznego skalowania poziomego i pionowego oraz zmiany rozmiaru klastr\u00f3w, a tak\u017ce wskaz\u00f3wki, jak skutecznie je wykorzysta\u0107.<\/p>\n<p>Artyku\u0142 <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> przet\u0142umaczy\u0142 zesp\u00f3\u0142, kt\u00f3ry wdro\u017cy\u0142 automatyczne skalowanie w <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>Dlaczego warto pomy\u015ble\u0107 o skalowaniu <\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/blog\/kubernetes-for-much-stuff\">Kubernetes<\/a><\/noindex> \u2014 narz\u0119dzie do zarz\u0105dzania zasobami i orkiestracji. Oczywi\u015bcie dobrze jest pobawi\u0107 si\u0119 wspania\u0142ymi funkcjami wdra\u017cania, monitorowania i zarz\u0105dzania podami (modu\u0142 pod \u2014 grupa kontener\u00f3w uruchamianych w odpowiedzi na \u017c\u0105danie). <\/p>\n<p>Nale\u017cy jednak tak\u017ce rozwa\u017cy\u0107 takie kwestie, jak:<\/p>\n<ol>\n<li>Jak skalowa\u0107 modu\u0142y i aplikacje?\n<\/li>\n<li>Jak utrzyma\u0107 kontenery w dzia\u0142aj\u0105cym i efektywnym stanie?\n<\/li>\n<li>Jak reagowa\u0107 na ci\u0105g\u0142e zmiany w kodzie i obci\u0105\u017ceniach od u\u017cytkownik\u00f3w?\n<\/li>\n<\/ol>\n<p>\nKonfiguracja klastr\u00f3w Kubernetes do r\u00f3wnowa\u017cenia zasob\u00f3w i wydajno\u015bci mo\u017ce by\u0107 skomplikowanym zadaniem, wymaga to eksperckiej wiedzy na temat wewn\u0119trznego dzia\u0142ania Kubernetes. Obci\u0105\u017cenie aplikacji lub us\u0142ug mo\u017ce si\u0119 zmienia\u0107 w ci\u0105gu dnia lub nawet jednego godziny, dlatego r\u00f3wnowa\u017cenie najlepiej postrzega\u0107 jako proces ci\u0105g\u0142y.<\/p>\n<h2>Poziomy automatycznego skalowania Kubernetes<\/h2>\n<p>\nEfektywne automatyczne skalowanie wymaga koordynacji mi\u0119dzy dwoma poziomami: <\/p>\n<ol>\n<li>Warstwa pod\u00f3w, obejmuj\u0105ca poziome (Horizontal Pod Autoscaler, HPA) i pionowe automatyczne skalowanie (Vertical Pod Autoscaler, VPA). To skalowanie istniej\u0105cych zasob\u00f3w dla twoich kontener\u00f3w.\n<\/li>\n<li>Poziom klastra, zarz\u0105dzany przez system automatycznego skalowania klastra (Cluster Autoscaler, CA), zwi\u0119ksza lub zmniejsza liczb\u0119 w\u0119z\u0142\u00f3w w klastrze.\n<\/li>\n<\/ol>\n<p><\/p>\n<h2>Modu\u0142 automatycznego skalowania poziomego (HPA)<\/h2>\n<p>\nJak sugeruje nazwa, HPA skaluje liczb\u0119 replik pod\u00f3w. Jako wyzwalacze do zmiany liczby replik wi\u0119kszo\u015b\u0107 devops\u00f3w wykorzystuje obci\u0105\u017cenie procesora i pami\u0119ci. Mo\u017cna r\u00f3wnie\u017c skalowa\u0107 system na podstawie <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/run-application\/horizontal-pod-autoscale\/#support-for-custom-metrics\">metryk u\u017cytkownika<\/a><\/noindex>, ich <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/run-application\/horizontal-pod-autoscale\/#support-for-multiple-metrics\">kombinacji<\/a><\/noindex> lub nawet <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes-engine\/docs\/tutorials\/external-metrics-autoscaling\">metryk zewn\u0119trznych<\/a><\/noindex>.<\/p>\n<p>Wysokopoziomowy schemat dzia\u0142ania HPA:<\/p>\n<ol>\n<li>HPA nieprzerwanie sprawdza warto\u015bci metryk okre\u015blonych podczas instalacji, co 30 sekund.\n<\/li>\n<li>HPA d\u0105\u017cy do zwi\u0119kszenia liczby modu\u0142\u00f3w, je\u015bli osi\u0105gni\u0119ty zostanie ustalony pr\u00f3g.\n<\/li>\n<li>HPA aktualizuje liczb\u0119 replik w obr\u0119bie kontrolera wdro\u017cenia\/rekonstrukcji.\n<\/li>\n<li>Kontroler wdro\u017cenia\/rekonstrukcji nast\u0119pnie wdra\u017ca wszystkie potrzebne dodatkowe modu\u0142y.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Trzy poziomy automatycznego skalowania w Kubernetes: jak je efektywnie wykorzysta\u0107\" src=\"\/wp-content\/uploads\/2020\/01\/e98534431712eb3303668446b0fe567b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>HPA uruchamia proces wdra\u017cania modu\u0142\u00f3w przy osi\u0105gni\u0119ciu progu warto\u015bci metryk.<\/i><\/p>\n<p>Podczas korzystania z HPA nale\u017cy pami\u0119ta\u0107 o nast\u0119puj\u0105cych rzeczach:<\/p>\n<ul>\n<li>Domy\u015blny interwa\u0142 sprawdzania HPA wynosi 30 sekund. Jest ustawiany flag\u0105. <i>horizontal-pod-autoscaler-sync-period<\/i> w mened\u017cerze kontrolera.\n<\/li>\n<li>Domy\u015blna wzgl\u0119dna dok\u0142adno\u015b\u0107 wynosi 10%.\n<\/li>\n<li>Po ostatnim zwi\u0119kszeniu liczby modu\u0142\u00f3w HPA czeka na stabilizacj\u0119 metryk przez trzy minuty. Ten interwa\u0142 jest ustawiany flag\u0105. <i>horizontal-pod-autoscaler-upscale-delay<\/i>.\n<\/li>\n<li>Po ostatnim zmniejszeniu liczby modu\u0142\u00f3w HPA czeka na stabilizacj\u0119 przez pi\u0119\u0107 minut. Ten interwa\u0142 jest ustawiany flag\u0105. <i>horizontal-pod-autoscaler-downscale-delay<\/i>.\n<\/li>\n<li>HPA najlepiej dzia\u0142a z obiektami wdro\u017ceniowymi, a nie z kontrolerami replikacji. Poziome automatyczne skalowanie jest niekompatybilne z aktualizacj\u0105 w trybie rolling update, kt\u00f3ra bezpo\u015brednio manipuluje kontrolerami replikacji. Podczas wdra\u017cania liczba replik zale\u017cy bezpo\u015brednio od obiekt\u00f3w wdro\u017ceniowych.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Pionowe automatyczne skalowanie pod\u00f3w<\/h2>\n<p>\nPionowe automatyczne skalowanie (VPA) przydziela wi\u0119cej (lub mniej) czasu procesora lub pami\u0119ci dla istniej\u0105cych pod\u00f3w. Pasuje do pod\u00f3w z zachowaniem stanu (stateful) lub bez niego (stateless), ale g\u0142\u00f3wnie jest przeznaczone dla us\u0142ug stateful. Mo\u017cesz jednak zastosowa\u0107 VPA tak\u017ce dla modu\u0142\u00f3w bez stanu, je\u015bli trzeba automatycznie dostosowa\u0107 pocz\u0105tkowo przydzielone zasoby. <\/p>\n<p>VPA r\u00f3wnie\u017c reaguje na zdarzenia OOM (out of memory, brak pami\u0119ci). Aby zmieni\u0107 czas procesora i ilo\u015b\u0107 pami\u0119ci, konieczny jest restart pod\u00f3w. Podczas restartu VPA przestrzega bud\u017cetu alokacji (<noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/disruptions\/\">pods distribution budget, PDB<\/a><\/noindex>), aby zapewni\u0107 minimaln\u0105 wymagan\u0105 liczb\u0119 modu\u0142\u00f3w. <\/p>\n<p>Mo\u017cesz ustawi\u0107 minimaln\u0105 i maksymaln\u0105 ilo\u015b\u0107 zasob\u00f3w dla ka\u017cdego modu\u0142u. Mo\u017cna w ten spos\u00f3b ograniczy\u0107 maksymaln\u0105 ilo\u015b\u0107 przydzielonej pami\u0119ci do 8 GB. Jest to przydatne, je\u015bli bie\u017c\u0105ce w\u0119z\u0142y nie mog\u0105 przydzieli\u0107 wi\u0119cej ni\u017c 8 GB pami\u0119ci na kontener. Szczeg\u00f3\u0142owe specyfikacje oraz zasady dzia\u0142ania opisane s\u0105 w <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/community\/blob\/master\/contributors\/design-proposals\/autoscaling\/vertical-pod-autoscaler.md\">oficjalnej wiki VPA<\/a><\/noindex>.<\/p>\n<p>Ponadto VPA ma interesuj\u0105c\u0105 funkcj\u0119 rekomendacji (VPA Recommender). \u015aledzi ona u\u017cycie zasob\u00f3w oraz zdarzenia OOM wszystkich modu\u0142\u00f3w, aby zaproponowa\u0107 nowe warto\u015bci pami\u0119ci i czasu procesora na podstawie inteligentnego algorytmu uwzgl\u0119dniaj\u0105cego historyczne metryki. Jest r\u00f3wnie\u017c interfejs API, kt\u00f3ry przyjmuje identyfikator pod i zwraca proponowane warto\u015bci zasob\u00f3w.<\/p>\n<p>Warto zaznaczy\u0107, \u017ce VPA Recommender nie monitoruje \u201elimit\u00f3w\u201d zasob\u00f3w. Mo\u017ce to doprowadzi\u0107 do tego, \u017ce modu\u0142 monopolizuje zasoby w obr\u0119bie w\u0119z\u0142\u00f3w. Lepiej ustawi\u0107 limit na poziomie przestrzeni nazw, aby unikn\u0105\u0107 ogromnego zu\u017cycia pami\u0119ci lub czasu procesora.<\/p>\n<p>Schemat dzia\u0142ania VPA na wysokim poziomie:<\/p>\n<ol>\n<li>VPA nieustannie sprawdza warto\u015bci metryk zadanych przy instalacji w domy\u015blnym interwale 10 sekund.\n<\/li>\n<li>Je\u015bli osi\u0105gni\u0119to zadany pr\u00f3g, VPA pr\u00f3buje zmieni\u0107 przydzielon\u0105 ilo\u015b\u0107 zasob\u00f3w.\n<\/li>\n<li>VPA aktualizuje ilo\u015b\u0107 zasob\u00f3w w obr\u0119bie kontrolera wdro\u017cenia\/replikacji.\n<\/li>\n<li>Podczas ponownego uruchamiania modu\u0142\u00f3w wszystkie nowe zasoby s\u0105 stosowane do utworzonych instancji.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Trzy poziomy automatycznego skalowania w Kubernetes: jak je efektywnie wykorzysta\u0107\" src=\"\/wp-content\/uploads\/2020\/01\/324702d5e36e9fcf45ced8b3f276db52.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>VPA dodaje wymagan\u0105 ilo\u015b\u0107 zasob\u00f3w <\/i><\/p>\n<p>We\u017a pod uwag\u0119 nast\u0119puj\u0105ce aspekty korzystaj\u0105c z VPA:<\/p>\n<ul>\n<li>Skalowanie wymaga obowi\u0105zkowego ponownego uruchomienia poda. To konieczne, aby unikn\u0105\u0107 niestabilnych dzia\u0142a\u0144 po wprowadzeniu zmian. Dla niezawodno\u015bci modu\u0142y s\u0105 ponownie uruchamiane i rozdzielane po w\u0119z\u0142ach na podstawie nowych przydzielonych zasob\u00f3w.\n<\/li>\n<li>VPA i HPA s\u0105 na razie nieskompatybilne ze sob\u0105 i nie mog\u0105 dzia\u0142a\u0107 na tych samych podach. Je\u015bli zastosujesz oba mechanizmy skalowania w jednym klastrze, upewnij si\u0119, \u017ce ustawienia nie pozwol\u0105 im aktywowa\u0107 si\u0119 na tych samych obiektach.\n<\/li>\n<li>VPA dostosowuje zapytania kontener\u00f3w do zasob\u00f3w, opieraj\u0105c si\u0119 tylko na ich wcze\u015bniejszym i bie\u017c\u0105cym wykorzystaniu. Nie ustala limit\u00f3w wykorzystania zasob\u00f3w. Mog\u0105 wyst\u0105pi\u0107 problemy z nieprawid\u0142owym dzia\u0142aniem aplikacji, kt\u00f3re zaczynaj\u0105 zajmowa\u0107 coraz wi\u0119cej zasob\u00f3w, co doprowadzi do wy\u0142\u0105czenia tego poda przez Kubernetes.\n<\/li>\n<li>VPA jest wci\u0105\u017c w wczesnej fazie rozwoju. B\u0105d\u017a przygotowany, \u017ce w najbli\u017cszym czasie system mo\u017ce ulec pewnym zmianom. Mo\u017cna poczyta\u0107 o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/autoscaler\/tree\/master\/vertical-pod-autoscaler#known-limitations-of-the-alpha-version\">znanych ograniczeniach<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/community\/blob\/master\/contributors\/design-proposals\/autoscaling\/vertical-pod-autoscaler.md#future-work\">planach rozwoju<\/a><\/noindex>. W planach jest wdro\u017cenie wsp\u00f3\u0142pracy VPA i HPA, a tak\u017ce wdro\u017cenie modu\u0142\u00f3w razem z polityk\u0105 pionowego automatycznego skalowania dla nich (na przyk\u0142ad, specjalna etykieta \u2018requires VPA\u2019).\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Automatyczne skalowanie klastra Kubernetes<\/h2>\n<p>\nAutomatyczne skalowanie klastra (Cluster Autoscaler, CA) zmienia liczb\u0119 w\u0119z\u0142\u00f3w w zale\u017cno\u015bci od liczby oczekuj\u0105cych modu\u0142\u00f3w pod. System okresowo sprawdza obecno\u015b\u0107 oczekuj\u0105cych modu\u0142\u00f3w \u2014 i zwi\u0119ksza rozmiar klastra, je\u015bli potrzebne s\u0105 dodatkowe zasoby i je\u015bli klaster nie przekracza ustalonych limit\u00f3w. CA wsp\u00f3\u0142dzia\u0142a z dostawc\u0105 us\u0142ug chmurowych, zamawiaj\u0105c dodatkowe w\u0119z\u0142y lub zwalniaj\u0105c nieu\u017cywane. Pierwsza publiczna wersja CA zosta\u0142a opublikowana w Kubernetes 1.8.<\/p>\n<p>Og\u00f3lna schemat pracy CA:<\/p>\n<ol>\n<li>CA sprawdza obecno\u015b\u0107 modu\u0142\u00f3w w stanie oczekiwania co 10 sekund.\n<\/li>\n<li>Je\u015bli jeden lub kilka modu\u0142\u00f3w znajduje si\u0119 w stanie oczekiwania z powodu niewystarczaj\u0105cej liczby dost\u0119pnych zasob\u00f3w w klastrze, podejmuje pr\u00f3b\u0119 uruchomienia jednego lub kilku dodatkowych w\u0119z\u0142\u00f3w.\n<\/li>\n<li>Gdy dostawca us\u0142ug chmurowych przydzieli wymagany w\u0119ze\u0142, do\u0142\u0105cza on do klastra i jest gotowy do obs\u0142ugi modu\u0142\u00f3w pod.\n<\/li>\n<li>Planista Kubernetes rozdziela oczekuj\u0105ce modu\u0142y na nowy w\u0119ze\u0142. Je\u015bli po tym niekt\u00f3re modu\u0142y nadal pozostaj\u0105 w stanie oczekiwania, proces powtarza si\u0119 \u2014 i do klastra dodawane s\u0105 nowe w\u0119z\u0142y.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Trzy poziomy automatycznego skalowania w Kubernetes: jak je efektywnie wykorzysta\u0107\" src=\"\/wp-content\/uploads\/2020\/01\/2cd3c97f5d1b040b813940a4e804365e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Automatyczne przydzielanie w\u0119z\u0142\u00f3w klastra w chmurze<\/i><\/p>\n<p>We\u017a pod uwag\u0119 nast\u0119puj\u0105ce kwestie przy u\u017cywaniu CA:<\/p>\n<ul>\n<li>CA zapewnia, \u017ce wszystkie modu\u0142y w klastrze maj\u0105 miejsce do uruchomienia, niezale\u017cnie od obci\u0105\u017cenia procesora. Ponadto stara si\u0119 zagwarantowa\u0107, \u017ce w klastrze nie ma niepotrzebnych w\u0119z\u0142\u00f3w.\n<\/li>\n<li>CA rejestruje potrzeb\u0119 skalowania w ci\u0105gu oko\u0142o 30 sekund.\n<\/li>\n<li>Po tym, jak w\u0119ze\u0142 staje si\u0119 niepotrzebny, CA domy\u015blnie oczekuje 10 minut przed skalowaniem systemu.\n<\/li>\n<li>W systemie automatycznego skalowania istniej\u0105 poj\u0119cia rozszerze\u0144 (expanders). To r\u00f3\u017cne strategie do wyboru grupy w\u0119z\u0142\u00f3w, do kt\u00f3rej zostan\u0105 dodane nowe zasoby.\n<\/li>\n<li>Odpowiedzialnie zastosuj opcj\u0119 <i>cluster-autoscaler.kubernetes.io\/safe-to-evict (true)<\/i>. Je\u015bli ustawisz wiele pod\u00f3w lub je\u015bli wiele z nich b\u0119dzie rozrzuconych po wszystkich w\u0119z\u0142ach, znacznie stracisz mo\u017cliwo\u015b\u0107 zmniejszania skali klastra.\n<\/li>\n<li>U\u017cyj <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/disruptions\/\">PodDisruptionBudgets<\/a><\/noindex>, aby zapobiec usuni\u0119ciu pod\u00f3w, przez co cz\u0119\u015b\u0107 twojej aplikacji mo\u017ce ca\u0142kowicie przesta\u0107 dzia\u0142a\u0107.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Jak systemy automatycznego skalowania Kubernetes wsp\u00f3\u0142dzia\u0142aj\u0105 ze sob\u0105<\/h2>\n<p>\nDla idealnej harmonii nale\u017cy zastosowa\u0107 automatyczne skalowanie zar\u00f3wno na poziomie pod\u00f3w (HPA\/VPA), jak i na poziomie klastra. S\u0105 one stosunkowo \u0142atwe do wsp\u00f3\u0142pracy ze sob\u0105:<\/p>\n<ol>\n<li>HPA lub VPA aktualizuje repliki pod\u00f3w lub zasoby przydzielone do istniej\u0105cych pod\u00f3w.\n<\/li>\n<li>Je\u015bli brakuje w\u0119z\u0142\u00f3w do planowanego skalowania, CA zauwa\u017ca, \u017ce niekt\u00f3re pody s\u0105 w stanie oczekiwania.\n<\/li>\n<li>CA przydziela nowe w\u0119z\u0142y.\n<\/li>\n<li>Modu\u0142y s\u0105 rozdzielane po nowych w\u0119z\u0142ach.\n<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Trzy poziomy automatycznego skalowania w Kubernetes: jak je efektywnie wykorzysta\u0107\" src=\"\/wp-content\/uploads\/2020\/01\/09379f30f349a235bb26a670ad0d0bfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Zintegrowany system skalowania Kubernetes<\/i><\/p>\n<h2>Typowe b\u0142\u0119dy w automatycznym skalowaniu Kubernetes<\/h2>\n<p>\nIstnieje kilka typowych problem\u00f3w, z kt\u00f3rymi DevOps napotykaj\u0105, pr\u00f3buj\u0105c zastosowa\u0107 automatyczne skalowanie.<\/p>\n<p>HPA i VPA zale\u017c\u0105 od metryk i niekt\u00f3rych danych historycznych. Je\u015bli przydzielono niewystarczaj\u0105ce zasoby, modu\u0142y zostan\u0105 skompresowane i nie b\u0119d\u0105 w stanie generowa\u0107 metryk. W takim przypadku automatyczne skalowanie nigdy nie zajdzie.<\/p>\n<p>Sama operacja skalowania jest wra\u017cliwa na czas. Chcemy, aby modu\u0142y i klaster skalowa\u0142y si\u0119 szybko \u2014 zanim u\u017cytkownicy zauwa\u017c\u0105 jakiekolwiek problemy i awarie. Dlatego nale\u017cy wzi\u0105\u0107 pod uwag\u0119 \u015bredni czas skalowania pod\u00f3w i klastra.<\/p>\n<p>Idealny scenariusz to 4 minuty:<\/p>\n<ol>\n<li>30 sekund. Aktualizacja docelowych metryk: 30\u221260 sekund.\n<\/li>\n<li>30 sekund. HPA sprawdza warto\u015bci metryk: 30 sekund.\n<\/li>\n<li>Mniej ni\u017c 2 sekundy. Modu\u0142y pod s\u0105 tworzone i przechodz\u0105 w stan oczekiwania: 1 sekunda.\n<\/li>\n<li>Mniej ni\u017c 2 sekundy. CA widzi oczekuj\u0105ce modu\u0142y i wysy\u0142a wezwania do przygotowania w\u0119z\u0142\u00f3w: 1 sekunda.\n<\/li>\n<li>3 minuty. Dostawca chmury przydziela w\u0119z\u0142y. K8s czeka, a\u017c b\u0119d\u0105 gotowe: do 10 minut (w zale\u017cno\u015bci od kilku czynnik\u00f3w).\n<\/li>\n<\/ol>\n<p>\nNajgorszy (bardziej realistyczny) scenariusz \u2014 12 minut:<\/p>\n<ol>\n<li>30 sekund. Aktualizacja docelowych metryk.\n<\/li>\n<li>30 sekund. HPA sprawdza warto\u015bci metryk.\n<\/li>\n<li>Mniej ni\u017c 2 sekundy. Modu\u0142y pod zosta\u0142y stworzone i przechodz\u0105 w stan oczekiwania.\n<\/li>\n<li>Mniej ni\u017c 2 sekundy. CA widzi oczekuj\u0105ce modu\u0142y i wysy\u0142a wywo\u0142ania do przygotowania w\u0119z\u0142\u00f3w.\n<\/li>\n<li>10 minut. Dostawca chmury przydziela w\u0119z\u0142y. K8s czeka, a\u017c b\u0119d\u0105 gotowe. Czas oczekiwania zale\u017cy od kilku czynnik\u00f3w, takich jak op\u00f3\u017anienie dostawcy, op\u00f3\u017anienie systemu operacyjnego oraz dzia\u0142anie narz\u0119dzi pomocniczych.\n<\/li>\n<\/ol>\n<p>\nNie myl mechanizm\u00f3w skalowania dostawc\u00f3w chmury z naszym CA. To ostatnie dzia\u0142a wewn\u0105trz klastra Kubernetes, podczas gdy mechanizm dostawcy chmury opiera si\u0119 na rozdzielaniu w\u0119z\u0142\u00f3w. Nie wie, co si\u0119 dzieje z twoimi podami ani aplikacj\u0105. Te systemy dzia\u0142aj\u0105 r\u00f3wnolegle. <\/p>\n<h2>Jak zarz\u0105dza\u0107 skalowaniem w Kubernetes<\/h2>\n<p><\/p>\n<ol>\n<li>Kubernetes to narz\u0119dzie do zarz\u0105dzania zasobami i orkiestracji. Operacje zwi\u0105zane z zarz\u0105dzaniem podami i zasobami klastra s\u0105 kluczowym krokiem w nauce Kubernetes.\n<\/li>\n<li>Przyjmij logik\u0119 skalowalno\u015bci pod\u00f3w z uwzgl\u0119dnieniem HPA i VPA.\n<\/li>\n<li>CA nale\u017cy u\u017cywa\u0107 tylko wtedy, gdy dobrze rozumiesz potrzeby swoich pod\u00f3w i kontener\u00f3w.\n<\/li>\n<li>Aby optymalnie skonfigurowa\u0107 klaster, musisz zrozumie\u0107, jak r\u00f3\u017cne systemy skalowania wsp\u00f3\u0142pracuj\u0105 ze sob\u0105.\n<\/li>\n<li>Oceniaj\u0105c czas skalowania, pami\u0119taj o najgorszym i najlepszym scenariuszu.\n<\/li>\n<\/ol>\n<p>\u0179r\u00f3d\u0142o: <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.1.1 - 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\/pl\/blog\/administrirovanie\/tri-urovnya-avtomasshtabirovaniya-v-kubernetes-kak-ih-effektivno-ispolzovat\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\/pl\/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\udd47 Trzy poziomy automatycznego skalowania w Kubernetes: jak je efektywnie wykorzysta\u0107 | ProHoster","description":"Pe\u0142na wersja.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/tri-urovnya-avtomasshtabirovaniya-v-kubernetes-kak-ih-effektivno-ispolzovat","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\/pl\/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\/pl\/wp-json\/wp\/v2\/posts\/55712","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=55712"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/55712\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=55712"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=55712"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=55712"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}