{"id":36246,"date":"2019-10-31T22:10:28","date_gmt":"2019-10-31T19:10:28","guid":{"rendered":"https:\/\/prohoster.info\/blog\/avtomasshtabirovanie-i-upravlenie-resursami-v-kubernetes-obzor-i-video-doklada\/"},"modified":"2019-10-31T22:10:28","modified_gmt":"2019-10-31T19:10:28","slug":"avtomasshtabirovanie-i-upravlenie-resursami-v-kubernetes-obzor-i-video-doklada","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/avtomasshtabirovanie-i-upravlenie-resursami-v-kubernetes-obzor-i-video-doklada","title":{"rendered":"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Am 27. April fand auf der Konferenz <noindex><a rel=\"nofollow\" href=\"https:\/\/nastachku.ru\/archive\/2019\/index.php\">Streik-2019<\/a><\/noindex>, im Rahmen der Sitzung \u201eDevOps\u201c, wurde der Vortrag \u201eAutomatische Skalierung und Ressourcenmanagement in Kubernetes\u201c gehalten. Dabei wird erl\u00e4utert, wie man mit Hilfe von K8s hohe Verf\u00fcgbarkeit f\u00fcr Anwendungen sicherstellt und deren maximale Leistung garantiert.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/1dbca93f66eb0822348163922a1cd6da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTraditionell freuen wir uns, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=10ZR-fbyuSY&amp;list=PL1mJ-PkCYnmB9vljnjxCMP3dlxQY3Dfcq\"><b>das Video mit dem Vortrag<\/b><\/a><\/noindex> (44 Minuten, deutlich informativer als der Artikel) sowie die Hauptinhalte in Textform. Lasst uns loslegen!<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Lassen Sie uns das Thema des Vortrags schrittweise durchgehen und am Ende beginnen.<\/p>\n<h2>Kubernetes<\/h2>\n<p>\nStellen Sie sich vor, wir haben Docker-Container auf dem Host. Warum? Um Reproduzierbarkeit und Isolation zu gew\u00e4hrleisten, die wiederum einen einfachen und effektiven Deploy sowie CI\/CD erm\u00f6glichen. Wir haben viele Maschinen mit Containern.<\/p>\n<p>Was bietet uns in diesem Fall Kubernetes?<\/p>\n<ol>\n<li> Wir h\u00f6ren auf, \u00fcber diese Maschinen nachzudenken, und beginnen stattdessen mit der Arbeit im \u201eCloud\u201c-Umfeld, <b>einem Cluster von Containern<\/b> oder Pods (Gruppen von Containern).<\/li>\n<li> Dar\u00fcber hinaus denken wir nicht einmal an separate Pods, sondern verwalten noch b<i>gr\u00f6\u00dften<\/i>Solche <b>hochrangigen Primitiven<\/b> erm\u00f6glichen es uns zu sagen, dass es eine Vorlage f\u00fcr das Starten einer bestimmten Arbeitslast gibt und wie viele Instanzen daf\u00fcr erforderlich sind. Wenn wir sp\u00e4ter die Vorlage \u00e4ndern, \u00e4ndern sich auch alle Instanzen.<\/li>\n<li> Mit <b>deklarative API<\/b> wir beschreiben anstelle der Ausf\u00fchrung einer bestimmten Sequenz von Befehlen das \"Weltmodell\" (in YAML), das von Kubernetes erstellt wird. Und erneut: Bei \u00c4nderungen der Beschreibung wird sich auch die tats\u00e4chliche Darstellung \u00e4ndern.<\/li>\n<\/ol>\n<p><\/p>\n<h2>Ressourcenmanagement<\/h2>\n<p><\/p>\n<h3>CPU<\/h3>\n<p>\nAngenommen, wir betreiben nginx, php-fpm und mysql auf dem Server. Diese Dienste werden tats\u00e4chlich noch mehr Prozesse haben, die alle Rechenressourcen erfordern:<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/3ec2ef12bb7666456dddfaf762925f4e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>(Die Zahlen auf der Folie sind \u201aPapageien\u2018, eine abstrakte Darstellung des Ressourcenbedarfs jedes Prozesses.)<\/i><\/p>\n<p>Um damit bequem zu arbeiten, ist es sinnvoll, die Prozesse in Gruppen zusammenzufassen (alle nginx-Prozesse beispielsweise in einer Gruppe \u201anginx\u2018). Ein einfacher und offensichtlicher Weg, dies zu tun, besteht darin, jede Gruppe in einen Container zu platzieren:<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/36ac6b6899ebc3a1f33f2caa2bc2ccd2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUm fortzufahren, sollten wir uns erinnern, was ein Container (in Linux) ist. Ihr Aufkommen wurde durch drei Schl\u00fcsselfunktionen im Kernel erm\u00f6glicht, die schon seit einiger Zeit implementiert sind: <noindex><a rel=\"nofollow\" href=\"http:\/\/man7.org\/linux\/man-pages\/man7\/capabilities.7.html\">Capabilities festzulegen.<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/man7.org\/linux\/man-pages\/man7\/namespaces.7.html\">namespaces<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"http:\/\/man7.org\/linux\/man-pages\/man7\/cgroups.7.html\">cgroups<\/a><\/noindex>. Die weitere Entwicklung wurde durch andere Technologien (einschlie\u00dflich benutzerfreundlicher \u201aSchalen\u2018 wie Docker) gef\u00f6rdert:<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/65369d8bdc23554b972f60a81446b385.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIm Kontext dieses Vortrags interessiert uns nur <b>cgroups<\/b>, denn genau die Kontrollgruppen sind der Teil der funktionalen M\u00f6glichkeiten von Containern (z. B. Docker), der das Ressourcenmanagement realisiert. Die Prozesse, die in Gruppen zusammengefasst sind, wie wir es wollten, sind genau diese Kontrollgruppen.<\/p>\n<p>Kehren wir zu den CPU-Anforderungen dieser Prozesse zur\u00fcck, nun aber zu den Gruppen von Prozessen:<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/a087c3239a63a703d308401ae0083e32.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>(Ich wiederhole, dass alle Zahlen eine abstrakte Darstellung des Ressourcenbedarfs sind)<\/i><\/p>\n<p>Dabei hat die CPU selbst eine gewisse begrenzte Ressource <i>(in unserem Beispiel sind das 1000)<\/i>, die m\u00f6glicherweise nicht f\u00fcr alle ausreicht (die Summe der Bed\u00fcrfnisse aller Gruppen betr\u00e4gt 150+850+460=1460). Was passiert in einem solchen Fall?<\/p>\n<p>Der Kernel beginnt, Ressourcen zu verteilen, und tut dies \u201efair\u201c, indem er jeder Gruppe die gleiche Menge an Ressourcen zuweist. Im ersten Fall ben\u00f6tigen sie jedoch mehr als n\u00f6tig (333&gt;150), weshalb der \u00dcberschuss (333-150=183) als Reserve bleibt, die ebenfalls gleichm\u00e4\u00dfig auf die beiden anderen Container verteilt wird:<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/fa358b02ba232045e27fd8e2e6f45f08.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAm Ende: der erste Container hatte gen\u00fcgend Ressourcen, der zweite hatte deutlich zu wenig, der dritte kam ein wenig zu kurz. So lautet das Ergebnis der Handlungen <b>des \u201efairen\u201c Planers in Linux<\/b> \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Completely_Fair_Scheduler\">CFS<\/a><\/noindex>. Seine Arbeit kann durch die Zuweisung <b>von Gewichtungen<\/b> f\u00fcr jeden der Container reguliert werden. Zum Beispiel so:<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/ad100d55d2379d143f1ea8a257f8e494.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLassen Sie uns einen Fall pr\u00fcfen, in dem Ressourcen beim zweiten Container (php-fpm) fehlen. Alle Ressourcen des Containers werden gleichm\u00e4\u00dfig zwischen den Prozessen verteilt. Infolgedessen funktioniert der Master-Prozess gut, w\u00e4hrend alle Worker verlangsamt werden und weniger als die H\u00e4lfte des ben\u00f6tigten erhalten:<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/4f7c00fb16f33d4e57355bebb2270099.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSo funktioniert der CFS-Scheduler. Die Gewichtungen, die wir den Containern zuweisen, werden wir sp\u00e4ter als <b>Anfragen<\/b>bezeichnen. Warum genau so \u2013 siehe weiter.<\/p>\n<p>Blicken wir auf die gesamte Situation aus einer anderen Perspektive. Wie bekannt ist, f\u00fchren alle Stra\u00dfen nach Rom und im Fall eines Computers zum CPU. Der CPU ist einzigartig, die Aufgaben sind zahlreich \u2013 es braucht eine Ampel. Der einfachste Ansatz zur Ressourcenverwaltung ist das \u201eAmpel\u201c-System: einem Prozess wird eine fixe Zugriffszeit auf den CPU zugewiesen, dann dem n\u00e4chsten usw.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/e8abd2a719ad447755bdb114a2e72d46.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDieser Ansatz wird als hartes Quoting <i>bezeichnet.<\/i>Wir merken uns einfach den Begriff <b>Limits.<\/b>Wenn wir jedoch allen Containern Limits zuweisen, entsteht ein Problem: MySQL f\u00e4hrt auf der Stra\u00dfe und ben\u00f6tigt irgendwann CPU-Ressourcen, w\u00e4hrend alle anderen Prozesse warten m\u00fcssen, bis der CPU <b>frei wird.<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/f88e8732f0d8c72b040d0b47d2c0a4e6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKehren wir zum Linux-Kernel und seiner Interaktion mit dem CPU zur\u00fcck \u2013 das Gesamtbild sieht wie folgt aus:<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/25c9ba677db4c692251a17f46531a52e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEine cgroup hat zwei Einstellungen \u2013 es handelt sich im Wesentlichen um zwei einfache \u201eRegler\u201c, die es erm\u00f6glichen zu bestimmen:<\/p>\n<ol>\n<li> Gewicht f\u00fcr den Container (Anfragen) \u2014 das ist <b>Anteile<\/b>;<\/li>\n<li> der Prozentsatz der gesamten CPU-Zeit, die f\u00fcr die Bearbeitung von Aufgaben des Containers zur Verf\u00fcgung steht (Limits) \u2013 das ist <b>Kontingent<\/b>.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Wie misst man die CPU?<\/h3>\n<p>\nEs gibt verschiedene Methoden:<\/p>\n<ol>\n<li> Was ist <i>Papageien<\/i>, niemand wei\u00df es \u2013 man muss sich jedes Mal absprechen.<\/li>\n<li> <i>Prozents\u00e4tze<\/i> sind verst\u00e4ndlicher, aber relativ: 50 % von einem Server mit 4 Kernen und mit 20 Kernen sind v\u00f6llig unterschiedliche Dinge.<\/li>\n<li> Man kann die bereits erw\u00e4hnten <i>von Gewichtungen<\/i>, die Linux kennt, verwenden, aber die sind ebenfalls relativ.<\/li>\n<li> Die vern\u00fcnftigste M\u00f6glichkeit ist, die Rechenressourcen in <i>Sekunden<\/i>zu messen. Das hei\u00dft, in CPU-Zeit im Verh\u00e4ltnis zu Echtzeit: 1 Sekunde CPU-Zeit in 1 realer Sekunde vergeben \u2013 das entspricht einem CPU-Kern vollst\u00e4ndig.<\/li>\n<\/ol>\n<p>\nUm es noch einfacher auszudr\u00fccken, wird jetzt direkt in <i>Kernen<\/i>gemessen, wobei damit genau die CPU-Zeit im Verh\u00e4ltnis zur Realit\u00e4t gemeint ist. Da Linux Gewichte versteht und nicht solche CPU-Zeiten\/Kerne, ben\u00f6tigte man einen Mechanismus zur Umrechnung von einem in das andere.<\/p>\n<p>Betrachten wir ein einfaches Beispiel mit einem Server mit 3 CPU-Kernen, bei dem den drei Pods solche Gewichte (500, 1000 und 1500) zugewiesen werden, die leicht in die entsprechenden Anteile der zugewiesenen Kerne (0,5, 1 und 1,5) umgerechnet werden k\u00f6nnen.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/6a173d56847569fd071d642dcce5c5ff.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWenn Sie einen zweiten Server mit doppelt so vielen Kernen (6) nehmen und dort die gleichen Pods platzieren, l\u00e4sst sich die Verteilung der Kerne leicht durch einfache Multiplikation mit 2 (1, 2 und 3 entsprechend) berechnen. Ein wichtiger Punkt tritt jedoch ein, wenn auf diesem Server ein vierter Pod erscheint, dessen Gewicht zur Vereinfachung bei 3000 liegt. Er beansprucht einen Teil der CPU-Ressourcen (die H\u00e4lfte der Kerne), w\u00e4hrend die anderen Pods neu berechnet werden (sich halbieren):<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/a74fa4b7964bfbfbce3568b1ce35c13a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Kubernetes und CPU-Ressourcen<\/h3>\n<p>\nIn Kubernetes werden die CPU-Ressourcen \u00fcblicherweise in <b>Milliarden<\/b>, d.h. als Basisgewicht wird 0,001 Kern verwendet. <i>(Das Gleiche wird in der Linux-\/cgroups-Terminologie als CPU-Anteil bezeichnet, wobei 1000 Milliarden = 1024 CPU-Anteile entspricht, um es genauer zu sagen.)<\/i> K8s sorgt daf\u00fcr, dass nicht mehr Pods auf einem Server platziert werden, als CPU-Ressourcen f\u00fcr die Summe der Gewichte aller Pods verf\u00fcgbar sind.<\/p>\n<p>Wie funktioniert das? Wenn ein Server dem Kubernetes-Cluster hinzugef\u00fcgt wird, wird die Anzahl der verf\u00fcgbaren CPU-Kerne mitgeteilt. Und beim Erstellen eines neuen Pods wei\u00df der Kubernetes-Planer, wie viele Kerne dieser Pod ben\u00f6tigt. So wird der Pod auf einen Server platziert, auf dem gen\u00fcgend Kerne vorhanden sind.<\/p>\n<p>Was passiert, wenn <b>nicht<\/b> Was passiert, wenn kein Request angegeben ist (d.h. die Anzahl der ben\u00f6tigten Kerne f\u00fcr den Pod nicht definiert ist)? Lassen Sie uns kl\u00e4ren, wie Kubernetes Ressourcen insgesamt berechnet.<\/p>\n<p>F\u00fcr einen Pod k\u00f6nnen sowohl Requests (CFS-Planer) als auch Limits angegeben werden (denken Sie an die Ampel?):<\/p>\n<ul>\n<li> Wenn diese gleich angegeben sind, erh\u00e4lt der Pod eine QoS-Klasse. <b>guaranteed<\/b>. Diese Anzahl an immer verf\u00fcgbaren Kernen wird garantiert.<\/li>\n<li> Wenn der Request kleiner ist als das Limit \u2014 QoS-Klasse <b>burstable<\/b>. Das bedeutet, wir erwarten, dass der Pod beispielsweise immer 1 Kern verwendet, jedoch ist dieser Wert f\u00fcr ihn keine Begrenzung: <i>manchmal<\/i> der Pod kann auch mehr verwenden (wenn auf dem Server daf\u00fcr freie Ressourcen vorhanden sind).<\/li>\n<li> Es gibt noch die QoS-Klasse <b>best effort<\/b> Dazu geh\u00f6ren die Pods, f\u00fcr die keine Anfrage angegeben ist. Die Ressourcen werden ihnen als letztes zugewiesen.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Speicher<\/h3>\n<p>\nBei der Speicherverwaltung ist die Situation \u00e4hnlich, aber etwas anders \u2013 schlie\u00dflich sind die Eigenschaften dieser Ressourcen unterschiedlich. Im Allgemeinen ist die Analogie wie folgt:<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/d933fb1febdc30e256af158132b9dbb0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLassen Sie uns betrachten, wie Anfragen im Speicher umgesetzt werden. Nehmen wir an, die Pods leben auf einem Server und ver\u00e4ndern den verbrauchten Speicher, bis einer von ihnen so gro\u00df wird, dass der Speicher ersch\u00f6pft ist. In diesem Fall taucht der OOM-Killer auf und beendet den gr\u00f6\u00dften Prozess:<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/a3726c24937c64ae21c21df7642b98c8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas ist nicht immer zufriedenstellend, daher gibt es die M\u00f6glichkeit zu steuern, welche Prozesse f\u00fcr uns wichtig sind und nicht beendet werden sollen. Dazu wird der Parameter verwendet: <b>oom_score_adj<\/b>.<\/p>\n<p>Kommen wir zu den QoS-Klassen der CPU und ziehen wir eine Analogie zu den Werten von oom_score_adj, die die Priorit\u00e4ten der Pods beim Speicherverbrauch bestimmen:<\/p>\n<ul>\n<li> Der niedrigste Wert von oom_score_adj f\u00fcr einen Pod \u2014 -998 \u2014 bedeutet, dass dieser Pod als letztes beendet werden sollte, was <b>guaranteed<\/b>.<\/li>\n<li> Der h\u00f6chste Wert ist 1000, das ist <b>best effort<\/b>, solche Pods werden als erstes beendet.<\/li>\n<li> Zur Berechnung der anderen Werte (<b>burstable<\/b>) gibt es eine Formel, die besagt, dass je mehr Ressourcen ein Pod angefordert hat, desto geringer die Chancen, dass er beendet wird.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/27c95eb705d06dd90caff34afd14ef16.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie zweite \"Einstellung\" \u2014 <b>limit_in_bytes<\/b> \u2014 bezieht sich auf die Limits. Es ist einfacher: Wir setzen einfach die maximale Menge an zugewiesenem Speicher, und hier (im Gegensatz zur CPU) stellt sich nicht die Frage, wie man ihn (den Speicher) messen soll.<\/p>\n<h3>Gesamt<\/h3>\n<p>\nJeder Pod in Kubernetes wird zugewiesen <code>requests<\/code> und <code>Limits<\/code> \u2014 beide Parameter f\u00fcr CPU und f\u00fcr den Arbeitsspeicher:<\/p>\n<ol>\n<li> auf Basis von Requests arbeitet der Kubernetes-Scheduler, der die Pods auf die Server verteilt;<\/li>\n<li> auf Basis aller Parameter wird die QoS-Klasse des Pods bestimmt;<\/li>\n<li> Basierend auf den CPU-Requests werden die relativen Gewichte berechnet;<\/li>\n<li> Basierend auf den CPU-Requests wird der CFS-Planer konfiguriert;<\/li>\n<li> Basierend auf den Memory-Requests wird der OOM-Killer eingerichtet;<\/li>\n<li> Basierend auf den CPU-Limits wird die \"Ampel\" konfiguriert;<\/li>\n<li> auf Basis der Memory-Limits wird ein Limit f\u00fcr die cgroup konfiguriert.<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/201ac0bc7ad53c9c8a75cf9ff5f618b5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInsgesamt beantwortet dieses Bild alle Fragen zur Verwaltung von Ressourcen in Kubernetes.<\/p>\n<h2>Automatisches Skalieren<\/h2>\n<p><\/p>\n<h3>K8s Cluster-Autoscaler<\/h3>\n<p>\nStellen wir uns vor, dass der gesamte Cluster bereits belegt ist und ein neuer pod erstellt werden muss. Solange der pod nicht erscheinen kann, bleibt er im Status <i>Pending<\/i>. Damit er dennoch erscheinen kann, k\u00f6nnen wir einen neuen Server an den Cluster anschlie\u00dfen oder\u2026 einen Cluster-Autoscaler installieren, der dies f\u00fcr uns erledigt: Er bestellt eine virtuelle Maschine beim Cloud-Anbieter (via API-Anfrage) und verbindet sie mit dem Cluster, woraufhin der pod hinzugef\u00fcgt wird.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/89e771daa4d69b3b3c72ef8adba54a5c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas ist das automatische Skalieren des Kubernetes-Clusters, das unserer Erfahrung nach hervorragend funktioniert. Allerdings gibt es, wie \u00fcberall, auch hier einige Nuancen...<\/p>\n<p>W\u00e4hrend wir die Clustergr\u00f6\u00dfe erh\u00f6hten, lief alles gut. Aber was passiert, wenn der Cluster <b>freigegeben wird?<\/b>? \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c pod&#8217;\u044b (\u0434\u043b\u044f \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0445\u043e\u0441\u0442\u043e\u0432) \u043e\u0447\u0435\u043d\u044c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u043e\u0436\u043d\u043e \u0438 \u0434\u043e\u0440\u043e\u0433\u043e \u043f\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c. \u0412 Kubernetes \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434.<\/p>\n<p>Betrachten wir einen Cluster aus 3 Servern, in dem sich ein Deployment befindet. Es hat 6 Pods: derzeit sind es jeweils 2 auf jedem Server. Aus irgendeinem Grund m\u00f6chten wir einen der Server ausschalten. Daf\u00fcr nutzen wir den Befehl <code>kubectl drain<\/code>, der:<\/p>\n<ul>\n<li> verhindert das Senden neuer Pods auf diesen Server;<\/li>\n<li> l\u00f6scht vorhandene Pods auf dem Server.<\/li>\n<\/ul>\n<p>\nDa Kubernetes die Anzahl der Pods (6) \u00fcberwacht, wird er einfach <b>diese<\/b> auf andere Knoten verschieben, jedoch nicht auf den abgeschalteten, da dieser bereits als nicht verf\u00fcgbar f\u00fcr das Senden neuer Pods gekennzeichnet ist. Dies ist eine grundlegende Mechanik f\u00fcr Kubernetes.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/cfebfa60b5a67ed1155789837c824a44.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs gibt jedoch einen entscheidenden Unterschied. In einer \u00e4hnlichen Situation f\u00fcr StatefulSet (statt Deployment) werden die Ma\u00dfnahmen anders sein. Jetzt haben wir bereits eine Stateful-Anwendung \u2013 zum Beispiel drei Pods mit MongoDB, von denen einer ein Problem hat (Daten besch\u00e4digt oder ein anderer Fehler, der den korrekten Start des Pods verhindert). Und wieder entscheiden wir uns, einen Server abzuschalten. Was wird passieren?<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/9bfc0d2685e2aa7828a135be2590741b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMongoDB <i>einf\u00fcgen k\u00f6nnte<\/i> sterben, da ein quorum erforderlich ist: f\u00fcr einen Cluster mit drei Instanzen m\u00fcssen mindestens zwei funktionsf\u00e4hig sein. Doch das <i>geschieht nicht<\/i> \u2014 dank <b>PodDisruptionBudget<\/b>. Dieser Parameter definiert die minimal erforderliche Anzahl an laufenden Pods. Da bereits bekannt ist, dass einer der Pods mit MongoDB nicht mehr funktioniert und dass im PodDisruptionBudget f\u00fcr MongoDB eingestellt ist, <code>minAvailable: 2<\/code>, wird Kubernetes das Entfernen des Pods nicht zulassen.<\/p>\n<p>Zusammenfassung: Damit die Migration (oder besser gesagt \u2013 die Neuerstellung) von Pods beim Freigeben des Clusters korrekt funktioniert, muss das PodDisruptionBudget konfiguriert werden.<\/p>\n<h3>Horizontale Skalierung<\/h3>\n<p>\nBetrachten wir eine andere Situation. Es gibt eine Anwendung, die als Deployment in Kubernetes l\u00e4uft. Der Benutzerverkehr flie\u00dft auf ihre Pods (nehmen wir an, es sind drei), und wir messen einen bestimmten Wert (zum Beispiel die CPU-Auslastung) in diesen Pods. Wenn die Auslastung steigt, registrieren wir dies im Diagramm und erh\u00f6hen die Anzahl der Pods, um die Anfragen zu verteilen.<\/p>\n<p>Heute ist es in Kubernetes nicht mehr notwendig, dies manuell zu tun: Es wird eine automatische Skalierung der Anzahl der Pods basierend auf den gemessenen Auslastungswerten eingestellt.<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/092fb2d523f1f53670b3850ed3c3fac7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie Hauptfragen hier sind, <b>was genau gemessen werden soll<\/b> und <b>und wie es interpretiert wird<\/b> die erhaltenen Werte (um eine Entscheidung zur Anpassung der Anzahl der Pods zu treffen). Es kann viel gemessen werden:<\/p>\n<p><img decoding=\"async\" alt=\"Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Vortragvideo)\" src=\"\/wp-content\/uploads\/2019\/07\/1c7f6d35fc0cbae85b88f6a062797ed2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWie man dies technisch umsetzt \u2014 das Sammeln von Metriken usw. \u2014 habe ich ausf\u00fchrlich in meinem Vortrag \u00fcber <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/412901\/\">Monitoring und Kubernetes<\/a><\/noindex>. Ein wichtiger Ratschlag zur Auswahl optimaler Parameter ist der <b>experimentieren Sie<\/b>!<\/p>\n<p>Es gibt <noindex><a rel=\"nofollow\" href=\"http:\/\/www.brendangregg.com\/usemethod.html\">USE-Methodik<\/a><\/noindex> <i>(Utilization, Saturation und Errors<\/i>), dessen Sinn folgenderma\u00dfen ist. Auf welcher Grundlage macht es Sinn, beispielsweise php-fpm zu skalieren? Auf der Grundlage, dass die Worker ersch\u00f6pft sind \u2013 das ist <i>Nutzung<\/i>. Und wenn die Worker ersch\u00f6pft sind und keine neuen Verbindungen akzeptiert werden \u2013 das ist bereits <i>S\u00e4ttigung<\/i>. Beide Parameter m\u00fcssen gemessen werden und basierend auf den Werten sollte eine Skalierung vorgenommen werden.<\/p>\n<h2>Abschlie\u00dfend<\/h2>\n<p>\nDer Vortrag hat eine Fortsetzung: \u00fcber vertikale Skalierung und wie man Ressourcen richtig ausw\u00e4hlt. Dar\u00fcber werde ich in zuk\u00fcnftigen Videos auf <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/c\/%D0%A4%D0%BB%D0%B0%D0%BD%D1%82\">unserem YouTube-Kanal<\/a><\/noindex> berichten \u2014 abonnieren Sie, um nichts zu verpassen!<\/p>\n<h2>Videos und Folien<\/h2>\n<p>\nDas Video der Pr\u00e4sentation (44 Minuten):<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"10ZR-fbyuSY\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/10ZR-fbyuSY\/hqdefault.jpg\" alt=\"Video abspielen\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p>Pr\u00e4sentation des Vortrags:<\/p>\n<p><center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"\/\/speakerdeck.com\/player\/2b7f3521ca3b43dd9c711cb74ba58dfd\" frameborder=\"0\" allowfullscreen><\/iframe><\/center><\/p>\n<h2>P.S.<\/h2>\n<p>\nErweiterung und Erg\u00e4nzung von Kubernetes<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/449096\/\">Erweiterung und Erg\u00e4nzung von Kubernetes<\/a><\/noindex>\u00bb <i>(Andrej Polovov; 8. April 2019 auf Saint HighLoad++)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/431500\/\">Datenbanken und Kubernetes<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 8. November 2018 auf HighLoad++)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/412901\/\">Monitoring und Kubernetes<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 28. Mai 2018 auf der RootConf)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/345116\/\">Best Practices f\u00fcr CI\/CD mit Kubernetes und GitLab<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 7. November 2017 auf HighLoad++)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/331188\/\">Unsere Erfahrungen mit Kubernetes in kleinen Projekten<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 6. Juni 2017 auf RootConf)<\/i>.<\/li>\n<\/ul>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/459326\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>27 \u0430\u043f\u0440\u0435\u043b\u044f \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 \u0421\u0442\u0430\u0447\u043a\u0430-2019, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0435\u043a\u0446\u0438\u0438 \u00abDevOps\u00bb, \u043f\u0440\u043e\u0437\u0432\u0443\u0447\u0430\u043b \u0434\u043e\u043a\u043b\u0430\u0434 \u00ab\u0410\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0432 Kubernetes\u00bb. \u0412 \u043d\u0451\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e K8s \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041f\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0438 \u0440\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0441 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u043c (44 \u043c\u0438\u043d\u0443\u0442\u044b, \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u0435\u0435 \u0441\u0442\u0430\u0442\u044c\u0438) \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0432\u044b\u0436\u0438\u043c\u043a\u0443 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0432\u0438\u0434\u0435. \u041f\u043e\u0435\u0445\u0430\u043b\u0438! \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27113,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"27 \u0430\u043f\u0440\u0435\u043b\u044f \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 \u0421\u0442\u0430\u0447\u043a\u0430-2019, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0435\u043a\u0446\u0438\u0438 \u00abDevOps\u00bb, \u043f\u0440\u043e\u0437\u0432\u0443\u0447\u0430\u043b \u0434\u043e\u043a\u043b\u0430\u0434 \u00ab\u0410\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0432 Kubernetes\u00bb. \u0412 \u043d\u0451\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e K8s \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041f\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0438 \u0440\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0441 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u043c (44 \u043c\u0438\u043d\u0443\u0442\u044b, \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u0435\u0435 \u0441\u0442\u0430\u0442\u044c\u0438) \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0432\u044b\u0436\u0438\u043c\u043a\u0443 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0432\u0438\u0434\u0435. \u041f\u043e\u0435\u0445\u0430\u043b\u0438! \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c\" \/>\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\/de\/blog\/administrirovanie\/avtomasshtabirovanie-i-upravlenie-resursami-v-kubernetes-obzor-i-video-doklada\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\u0410\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0432 Kubernetes (\u043e\u0431\u0437\u043e\u0440 \u0438 \u0432\u0438\u0434\u0435\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u0430) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"27 \u0430\u043f\u0440\u0435\u043b\u044f \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 \u0421\u0442\u0430\u0447\u043a\u0430-2019, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0435\u043a\u0446\u0438\u0438 \u00abDevOps\u00bb, \u043f\u0440\u043e\u0437\u0432\u0443\u0447\u0430\u043b \u0434\u043e\u043a\u043b\u0430\u0434 \u00ab\u0410\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0432 Kubernetes\u00bb. \u0412 \u043d\u0451\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e K8s \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041f\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0438 \u0440\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0441 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u043c (44 \u043c\u0438\u043d\u0443\u0442\u044b, \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u0435\u0435 \u0441\u0442\u0430\u0442\u044c\u0438) \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0432\u044b\u0436\u0438\u043c\u043a\u0443 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0432\u0438\u0434\u0435. \u041f\u043e\u0435\u0445\u0430\u043b\u0438! \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/avtomasshtabirovanie-i-upravlenie-resursami-v-kubernetes-obzor-i-video-doklada\" \/>\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=\"2019-10-31T19:10:28+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:10:28+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\udd47Automatisches Skalieren und Ressourcenmanagement in Kubernetes (\u00dcberblick und Video des Vortrags) | ProHoster","description":"Am 27. April auf der Konferenz Stachka-2019, im Rahmen der Sektion \u201eDevOps\u201c, wurde der Vortrag \u201eAutomatisches Skalieren und Ressourcenmanagement in Kubernetes\u201c gehalten. Darin wird erl\u00e4utert, wie man mit Hilfe von K8s die hohe Verf\u00fcgbarkeit von Anwendungen sicherstellt und deren maximale Leistung garantiert. Wie gewohnt freuen wir uns, das Video des Vortrags (44 Minuten, weitaus informativer als der Artikel) sowie eine Zusammenfassung in schriftlicher Form bereitzustellen. Lassen Sie uns anfangen! Lassen Sie uns alles aufschl\u00fcsseln.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/avtomasshtabirovanie-i-upravlenie-resursami-v-kubernetes-obzor-i-video-doklada","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\u0410\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0432 Kubernetes (\u043e\u0431\u0437\u043e\u0440 \u0438 \u0432\u0438\u0434\u0435\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u0430) | ProHoster","og:description":"27 \u0430\u043f\u0440\u0435\u043b\u044f \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 \u0421\u0442\u0430\u0447\u043a\u0430-2019, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0435\u043a\u0446\u0438\u0438 \u00abDevOps\u00bb, \u043f\u0440\u043e\u0437\u0432\u0443\u0447\u0430\u043b \u0434\u043e\u043a\u043b\u0430\u0434 \u00ab\u0410\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0432 Kubernetes\u00bb. \u0412 \u043d\u0451\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e K8s \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041f\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0438 \u0440\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0441 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u043c (44 \u043c\u0438\u043d\u0443\u0442\u044b, \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u0435\u0435 \u0441\u0442\u0430\u0442\u044c\u0438) \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0432\u044b\u0436\u0438\u043c\u043a\u0443 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0432\u0438\u0434\u0435. \u041f\u043e\u0435\u0445\u0430\u043b\u0438! \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/avtomasshtabirovanie-i-upravlenie-resursami-v-kubernetes-obzor-i-video-doklada","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":"2019-10-31T19:10:28+00:00","article:modified_time":"2019-10-31T19:10:28+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36246","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":"2026-01-22 02:33:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:48:26","updated":"2026-01-22 02:33:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/36246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=36246"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/36246\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/27113"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=36246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=36246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=36246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}