{"id":97982,"date":"2020-10-23T14:42:15","date_gmt":"2020-10-23T12:42:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/devyat-sovetov-po-povysheniyu-proizvoditelnosti-kubernetes"},"modified":"2020-11-18T00:58:47","modified_gmt":"2020-11-17T22:58:47","slug":"devyat-sovetov-po-povysheniyu-proizvoditelnosti-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/devyat-sovetov-po-povysheniyu-proizvoditelnosti-kubernetes","title":{"rendered":"Neun Tipps zur Leistungssteigerung von Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Neun Tipps zur Leistungssteigerung von Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/92dc510aa9d785a31d310816b18bf854.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Hallo zusammen! Ich hei\u00dfe Oleg Sidorenkov und arbeite als Teamleiter Infrastruktur bei der Firma DomKlick. Wir setzen \u00abKubik\u00bb seit \u00fcber drei Jahren produktiv ein und haben in dieser Zeit viele interessante Momente damit erlebt. Heute werde ich euch erz\u00e4hlen, wie man mit dem richtigen Ansatz noch mehr Leistung aus einem \u201evanilla\u201c Kubernetes f\u00fcr euren Cluster herausholen kann. Bereit, fertig, los! <\/p>\n<p>Ihr wisst alle, dass Kubernetes ein skalierbares Open-Source-System zur Orchestrierung von Containern ist; oder besser gesagt, f\u00fcnf Bin\u00e4rdateien, die im Hintergrund die Magie entfalten, indem sie den Lebenszyklus eurer Mikrodienste in der Serverumgebung verwalten. Dar\u00fcber hinaus ist es ein recht flexibles Werkzeug, das wie ein Lego-Bausatz f\u00fcr maximale Anpassung an verschiedene Aufgaben zusammengestellt werden kann.<\/p>\n<p>Und eigentlich ist alles gut: schmei\u00dft Server in den Cluster wie Holz in den Ofen und kennt kein Problem. Aber wenn dir die Umwelt am Herzen liegt, fragst du dich: \u201eWie kann ich das Feuer im Ofen am Brennen halten und gleichzeitig den Wald schonen?\u201c. Mit anderen Worten, wie findet man Wege zur Verbesserung der Infrastruktur und zur Senkung der Kosten.<\/p>\n<h2>1. Achte auf die Ressourcen von Teams und Anwendungen<\/h2>\n<p><img decoding=\"async\" alt=\"Neun Tipps zur Leistungssteigerung von Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/91e2e60b47ee985b024532c8b685230c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Eine der grundlegendsten, aber effektivsten Methoden ist die Einf\u00fchrung von Anfragen\/Limits. Trennen Sie Anwendungen nach Namespaces und Namespaces nach Entwicklungsteams. Weisen Sie der Anwendung vor dem Deployment Werte f\u00fcr die CPU-Zeit, den Speicher und den ephemeral Speicher zu.<\/p>\n<pre><code>resources:\n   requests:\n     memory: 2Gi\n     cpu: 250m\n   limits:\n     memory: 4Gi\n     cpu: 500m<\/code><\/pre>\n<p>Durch Erfahrung sind wir zu dem Schluss gekommen: Es ist nicht ratsam, die Anfragen von den Limits um mehr als das Doppelte zu erh\u00f6hen. Das Volumen des Clusters wird auf der Grundlage der Anfragen berechnet, und wenn Sie den Anwendungen einen Ressourcenunterschied von zum Beispiel 5-10 Mal geben, stellen Sie sich vor, was mit Ihrem Node passiert, wenn es mit Pods gef\u00fcllt wird und pl\u00f6tzlich unter hoher Last steht. Nichts Gutes. Mindestens wird es zu Throttling kommen, und maximal m\u00fcssen Sie sich von dem Worker verabschieden und erleben eine zyklische Belastung der anderen Nodes, nachdem die Pods beginnen zu migrieren.<\/p>\n<p>Dar\u00fcber hinaus k\u00f6nnen Sie mithilfe von <code>limitranges<\/code> Sie k\u00f6nnen beim Start f\u00fcr den Container Werte f\u00fcr die Ressourcen festlegen \u2014 minimal, maximal und standardm\u00e4\u00dfig:<\/p>\n<pre><code>\u279c  ~ kubectl describe limitranges --namespace ops\nName:       limit-range\nNamespace:  ops\nType        Resource           Min   Max   Default Request  Default Limit  Max Limit\/Request Ratio\n----        --------           ---   ---   ---------------  -------------  -----------------------\nContainer   cpu                50m   10    100m             100m           2\nContainer   ephemeral-storage  12Mi  8Gi   128Mi            4Gi            -\nContainer   memory             64Mi  40Gi  128Mi            128Mi          2<\/code><\/pre>\n<p>Vergessen Sie nicht, die Ressourcen des Namensraums zu begrenzen, damit ein Team nicht alle Ressourcen des Clusters beanspruchen kann:<\/p>\n<pre><code>\u279c  ~ kubectl describe resourcequotas --namespace ops\nName:                   resource-quota\nNamespace:              ops\nResource                Used          Hard\n--------                ----          ----\nlimits.cpu              77250m        80\nlimits.memory           124814367488  150Gi\npods                    31            45\nrequests.cpu            53850m        80\nrequests.memory         75613234944   150Gi\nservices                26            50\nservices.loadbalancers  0             0\nservices.nodeports      0             0<\/code><\/pre>\n<p>Wie aus der Beschreibung ersichtlich <code>resourcequotas<\/code>, wenn das Team ops Pods bereitstellen m\u00f6chte, die weitere 10 CPU ben\u00f6tigen, wird der Scheduler dies verhindern und einen Fehler ausgeben:<\/p>\n<pre><code>Error creating: pods \"nginx-proxy-9967d8d78-nh4fs\" is forbidden: exceeded quota: resource-quota, requested: limits.cpu=5,requests.cpu=5, used: limits.cpu=77250m,requests.cpu=53850m, limited: limits.cpu=10,requests.cpu=10<\/code><\/pre>\n<p>Um ein solches Problem zu l\u00f6sen, kann man ein Werkzeug schreiben, wie zum Beispiel <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pauljamm\/team-operator\">diese<\/a><\/noindex>, das in der Lage ist, den Zustand der Ressourcen der Teams zu speichern und zu committen.<\/p>\n<h2>2. W\u00e4hlen Sie den optimalen Speicher<\/h2>\n<p><img decoding=\"async\" alt=\"Neun Tipps zur Leistungssteigerung von Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/c7f8bdbf5490acc9061695a6d608015e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Hier m\u00f6chte ich das Thema persistenter Volumes und des Disk-Subsystems der Worker-Knoten von Kubernetes ansprechen. Ich hoffe, dass niemand Kub auf HDD im Produktionsbetrieb verwendet, aber manchmal reicht sogar ein gew\u00f6hnliches SSD nicht aus. Wir hatten mit dem Problem zu k\u00e4mpfen, dass die Logs die Festplatte durch Input-Output-Operationen belasteten, und die L\u00f6sungsm\u00f6glichkeiten sind hier nicht sehr vielf\u00e4ltig: <\/p>\n<ul>\n<li>\n<p>Entweder hochleistungsf\u00e4hige SSDs verwenden oder auf NVMe umsteigen (wenn Sie Ihr eigenes Hardware-Setup verwalten).<\/p>\n<\/li>\n<li>\n<p>Das Logging-Level reduzieren.<\/p>\n<\/li>\n<li>\n<p>Eine \"intelligente\" Lastverteilung f\u00fcr Pods durchf\u00fchren, die die Festplatte belasten (<code>podAntiAffinity<\/code>).<\/p>\n<\/li>\n<\/ul>\n<p>Der Screenshot oben zeigt, was unter dem nginx-ingress-controller mit der Festplatte passiert, wenn das Logging der access_logs aktiviert ist (~12.000 Logs\/Sekunde). Ein solcher Zustand kann nat\u00fcrlich zu einer Verschlechterung aller Anwendungen auf diesem Knoten f\u00fchren.<\/p>\n<p>Was PV betrifft, leider habe ich nicht alle <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/persistent-volumes\/#types-of-persistent-volumes\">Arten ausprobiert.<\/a><\/noindex> Persistente Volumes. Nutzen Sie die beste Option, die genau zu Ihnen passt. Historisch gesehen ben\u00f6tigen einige Dienste RWX-Volume, und schon lange haben wir daf\u00fcr NFS-Speicher verwendet. Es ist g\u00fcnstig und\u2026 ausreichend. Nat\u00fcrlich hatten wir auch unsere Schwierigkeiten damit, aber wir haben gelernt, es zu optimieren, und jetzt haben wir keine Probleme mehr. Wenn m\u00f6glich, wechseln Sie bitte zu S3-Objektspeicher.<\/p>\n<h2>3. Erstellen Sie optimierte Images<\/h2>\n<p><img decoding=\"async\" alt=\"Neun Tipps zur Leistungssteigerung von Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/c25ce405d1eb4c01f031e18b0bfa4836.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Am besten verwenden Sie f\u00fcr Container optimierte Images, damit Kubernetes sie schneller abrufen und effizienter ausf\u00fchren kann.&nbsp;<\/p>\n<p>Optimiert bedeutet, dass die Images:<\/p>\n<ul>\n<li>\n<p>nur eine Anwendung enthalten oder nur eine Funktion ausf\u00fchren;<\/p>\n<\/li>\n<li>\n<p>klein von der Gr\u00f6\u00dfe her sind, da gro\u00dfe Images schlechter \u00fcber das Netzwerk \u00fcbertragen werden;<\/p>\n<\/li>\n<li>\n<p>\u00dcberwachungsendpunkte f\u00fcr die Verf\u00fcgbarkeit und Bereitschaft haben, damit Kubernetes im Falle von Ausf\u00e4llen Ma\u00dfnahmen ergreifen kann;<\/p>\n<\/li>\n<li>\n<p>containerfreundliche Betriebssysteme (wie Alpine oder CoreOS) verwenden, die widerstandsf\u00e4higer gegen Konfigurationsfehler sind;<\/p>\n<\/li>\n<li>\n<p>verwendet mehrstufige Builds, damit Sie nur kompilierte Anwendungen und nicht die dazugeh\u00f6rigen Quellcodes bereitstellen k\u00f6nnen.<\/p>\n<\/li>\n<\/ul>\n<p>Es gibt viele Werkzeuge und Dienste, die es erm\u00f6glichen, Images in Echtzeit zu \u00fcberpr\u00fcfen und zu optimieren. Es ist wichtig, sie immer auf dem neuesten Stand und sicher zu halten. Am Ende erhalten Sie: <\/p>\n<ol>\n<li>\n<p>Reduzierung der Netzwerlast auf dem gesamten Cluster.<\/p>\n<\/li>\n<li>\n<p>Verringerung der Startzeit von Containern.<\/p>\n<\/li>\n<li>\n<p>Kleinere Gr\u00f6\u00dfe Ihres gesamten Docker-Registrys.<\/p>\n<\/li>\n<\/ol>\n<h2>4. Verwenden Sie den DNS-Cache<\/h2>\n<p><img decoding=\"async\" alt=\"Neun Tipps zur Leistungssteigerung von Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/9f4384462a77dc528d7911c56f684f2d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Wenn es um hohe Lasten geht, ist es ohne Anpassung des DNS-Systems des Clusters recht m\u00fchsam. Vor langer Zeit unterst\u00fctzten die Entwickler von Kubernetes ihre L\u00f6sung kube-dns. Dieses System wurde auch bei uns implementiert, aber es wurde nicht wirklich optimiert und lieferte nicht die erforderliche Leistung, obwohl die Aufgabe eigentlich einfach erscheint. Dann kam coredns, auf den wir umgestiegen sind und der uns nicht entt\u00e4uschte; schlie\u00dflich wurde es der standardm\u00e4\u00dfige DNS-Dienst in K8s. Irgendwann erreichten wir 40.000 rps im DNS-System, und auch dieses System war nicht mehr ausreichend. Aber durch einen gl\u00fccklichen Zufall kam NodeLocaldns heraus, auch bekannt als node local cache, er auch <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/administer-cluster\/nodelocaldns\/\">NodeLocal DNSCache<\/a><\/noindex>.<\/p>\n<p>Warum verwenden wir das? Im Linux-Kernel gibt es einen Fehler, der bei mehrfachen Zugriffen \u00fcber conntrack NAT bei UDP zu einem Wettlauf um Schreibzugriffe in die conntrack-Tabellen f\u00fchrt, wodurch ein Teil des Verkehrs durch NAT verloren geht (jeder Zugriff \u00fcber Service ist NAT). Nodelocaldns l\u00f6st dieses Problem, indem es NAT eliminiert und die Verbindung zu den Upstream-DNS \u00fcber TCP aufwertet, sowie das lokale Caching von DNS-Abfragen zu den Upstreams (einschlie\u00dflich eines kurzen negativen Caches von 5 Sekunden).<\/p>\n<h2>5. Skalieren Sie Pods automatisch horizontal und vertikal<\/h2>\n<p><img decoding=\"async\" alt=\"Neun Tipps zur Leistungssteigerung von Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/3804a14685a55160fa7d9f3226eab1fa.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>K\u00f6nnen Sie mit Zuversicht sagen, dass all Ihre Microservices bereit f\u00fcr einen zweifachen oder dreifachen Anstieg der Last sind? Wie sollten Sie Ressourcen f\u00fcr Ihre Anwendungen richtig zuweisen? Ein paar Pods \u00fcber der Arbeitslast aktiv zu halten, kann \u00fcberfl\u00fcssig sein, und wenn Sie am Limit bleiben, riskieren Sie Ausfallzeiten durch einen pl\u00f6tzlichen Anstieg des Traffics auf den Service. Die goldene Mitte hilft Ihnen, durch Multiplication, mit solchen Diensten wie <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/run-application\/horizontal-pod-autoscale\/\">Horizontal Pod Autoscaler<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/autoscaler\/tree\/master\/vertical-pod-autoscaler\">Vertical Pod Autoscaler<\/a><\/noindex>. <\/p>\n<p><strong>VPA<\/strong> erm\u00f6glicht es, die Anforderungen\/Grenzen Ihrer Container im Pod basierend auf der tats\u00e4chlichen Nutzung automatisch zu erh\u00f6hen. Wie kann das n\u00fctzlich sein? Wenn Sie Pods haben, die aus irgendeinem Grund nicht horizontal skaliert werden k\u00f6nnen (was nicht ganz zuverl\u00e4ssig ist), k\u00f6nnen Sie versuchen, die Ressourcen\u00e4nderung dem VPA anzuvertrauen. Sein Merkmal basiert auf einem Empfehlungssystem, das historische und aktuelle Daten vom Metric-Server nutzt. Wenn Sie also nicht automatisch die Anforderungen\/Grenzen \u00e4ndern m\u00f6chten, k\u00f6nnen Sie einfach die empfohlenen Ressourcen f\u00fcr Ihre Container verfolgen und die Einstellungen zur Einsparung von CPU und Speicher im Cluster optimieren. <\/p>\n<p><img decoding=\"async\" alt=\"Neun Tipps zur Leistungssteigerung von Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/3965950aa3315faa4bb3e3ff5bd61955.png\" style=\"display:block;margin: 0 auto;\" \/>Das Bild wurde von https:\/\/levelup.gitconnected.com\/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231 entnommen.<\/p>\n<p>Der Scheduler in Kubernetes basiert immer auf den Requests. Welchen Wert Sie auch immer eingeben, der Scheduler sucht eine geeignete Node basierend darauf. Die Limits sind f\u00fcr den Kubelet wichtig, um zu verstehen, wann er throttlen oder ein Pod terminieren soll. Und da der einzige wichtige Parameter die Requests sind, wird der VPA (Vertical Pod Autoscaler) mit ihm arbeiten. Jedes Mal, wenn Sie das vertikale Scaling einer Anwendung festlegen, bestimmen Sie, wie die Requests aussehen sollten. Was geschieht dann mit den Limits? Dieser Parameter wird ebenfalls proportional skaliert.<\/p>\n<p>Beispielsweise sind hier die typischen Einstellungen eines Pods:<\/p>\n<pre><code>resources:\n   requests:\n     memory: 250Mi\n     cpu: 200m\n   limits:\n     memory: 500Mi\n     cpu: 350m<\/code><\/pre>\n<p>Der Empfehlungsmechanismus stellt fest, dass Ihre Anwendung f\u00fcr einen ordnungsgem\u00e4\u00dfen Betrieb 300m CPU und 500Mi ben\u00f6tigt. Sie erhalten folgende Einstellungen:<\/p>\n<pre><code>resources:\n   requests:\n     memory: 500Mi\n     cpu: 300m\n   limits:\n     memory: 1000Mi\n     cpu: 525m<\/code><\/pre>\n<p>Wie bereits erw\u00e4hnt, handelt es sich um eine proportionale Skalierung basierend auf dem Verh\u00e4ltnis von Requests zu Limits im Manifest:<\/p>\n<ul>\n<li>\n<p>CPU: 200m \u2192 300m: Verh\u00e4ltnis 1:1,75;<\/p>\n<\/li>\n<li>\n<p>Memory: 250Mi \u2192 500Mi: Verh\u00e4ltnis 1:2.<\/p>\n<\/li>\n<\/ul>\n<p>Was <strong>HPA<\/strong>, hier ist der Mechanismus transparenter. Es werden Schwellenwerte f\u00fcr Metriken festgelegt, beispielsweise f\u00fcr die CPU und den Arbeitsspeicher. Wenn der Durchschnittswert aller Replikate den Schwellenwert \u00fcberschreitet, wird die Anwendung um +1 Pod skaliert, bis der Wert unter den Schwellenwert sinkt oder die maximale Anzahl der Replikate erreicht ist.<\/p>\n<p><img decoding=\"async\" alt=\"Neun Tipps zur Leistungssteigerung von Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/f7a3fa28177d66be925867e38f5bbed6.png\" style=\"display:block;margin: 0 auto;\" \/>Das Bild wurde von https:\/\/levelup.gitconnected.com\/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231 entnommen.<\/p>\n<p>Neben den \u00fcblichen Metriken wie CPU und Arbeitsspeicher k\u00f6nnen Sie Schwellenwerte f\u00fcr Ihre benutzerdefinierten Metriken aus Prometheus konfigurieren und mit diesen arbeiten, wenn Sie denken, dass dies die genaueste Definition daf\u00fcr ist, wann Ihre Anwendung skaliert werden sollte. Sobald die Anwendung unter die festgelegte Metrikgrenze stabilisiert ist, beginnt HPA, Pods auf die minimale Anzahl von Replikaten zu skalieren oder bis die Last den festgelegten Schwellenwert erf\u00fcllt.<\/p>\n<h2>6. Vergessen Sie nicht die Node Affinity und Pod Affinity<\/h2>\n<p><img decoding=\"async\" alt=\"Neun Tipps zur Leistungssteigerung von Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/e718191d9e8ff25fd3b2d65cba9b3b73.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Nicht alle Knoten arbeiten mit der gleichen Hardware, und nicht alle Pods m\u00fcssen Anwendungen ausf\u00fchren, die rechenintensiv sind. Kubernetes erm\u00f6glicht es, die Spezialisierung von Knoten und Pods \u00fcber <strong>Node Affinity<\/strong> und <strong>Pod Affinity<\/strong>.<\/p>\n<p>Wenn Sie Knoten haben, die f\u00fcr rechenintensive Operationen geeignet sind, ist es am effektivsten, die Anwendungen an die entsprechenden Knoten zu binden. Dazu verwenden Sie <code>nodeSelector<\/code> mit der Knotenmarke.<\/p>\n<p>Angenommen, Sie haben zwei Knoten: einen mit <code>CPUType=HIGHFREQ<\/code> und vielen schnellen Kernen, und einen anderen mit <code>MemoryType=HIGHMEMORY<\/code> viele Speicher und h\u00f6here Leistung. Am einfachsten ist es, die Bereitstellung des Pods dem Knoten zuzuweisen, der <code>HIGHFREQ<\/code>, indem Sie im Abschnitt <code>spec<\/code> einen solchen Selektor hinzuf\u00fcgen:<\/p>\n<pre><code>\u2026\nnodeSelector:\n\tCPUType: HIGHFREQ<\/code><\/pre>\n<p>Ein kostspieligerer und spezifischerer Weg, dies zu tun, ist die Verwendung von <code>nodeAffinity<\/code> im Feld <code>Affinity<\/code> Abschnitt <code>spec<\/code>. Es gibt zwei Optionen:<\/p>\n<ul>\n<li>\n<p><code>requiredDuringSchedulingIgnoredDuringExecution<\/code>: harte Einstellung (der Scheduler wird Pods nur auf bestimmten Knoten bereitstellen (und sonst nirgendwo));<\/p>\n<\/li>\n<li>\n<p><code>preferredDuringSchedulingIgnoredDuringExecution<\/code>: weiche Einstellung (der Scheduler wird versuchen, auf bestimmten Knoten bereitzustellen, und wenn das nicht funktioniert, wird er versuchen, auf dem n\u00e4chsten verf\u00fcgbaren Knoten bereitzustellen).<\/p>\n<\/li>\n<\/ul>\n<p>Sie k\u00f6nnen eine bestimmte Syntax zur Verwaltung der Knotenmarken angeben, z. B. <code>In<\/code>, <code>NotIn<\/code>, <code>Exists<\/code>, <code>DoesNotExist<\/code>, <code>Gt<\/code> oder <code>Lt<\/code>. Denken Sie jedoch daran, dass komplexe Methoden in langen Listen von Marken die Entscheidungsfindung in kritischen Situationen verlangsamen k\u00f6nnen. Mit anderen Worten, machen Sie es nicht kompliziert.<\/p>\n<p>Wie bereits erw\u00e4hnt, erm\u00f6glicht Kubernetes die Bindung aktueller Pods. Das hei\u00dft, Sie k\u00f6nnen bestimmte Pods dazu bringen, gemeinsam mit anderen Pods in derselben Verf\u00fcgbarkeitszone (relevant f\u00fcr Cloud-Umgebungen) oder auf Knoten zu arbeiten.<\/p>\n<p>In <code>podAffinity<\/code> Felder <code>Affinity<\/code> Abschnitt <code>spec<\/code> die gleichen Felder sind verf\u00fcgbar wie bei <code>nodeAffinity<\/code>: <code>requiredDuringSchedulingIgnoredDuringExecution<\/code><strong> <\/strong>und <code>preferredDuringSchedulingIgnoredDuringExecution<\/code>. Der einzige Unterschied besteht darin, dass <code>matchExpressions<\/code> Pods an den Knoten bindet, auf dem bereits ein Pod mit diesem Label ausgef\u00fchrt wird.<\/p>\n<p>Kubernetes bietet au\u00dferdem das Feld <code>podAntiAffinity<\/code>, das im Gegensatz dazu keinen Pod an einen Knoten mit bestimmten Pods bindet.<\/p>\n<p>Bez\u00fcglich Ausdr\u00fccke <code>nodeAffinity<\/code> kann derselbe Rat gegeben werden: Streben Sie an, die Regeln einfach und logisch zu halten, und vermeiden Sie es, die Podspezifikationen mit einem komplexen Regelwerk zu \u00fcberladen. Es ist sehr einfach, eine Regel zu erstellen, die nicht den Bedingungen des Clusters entspricht, was zu einer zus\u00e4tzlichen Belastung desSchedulers f\u00fchrt und die Gesamtleistung verringert.<\/p>\n<h2>7. Taints &amp; Tolerations<\/h2>\n<p>Es gibt noch eine weitere M\u00f6glichkeit zur Verwaltung desSchedulers. Wenn Sie einen gro\u00dfen Cluster mit Hunderten von Knoten und Tausenden von Mikroservices haben, ist es sehr schwierig, bestimmten Pods das Platzieren auf bestimmten Knoten zu verwehren.<\/p>\n<p>Hierbei hilft der Taint-Mechanismus, der verbotene Regeln definiert. Beispielsweise kann in bestimmten Szenarien bestimmten Knoten das Ausf\u00fchren von Pods untersagt werden. Um einen Taint auf einem bestimmten Knoten anzuwenden, muss die Option <code>Taint<\/code> in kubectl verwendet werden. Geben Sie den Schl\u00fcssel und den Wert an, und dann den Taint wie <code>NoSchedule<\/code> oder <code>NoExecute<\/code>:<\/p>\n<pre><code>$ kubectl taint nodes node10 node-role.kubernetes.io\/ingress=true:NoSchedule<\/code><\/pre>\n<p>Es ist auch wichtig zu beachten, dass der Taint-Mechanismus drei grundlegende Effekte unterst\u00fctzt: <code>NoSchedule<\/code>, <code>NoExecute<\/code> und <code>PreferNoSchedule<\/code><strong>. <\/strong><\/p>\n<ul>\n<li>\n<p><code>NoSchedule<\/code><strong> <\/strong>bedeutet, dass solange in der Pod-Spezifikation kein entsprechender Eintrag <code>tolerations<\/code>vorhanden ist, er nicht auf diesem Knoten (in diesem Beispiel <code>node10<\/code>).<\/p>\n<\/li>\n<li>\n<p><code>PreferNoSchedule <\/code>\u2014 eine vereinfachte Version <code>NoSchedule<\/code>) bereitgestellt werden kann. In diesem Fall wird der Scheduler versuchen, Pods ohne entsprechenden Eintrag nicht auf diesen Knoten zu verteilen, aber dies ist keine strikte Einschr\u00e4nkung. Wenn im Cluster keine Ressourcen verf\u00fcgbar sind, werden die Pods anfangen, auf diesem Knoten bereitzustellen. <code>tolerations<\/code> auf den Knoten, aber das ist keine feste Einschr\u00e4nkung. Wenn im Cluster keine Ressourcen verf\u00fcgbar sind, beginnen die Pods, auf diesem Knoten zu starten.<\/p>\n<\/li>\n<li>\n<p><code>NoExecute<\/code><strong> <\/strong>\u2014 dieser Effekt l\u00f6st eine sofortige Evakuierung der Pods aus, die keinen entsprechenden Eintrag haben. <code>tolerations<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>Interessanterweise kann dieses Verhalten mit dem Toleranzmechanismus aufgehoben werden. Dies ist n\u00fctzlich, wenn es einen \u201everbotenen\u201c Knoten gibt und Sie dort nur Infrastrukturservices unterbringen m\u00f6chten. Wie macht man das? Erlauben Sie nur diejenigen Pods, f\u00fcr die es eine passende Toleranz gibt.<\/p>\n<p>So wird die Pod-Spezifikation aussehen:<\/p>\n<pre><code>spec:\n   tolerations:\n     - key: \"node-role.kubernetes.io\/ingress\"\n        operator: \"Equal\"\n        value: \"true\"\n        effect: \"NoSchedule\"<\/code><\/pre>\n<p>Das bedeutet nicht, dass beim n\u00e4chsten Redeployment der Pod genau auf diesen Knoten kommt; das ist kein Node Affinity Mechanismus und <code>nodeSelector<\/code>. Aber durch die Kombination mehrerer Funktionen k\u00f6nnen Sie eine sehr flexible Konfiguration des Planers erreichen.<\/p>\n<h2>8. Konfigurieren Sie die Bereitstellungspriorit\u00e4t der Pods<\/h2>\n<p>Das bedeutet nicht, dass alle Pods mit der gleichen Priorit\u00e4t bearbeitet werden m\u00fcssen. Zum Beispiel k\u00f6nnten Sie m\u00f6chten, dass einige Pods fr\u00fcher als andere bereitgestellt werden.<\/p>\n<p>Kubernetes bietet verschiedene M\u00f6glichkeiten zur Konfiguration der Pod-Priorisierung (Pod Priority and Preemption). Die Konfiguration besteht aus mehreren Teilen: dem Objekt <code>PriorityClass<\/code><strong> <\/strong>und der Beschreibung des Feldes <code>priorityClassName<\/code><strong> <\/strong>in der Podspezifikation. Lassen Sie uns ein Beispiel betrachten:<\/p>\n<pre><code>apiVersion: scheduling.k8s.io\/v1\nkind: PriorityClass\nmetadata:\n  name: hoch-priorit\u00e4r\nvalue: 99999\nglobalDefault: false\ndescription: \"Diese Priorit\u00e4tsklasse sollte nur f\u00fcr sehr wichtige Pods verwendet werden\"<\/code><\/pre>\n<p>Wir erstellen <code>PriorityClass<\/code>, geben ihm einen Namen, eine Beschreibung und einen Wert.<strong> <\/strong>Je h\u00f6her <code>value<\/code>, desto h\u00f6her die Priorit\u00e4t. Der Wert kann jede 32-Bit-Ganzzahl sein, die kleiner oder gleich 1 000 000 000 ist. H\u00f6here Werte sind f\u00fcr kritische System-Pods reserviert, die in der Regel nicht verdr\u00e4ngt werden k\u00f6nnen.<strong> <\/strong>Die Verdr\u00e4ngung erfolgt nur, wenn kein Platz f\u00fcr einen hochpriorit\u00e4ren Pod vorhanden ist, sodass einige Pods von einem bestimmten Knoten evakuiert werden. Wenn Ihnen dieser Mechanismus zu restriktiv erscheint, k\u00f6nnen Sie die Option hinzuf\u00fcgen <code>preemptionPolicy: Never<\/code>, und dann wird es keine Verdr\u00e4ngung geben, der Pod wird an erster Stelle in der Warteschlange stehen und warten, bis der Scheduler Ressourcen f\u00fcr ihn findet.<\/p>\n<p>Als n\u00e4chstes erstellen wir einen Pod, in dem wir den Namen angeben <code>priorityClassName<\/code>:<\/p>\n<pre><code>apiVersion: v1\nkind: Pod\nmetadata:\n  name: static-web\n  labels:\n    role: myrole\n spec:\n  containers:\n    - name: web\n      image: nginx\n      ports:\n        - name: web\n          containerPort: 80\n          protocol: TCP\n  priorityClassName: hoch-priorit\u00e4r\n          <\/code><\/pre>\n<p>Es k\u00f6nnen beliebig viele Priorit\u00e4tsklassen erstellt werden, obwohl es empfohlen wird, damit nicht zu \u00fcbertreiben (zum Beispiel auf niedrig, mittel und hoch zu beschr\u00e4nken). <\/p>\n<p>So k\u00f6nnen Sie bei Bedarf die Effizienz der Bereitstellung kritischer Dienste wie dem nginx-ingress-controller, coredns usw. steigern.<\/p>\n<h2>9. Optimieren Sie den ETCD-Cluster<\/h2>\n<p><img decoding=\"async\" alt=\"Neun Tipps zur Leistungssteigerung von Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/f5917adfa943c789b6c784f43305851b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>ETCD kann als das Gehirn des gesamten Clusters bezeichnet werden. Es ist sehr wichtig, diese Datenbank auf hohem Niveau zu betreiben, da die Geschwindigkeit der Operationen im \u201aKubernetes\u2018 von ihr abh\u00e4ngt. Eine standardm\u00e4\u00dfige und gleichzeitig akzeptable L\u00f6sung w\u00e4re, den ETCD-Cluster auf den Master-Nodes zu halten, um eine minimale Latenz zum kube-apiserver zu gew\u00e4hrleisten. Wenn das nicht m\u00f6glich ist, platzieren Sie ETCD so nah wie m\u00f6glich, wobei eine gute Bandbreite zwischen den Teilnehmern erforderlich ist. Achten Sie auch darauf, wie viele Nodes aus ETCD ausfallen k\u00f6nnen, ohne dem Cluster zu schaden.<\/p>\n<p><img decoding=\"async\" alt=\"Neun Tipps zur Leistungssteigerung von Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/cdd2c32eefed253c6ff774899c367ccc.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Bitte beachten Sie, dass eine \u00fcberm\u00e4\u00dfige Erh\u00f6hung der Anzahl der Teilnehmer im Cluster die Fehlertoleranz auf Kosten der Leistung erh\u00f6hen kann; alles sollte im angemessenen Ma\u00df sein.<\/p>\n<p>Wenn es um die Konfiguration des Dienstes geht, gibt es nur wenige Empfehlungen:<\/p>\n<ol>\n<li>\n<p>Gute Hardware haben, basierend auf der Gr\u00f6\u00dfe des Clusters (Sie k\u00f6nnen lesen <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/etcd-io\/etcd\/blob\/master\/Documentation\/op-guide\/hardware.md\">hier<\/a><\/noindex>).<\/p>\n<\/li>\n<li>\n<p>Passen Sie einige Parameter an, wenn Sie den Cluster zwischen mehreren Rechenzentren verteilt haben oder wenn Ihr Netzwerk und Ihre Festplatten zu w\u00fcnschen \u00fcbrig lassen (lesen Sie mehr dar\u00fcber) <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/etcd-io\/etcd\/blob\/master\/Documentation\/tuning.md\">hier<\/a><\/noindex>).<\/p>\n<\/li>\n<\/ol>\n<h2>Fazit<\/h2>\n<p>In diesem Artikel werden die Punkte beschrieben, die unser Team zu beachten versucht. Es handelt sich nicht um eine Schritt-f\u00fcr-Schritt-Anleitung, sondern um Vorschl\u00e4ge, die zur Optimierung der Betriebskosten des Clusters n\u00fctzlich sein k\u00f6nnten. Jeder Cluster ist einzigartig, und die Anpassungsl\u00f6sungen k\u00f6nnen erheblich variieren, daher w\u00e4re es interessant, von Ihnen zu h\u00f6ren: Wie \u00fcberwachen Sie Ihren Kubernetes-Cluster, mit welchen Mitteln verbessern Sie seine Leistung? Teilen Sie Ihre Erfahrungen in den Kommentaren, wir w\u00fcrden gerne davon erfahren. <\/p>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/domclick\/blog\/520968\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041e\u043b\u0435\u0433 \u0421\u0438\u0434\u043e\u0440\u0435\u043d\u043a\u043e\u0432, \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u041c\u044b \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u043c \u00ab\u041a\u0443\u0431\u0438\u043a\u00bb \u0432 \u043f\u0440\u043e\u0434\u0435 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0440\u0451\u0445 \u043b\u0435\u0442, \u0438 \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0436\u0438\u043b\u0438 \u0441 \u043d\u0438\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u043e\u0432\u0435\u0434\u0430\u044e \u0432\u0430\u043c, \u043a\u0430\u043a \u043f\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0436\u0430\u0442\u044c \u0438\u0437 \u00ab\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e\u00bb Kubernetes \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. Ready steady [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":97983,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-97982","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=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041e\u043b\u0435\u0433 \u0421\u0438\u0434\u043e\u0440\u0435\u043d\u043a\u043e\u0432, \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u041c\u044b \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u043c \u00ab\u041a\u0443\u0431\u0438\u043a\u00bb \u0432 \u043f\u0440\u043e\u0434\u0435 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0440\u0451\u0445 \u043b\u0435\u0442, \u0438 \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0436\u0438\u043b\u0438 \u0441 \u043d\u0438\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u043e\u0432\u0435\u0434\u0430\u044e \u0432\u0430\u043c, \u043a\u0430\u043a \u043f\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0436\u0430\u0442\u044c \u0438\u0437 \u00ab\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e\u00bb Kubernetes \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. Ready steady\" \/>\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\/devyat-sovetov-po-povysheniyu-proizvoditelnosti-kubernetes\" \/>\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\u0414\u0435\u0432\u044f\u0442\u044c \u0441\u043e\u0432\u0435\u0442\u043e\u0432 \u043f\u043e \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041e\u043b\u0435\u0433 \u0421\u0438\u0434\u043e\u0440\u0435\u043d\u043a\u043e\u0432, \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u041c\u044b \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u043c \u00ab\u041a\u0443\u0431\u0438\u043a\u00bb \u0432 \u043f\u0440\u043e\u0434\u0435 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0440\u0451\u0445 \u043b\u0435\u0442, \u0438 \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0436\u0438\u043b\u0438 \u0441 \u043d\u0438\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u043e\u0432\u0435\u0434\u0430\u044e \u0432\u0430\u043c, \u043a\u0430\u043a \u043f\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0436\u0430\u0442\u044c \u0438\u0437 \u00ab\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e\u00bb Kubernetes \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. Ready steady\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/devyat-sovetov-po-povysheniyu-proizvoditelnosti-kubernetes\" \/>\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-10-23T12:42:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-11-17T22:58:47+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\udd47Neun Tipps zur Steigerung der Kubernetes-Leistung | ProHoster","description":"Hallo zusammen! Mein Name ist Oleg Sidorenkov und ich bin Teamleiter der Infrastruktur bei DomClick. Wir setzen \u201eKubik\u201c seit \u00fcber drei Jahren produktiv ein und haben in dieser Zeit viele interessante Erfahrungen damit gemacht. Heute werde ich Ihnen erz\u00e4hlen, wie man mit der richtigen Herangehensweise noch mehr Leistung aus einem \u201evanilla\u201c Kubernetes f\u00fcr Ihren Cluster herausholen kann. Bereit, bereit!","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/devyat-sovetov-po-povysheniyu-proizvoditelnosti-kubernetes","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\u0414\u0435\u0432\u044f\u0442\u044c \u0441\u043e\u0432\u0435\u0442\u043e\u0432 \u043f\u043e \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 Kubernetes | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041e\u043b\u0435\u0433 \u0421\u0438\u0434\u043e\u0440\u0435\u043d\u043a\u043e\u0432, \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u041c\u044b \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u043c \u00ab\u041a\u0443\u0431\u0438\u043a\u00bb \u0432 \u043f\u0440\u043e\u0434\u0435 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0440\u0451\u0445 \u043b\u0435\u0442, \u0438 \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0436\u0438\u043b\u0438 \u0441 \u043d\u0438\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u043e\u0432\u0435\u0434\u0430\u044e \u0432\u0430\u043c, \u043a\u0430\u043a \u043f\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0436\u0430\u0442\u044c \u0438\u0437 \u00ab\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e\u00bb Kubernetes \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. Ready steady","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/devyat-sovetov-po-povysheniyu-proizvoditelnosti-kubernetes","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-10-23T12:42:15+00:00","article:modified_time":"2020-11-17T22:58:47+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"97982","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 10:08:27","updated":"2022-09-30 17:30:03"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/97982","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=97982"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/97982\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/97983"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=97982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=97982"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=97982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}