{"id":12600,"date":"2023-11-19T20:40:52","date_gmt":"2023-11-19T19:40:52","guid":{"rendered":"https:\/\/dhosting.pl\/pomoc\/?post_type=manual_kb&#038;p=12600"},"modified":"2023-11-19T20:40:52","modified_gmt":"2023-11-19T19:40:52","slug":"jak-dziala-skalowanie-w-kubernetes","status":"publish","type":"manual_kb","link":"https:\/\/dhosting.pl\/pomoc\/baza-wiedzy\/jak-dziala-skalowanie-w-kubernetes\/","title":{"rendered":"Jak dzia\u0142a skalowanie w kubernetes?"},"content":{"rendered":"<p>Kubernetes jest systemem zarz\u0105dzania kontenerami, kt\u00f3ry umo\u017cliwia tworzenie i uruchamianie aplikacji w chmurze. Jedn\u0105 z g\u0142\u00f3wnych zalet Kubernetes jest to, \u017ce automatycznie skaluje aplikacje w zale\u017cno\u015bci od zapotrzebowania na zasoby i ruchu. W tym artykule wyja\u015bni\u0119, jak dzia\u0142a skalowanie w Kubernetes i jakie s\u0105 jego rodzaje.<\/p>\n<p>Skalowanie w Kubernetes mo\u017cna podzieli\u0107 na dwa poziomy: skalowanie poziome i skalowanie pionowe. Skalowanie poziome polega na zwi\u0119kszaniu lub zmniejszaniu liczby pod\u00f3w, czyli podstawowych jednostek obliczeniowych w Kubernetes. Pod to grupa jednego lub wi\u0119cej kontener\u00f3w, kt\u00f3re wsp\u00f3\u0142dziel\u0105 zasoby i sie\u0107. Skalowanie pionowe polega na zwi\u0119kszaniu lub zmniejszaniu zasob\u00f3w przydzielonych do pod\u00f3w, takich jak CPU, pami\u0119\u0107 czy dysk.<\/p>\n<p>Skalowanie poziome mo\u017cna wykonywa\u0107 na dwa sposoby: r\u0119cznie lub automatycznie. Skalowanie r\u0119czne polega na ustawieniu \u017c\u0105danej liczby pod\u00f3w dla danego zbioru replik (ReplicaSet), kt\u00f3ry jest odpowiedzialny za utrzymywanie okre\u015blonej liczby identycznych pod\u00f3w. Mo\u017cna to zrobi\u0107 za pomoc\u0105 polecenia kubectl scale lub poprzez edycj\u0119 pliku YAML definiuj\u0105cego zbi\u00f3r replik. Przyk\u0142adowo, aby ustawi\u0107 liczb\u0119 pod\u00f3w na 5 dla zbioru replik o nazwie my-app, mo\u017cna u\u017cy\u0107 polecenia:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-php\" data-line=\"\">kubectl scale --replicas=5 replicaset\/my-app<\/code><\/pre>\n<p>Skalowanie automatyczne polega na wykorzystaniu mechanizmu nazywanego HPA (Horizontal Pod Autoscaler), kt\u00f3ry monitoruje obci\u0105\u017cenie pod\u00f3w i automatycznie dostosowuje ich liczb\u0119 do aktualnego zapotrzebowania. HPA bazuje na metrykach takich jak \u015brednie zu\u017cycie CPU lub pami\u0119ci przez pod lub \u015brednia liczba \u017c\u0105da\u0144 na sekund\u0119 obs\u0142ugiwanych przez pod. Aby skorzysta\u0107 z HPA, nale\u017cy utworzy\u0107 obiekt typu HorizontalPodAutoscaler, kt\u00f3ry okre\u015bla minimaln\u0105 i maksymaln\u0105 liczb\u0119 pod\u00f3w oraz docelow\u0105 warto\u015b\u0107 metryki, do kt\u00f3rej ma d\u0105\u017cy\u0107 HPA. Przyk\u0142adowo, aby utworzy\u0107 HPA dla zbioru replik o nazwie my-app, kt\u00f3ry ma utrzymywa\u0107 \u015brednie zu\u017cycie CPU na poziomie 50%, przy minimalnej liczbie pod\u00f3w r\u00f3wnej 1 i maksymalnej r\u00f3wnej 10, mo\u017cna u\u017cy\u0107 polecenia:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-php\" data-line=\"\">kubectl autoscale rs my-app --min=1 --max=10 --cpu-percent=50<\/code><\/pre>\n<p>Skalowanie pionowe r\u00f3wnie\u017c mo\u017cna wykonywa\u0107 na dwa sposoby: r\u0119cznie lub automatycznie. Skalowanie r\u0119czne polega na okre\u015bleniu \u017c\u0105danych i\/lub limit\u00f3w zasob\u00f3w dla kontener\u00f3w wewn\u0105trz poda. \u017b\u0105dania okre\u015blaj\u0105 minimalne zasoby gwarantowane dla kontenera, natomiast limity okre\u015blaj\u0105 maksymalne zasoby dozwolone dla kontenera. Mo\u017cna to zrobi\u0107 poprzez edycj\u0119 pliku YAML definiuj\u0105cego pod lub za pomoc\u0105 polecenia kubectl set resources. Przyk\u0142adowo, aby ustawi\u0107 \u017c\u0105danie CPU na 0.5 i limit CPU na 1 dla kontenera o nazwie my-container wewn\u0105trz poda o nazwie my-pod, mo\u017cna u\u017cy\u0107 polecenia:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-php\" data-line=\"\">kubectl set resources pod my-pod --containers=my-container --requests=cpu=0.5 --limits=cpu=1<\/code><\/pre>\n<p>Skalowanie automatyczne polega na wykorzystaniu mechanizmu nazywanego VPA (Vertical Pod Autoscaler), kt\u00f3ry monitoruje zu\u017cycie zasob\u00f3w przez pod i automatycznie dostosowuje ich \u017c\u0105dania i limity do aktualnego zapotrzebowania. VPA bazuje na historii zu\u017cycia zasob\u00f3w przez pod i na podstawie tego wyznacza optymalne warto\u015bci \u017c\u0105da\u0144 i limit\u00f3w. Aby skorzysta\u0107 z VPA, nale\u017cy utworzy\u0107 obiekt typu VerticalPodAutoscaler, kt\u00f3ry okre\u015bla pod lub zbi\u00f3r replik, dla kt\u00f3rego ma dzia\u0142a\u0107 VPA, oraz tryb dzia\u0142ania VPA, kt\u00f3ry mo\u017ce by\u0107 nast\u0119puj\u0105cy:<\/p>\n<p>&#8211; Off: VPA nie zmienia \u017c\u0105da\u0144 i limit\u00f3w pod\u00f3w, tylko generuje rekomendacje.<br \/>\n&#8211; Initial: VPA ustawia \u017c\u0105dania i limity pod\u00f3w tylko przy ich tworzeniu, na podstawie rekomendacji.<br \/>\n&#8211; Auto: VPA ustawia \u017c\u0105dania i limity pod\u00f3w zar\u00f3wno przy ich tworzeniu, jak i podczas ich dzia\u0142ania, na podstawie rekomendacji. W tym trybie VPA mo\u017ce restartowa\u0107 pod, je\u015bli uzna to za konieczne.<\/p>\n<p>Przyk\u0142adowo, aby utworzy\u0107 VPA dla zbioru replik o nazwie my-app w trybie Auto, mo\u017cna u\u017cy\u0107 polecenia:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-php\" data-line=\"\">kubectl apply -f vpa.yaml<\/code><\/pre>\n<p>gdzie plik vpa.yaml ma nast\u0119puj\u0105c\u0105 zawarto\u015b\u0107:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-php\" data-line=\"\">apiVersion: autoscaling.k8s.io\/v1\nkind: VerticalPodAutoscaler\nmetadata:\nname: my-app-vpa\nspec:\ntargetRef:\napiVersion: &quot;apps\/v1&quot;\nkind: ReplicaSet\nname: my-app\nupdatePolicy:\nupdateMode: &quot;Auto&quot;<\/code><\/pre>\n<p>Podsumowuj\u0105c, skalowanie w Kubernetes jest kluczowym elementem zapewniaj\u0105cym wysok\u0105 dost\u0119pno\u015b\u0107 i wydajno\u015b\u0107 aplikacji w chmurze. Istniej\u0105 r\u00f3\u017cne sposoby i narz\u0119dzia do skalowania aplikacji w Kubernetes, w zale\u017cno\u015bci od potrzeb i preferencji u\u017cytkownik\u00f3w. Skalowanie poziome pozwala na elastyczne dostosowywanie liczby pod\u00f3w do zmieniaj\u0105cego si\u0119 ruchu, natomiast skalowanie pionowe pozwala na optymalne wykorzystanie zasob\u00f3w przez pod. Skalowanie mo\u017cna wykonywa\u0107 r\u0119cznie lub automatycznie, korzystaj\u0105c z mechanizm\u00f3w takich jak HPA i VPA.<\/p>\n","protected":false},"author":6,"featured_media":10957,"parent":0,"menu_order":0,"template":"","format":"standard","manualknowledgebasecat":[121,118],"manual_kb_tag":[655,4067,4047,3517,4066,4068,3516],"class_list":["post-12600","manual_kb","type-manual_kb","status-publish","format-standard","has-post-thumbnail","hentry","manualknowledgebasecat-inne","manualknowledgebasecat-pozostale","manual_kb_tag-hosting","manual_kb_tag-jak-skalowac-kubernetes","manual_kb_tag-kubernetes","manual_kb_tag-polski-hosting","manual_kb_tag-skalowanie-kubernetes","manual_kb_tag-vertical-pod-autoscaler","manual_kb_tag-web-hosting"],"_links":{"self":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manual_kb\/12600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manual_kb"}],"about":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/types\/manual_kb"}],"author":[{"embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/users\/6"}],"version-history":[{"count":0,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manual_kb\/12600\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/media\/10957"}],"wp:attachment":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/media?parent=12600"}],"wp:term":[{"taxonomy":"manualknowledgebasecat","embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manualknowledgebasecat?post=12600"},{"taxonomy":"manual_kb_tag","embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/manual_kb_tag?post=12600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}