{"id":94262,"date":"2020-09-14T19:42:34","date_gmt":"2020-09-14T17:42:34","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod"},"modified":"2020-09-14T19:42:34","modified_gmt":"2020-09-14T17:42:34","slug":"kak-poluchit-dostup-k-resursam-kubernetes-pod","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod","title":{"rendered":"Wie man auf die Ressourcen von Kubernetes Pod zugreift","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Wie man auf die Ressourcen von Kubernetes Pod zugreift\" src=\"\/wp-content\/uploads\/2020\/09\/3d6760d512ef456daad121f7d1ddbcf8.jpg\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" href=\"https:\/\/www.deviantart.com\/tohad\/art\/The-Reward-549720998\"><i>Die Belohnung von Tohad<\/i><\/a><\/noindex><\/p>\n<p>Beim ersten Arbeiten mit Kubernetes wird oft die Konfiguration der Containerressourcen vergessen. In diesem Stadium reicht es aus, sicherzustellen, dass das Docker-Image funktioniert und im Kubernetes-Cluster bereitgestellt werden kann.<\/p>\n<p>Sp\u00e4ter muss die Anwendung jedoch zusammen mit anderen Anwendungen im Produktionscluster bereitgestellt werden. Dazu m\u00fcssen Ressourcen f\u00fcr den Container bereitgestellt werden, und es muss sichergestellt werden, dass diese ausreichend sind, um die Anwendung zu starten und auszuf\u00fchren, ohne dass es Probleme mit anderen laufenden Anwendungen gibt.<\/p>\n<p>Team <noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/\">Kubernetes aaS von Mail.ru<\/a><\/noindex> Ich habe einen Artikel \u00fcber Containerressourcen (CPU &amp; MEM), Anfragen und Ressourcenbeschr\u00e4nkungen \u00fcbersetzt. Sie werden erfahren, welche Vorteile diese Einstellungen bieten und was passiert, wenn sie nicht festgelegt werden.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Rechenressourcen<\/h2>\n<p>\nWir haben zwei Ressourcentypen mit folgenden Einheiten:<\/p>\n<ul>\n<li>Zentralprozessor (CPU) \u2013 Kerne;<\/li>\n<li>Speicher (MEM) \u2013 Bytes.<\/li>\n<\/ul>\n<p>\nRessourcen werden f\u00fcr jeden Container angegeben. In der folgenden YAML-Datei f\u00fcr den Pod sehen Sie den Ressourcenabschnitt, der die angeforderten und maximalen Ressourcen enth\u00e4lt:<\/p>\n<ul>\n<li>Angeforderte Ressourcen des Pods = Summe der angeforderten Ressourcen aller Container;<\/li>\n<li>Maximale Ressourcen des Pods = Summe der maximalen Ressourcen aller Container.<\/li>\n<\/ul>\n<p><\/p>\n<pre><code class=\"plaintext\">apiVersion: v1\nkind: Pod\nmetadata:\n  name: backend-pod-name\n  labels:\n    application: backend\nspec:\n  containers:\n    - name: main-container\n      image: my-backend\n      tag: v1\n      ports:\n      - containerPort: 8080\n      resources:\n        requests:\n          cpu: 0.2 # ANGEFRAGTER CPU: 200m Kerne\n          memory: \"1Gi\" # ANGEFRAGTER SPEICHER: 1Gi\n        limits:\n          cpu: 1 # MAXIMALE CPU-NUTZUNG: 1 Kern\n          memory: \"1Gi\" # MAXIMALE SPEICHERNUTZUNG: 1Gi\n    - name: other-container\n      image: other-app\n      tag: v1\n      ports:\n      - containerPort: 8000\n      resources:\n        requests:\n          cpu: \"200m\" # ANGEFRAGTER CPU: 200m Kerne\n          memory: \"0.5Gi\" # ANGEFRAGTER SPEICHER: 0.5Gi\n        limits:\n          cpu: 1 # MAXIMALE CPU-NUTZUNG: 1 Kern\n          memory: \"1Gi\" # MAXIMALE SPEICHERNUTZUNG: 1Gi<\/code><\/pre>\n<p>Beispiel f\u00fcr angeforderte und maximale Ressourcen<\/p>\n<p>Feld <code>resources.requested<\/code> aus der Pod-Spezifikation \u2013 eines der Elemente, die verwendet werden, um den passenden Knoten zu finden. Darauf kann bereits die Bereitstellung des Pods geplant werden. Wie sucht man also den geeigneten Knoten?<\/p>\n<p>Kubernetes besteht aus mehreren Komponenten, einschlie\u00dflich eines Master-Knotens (Kubernetes Control Plane). Im Master-Knoten laufen mehrere Prozesse: kube-apiserver, kube-controller-manager und kube-scheduler. <\/p>\n<p>Der Prozess kube-scheduler ist verantwortlich f\u00fcr die \u00dcberpr\u00fcfung neu erstellter Pods und die Suche nach m\u00f6glichen Arbeitsknoten, die allen Anforderungen der Pods entsprechen, einschlie\u00dflich der Anzahl der angeforderten Ressourcen. Die Liste der Knoten, die kube-scheduler gefunden hat, wird bewertet. Der Pod wird auf dem Knoten mit den h\u00f6chsten Punktzahlen eingeplant.<\/p>\n<p><img decoding=\"async\" alt=\"Wie man auf die Ressourcen von Kubernetes Pod zugreift\" src=\"\/wp-content\/uploads\/2020\/09\/b489991a3cbbd5359c99701886d488e5.jpg\" style=\"display:block;margin: 0 auto;\" \/>Wo wird der lila Pod platziert?<\/p>\n<p>Auf dem Bild ist zu sehen, dass der kube-scheduler einen neuen lila Pod planen soll. Der Kubernetes-Cluster enth\u00e4lt zwei Knoten: A und B. Wie zu erkennen ist, kann der kube-scheduler den Pod nicht auf Knoten A planen \u2014 die verf\u00fcgbaren (unangeforderten) Ressourcen entsprechen nicht den Anforderungen des lila Pods. So passt der vom lila Pod angeforderte 1 GB Speicher nicht auf Knoten A, da der verf\u00fcgbare Speicher 0,5 GB betr\u00e4gt. Aber Knoten B hat gen\u00fcgend Ressourcen. Letztendlich entscheidet der kube-scheduler, dass das Ziel des lila Pods Knoten B ist.<\/p>\n<p>Jetzt wissen wir, wie die angeforderten Ressourcen die Auswahl des Knotens f\u00fcr den Pod-Start beeinflussen. Aber wie beeinflussen die Grenzwerte der Ressourcen?<\/p>\n<p>Grenzwerte der Ressourcen sind das Limit, welches CPU\/MEM nicht \u00fcberschreiten darf. Dennoch ist die CPU-Ressource flexibel, daher f\u00fchren Container, die die Grenzwerte der CPU erreicht haben, nicht zur Beendigung des Pods. Stattdessen wird eine Drosselung der CPU aktiviert. Wenn jedoch das Limit f\u00fcr die Nutzung von MEM erreicht wird, wird der Container vom OOM-Killer gestoppt und neu gestartet, wenn dies durch die RestartPolicy erlaubt ist.<\/p>\n<h2>Angeforderte und Grenzwerte der Ressourcen im Detail<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Wie man auf die Ressourcen von Kubernetes Pod zugreift\" src=\"\/wp-content\/uploads\/2020\/09\/22e672100940e8895ae42a56a681111f.jpg\" style=\"display:block;margin: 0 auto;\" \/>Verh\u00e4ltnis der Ressourcen zwischen Docker und Kubernetes<\/p>\n<p>Der beste Weg, um zu erkl\u00e4ren, wie angeforderte und Grenzwerte der Ressourcen funktionieren, besteht darin, die Beziehung zwischen Kubernetes und Docker darzustellen. Im obigen Bild k\u00f6nnen Sie sehen, wie die Felder von Kubernetes mit den Docker-Startflags verbunden sind.<\/p>\n<h2>Speicher: Anfrage und Begrenzung<\/h2>\n<p><\/p>\n<pre><code class=\"plaintext\">containers:\n...\n resources:\n   requests:\n     memory: \"0.5Gi\"\n   limits:\n     memory: \"1Gi\"\n<\/code><\/pre>\n<p>\nWie bereits erw\u00e4hnt, wird der Speicher in Bytes gemessen. Basierend auf <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/manage-resources-containers\/#meaning-of-memory\">Kubernetes-Dokumentation<\/a><\/noindex>, k\u00f6nnen wir den Speicher als Zahl angeben. Normalerweise handelt es sich um eine ganze Zahl, z.B. 2678 \u2014 also 2678 Bytes. Sie k\u00f6nnen auch Suffixe verwenden <code>G<\/code> und <code>Gi<\/code>, wichtig ist, dass sie nicht gleichwertig sind. Der erste ist dezimal und der zweite bin\u00e4r. Als Beispiel, wie in der k8s-Dokumentation erw\u00e4hnt: <code>128974848<\/code>, <code>129e6<\/code>, <code>129M<\/code>, <code>123Mi<\/code> \u2014 sie sind praktisch gleichwertig.<\/p>\n<p>Der Kubernetes-Parameter <code>limits.memory<\/code> entspricht dem Flag <code>--memory<\/code> von Docker. Im Fall von <code>request.memory<\/code> fehlt der Hinweis f\u00fcr Docker, da Docker dieses Feld nicht nutzt. Sie k\u00f6nnten fragen, ob das \u00fcberhaupt notwendig ist? Ja, es ist n\u00f6tig. Wie ich bereits sagte, ist das Feld f\u00fcr Kubernetes von Bedeutung. Basierend auf den Informationen daraus entscheidet der kube-scheduler, auf welchem Knoten der Pod geplant werden soll.<\/p>\n<p><strong>Was passiert, wenn f\u00fcr die Anfrage nicht gen\u00fcgend Speicher eingestellt wird?<\/strong><\/p>\n<p>Wenn der Container die Grenzen des angeforderten Speichers erreicht, wird der Pod in eine Gruppe von Pods versetzt, die bei unzureichendem Speicher im Knoten gestoppt werden.<\/p>\n<p><strong>Was passiert, wenn ein zu niedriger Grenzwert f\u00fcr den Arbeitsspeicher festgelegt wird?<\/strong><\/p>\n<p>Wenn der Container den Grenzwert f\u00fcr den Arbeitsspeicher \u00fcberschreitet, wird er aus Gr\u00fcnden des OOM-Kill beendet. Er wird neu gestartet, wenn dies basierend auf der RestartPolicy m\u00f6glich ist, wobei der Standardwert \u2013 <code>Immer<\/code>.<\/p>\n<p><strong>Was passiert, wenn kein angeforderter Arbeitsspeicher angegeben wird?<\/strong><\/p>\n<p>Kubernetes \u00fcbernimmt den Grenzwert und setzt ihn als Standardwert fest.<\/p>\n<p><strong>Was kann passieren, wenn kein Grenzwert f\u00fcr den Arbeitsspeicher angegeben wird?<\/strong><\/p>\n<p>Der Container hat keine Einschr\u00e4nkungen und kann so viel Arbeitsspeicher verwenden, wie er m\u00f6chte. Wenn er jedoch beginnt, den gesamten verf\u00fcgbaren Arbeitsspeicher des Knotens zu verwenden, wird er vom OOM-Killer beendet. Der Container wird dann neu gestartet, wenn dies basierend auf der RestartPolicy m\u00f6glich ist.<\/p>\n<p><strong>Was passiert, wenn keine Arbeitsspeicher-Limits angegeben werden?<\/strong><\/p>\n<p>Dies ist das schlimmste Szenario: Der Scheduler wei\u00df nicht, wie viele Ressourcen der Container ben\u00f6tigt, und das kann ernsthafte Probleme auf dem Knoten verursachen. In diesem Fall w\u00e4re es gut, Standardlimits im Namensraum (festgelegt durch LimitRange) zu haben. Standardm\u00e4\u00dfig gibt es keine Limits \u2013 der Pod hat keine Einschr\u00e4nkungen, er kann so viel Arbeitsspeicher verwenden, wie er m\u00f6chte.<\/p>\n<p>Wenn der angeforderte Arbeitsspeicher gr\u00f6\u00dfer ist als das, was der Knoten anbietet \u2013 wird der Pod nicht geplant. Es ist wichtig zu beachten, dass <code>Requests.memory<\/code> kein Minimum darstellt. Es beschreibt den Speicherbedarf, der ausreicht, um den Container stabil zu betreiben. <\/p>\n<p>Es wird im Allgemeinen empfohlen, denselben Wert f\u00fcr <code>request.memory<\/code> und <code>limit.memory<\/code>festzulegen. Dadurch stellt Kubernetes sicher, dass der Pod nicht auf einem Knoten geplant wird, der \u00fcber gen\u00fcgend Arbeitsspeicher verf\u00fcgt, um den Pod zu starten, aber nicht gen\u00fcgend, um ihn auszuf\u00fchren. Beachten Sie: Bei der Planung des Pods ber\u00fccksichtigt Kubernetes nur <code>requests.memory<\/code>, und <code>limits.memory<\/code> nicht.<\/p>\n<h2>CPU: Anfrage und Limit<\/h2>\n<p><\/p>\n<pre><code class=\"plaintext\">containers:\n...\n resources:\n   requests:\n     cpu: 1\n   limits:\n     cpu: \"1200m\"\n<\/code><\/pre>\n<p>\nBei CPU ist es etwas komplizierter. Wenn man sich das Bild der Beziehung zwischen Kubernetes und Docker anschaut, f\u00e4llt auf, dass <code>request.cpu<\/code> entspricht <code>--cpu-shares<\/code>, w\u00e4hrend <code>limit.cpu<\/code> entspricht dem Flag <code>cpus<\/code> in Docker.<\/p>\n<p>Die von Kubernetes angeforderte CPU wird mit 1024 multipliziert \u2013 die Verteilung der CPU-Zyklen. Wenn Sie eine vollst\u00e4ndige Kernanzahl anfordern m\u00f6chten, m\u00fcssen Sie hinzuf\u00fcgen <code>cpu: 1<\/code>, wie oben gezeigt. <\/p>\n<p>Die Anfrage nach einem vollst\u00e4ndigen Kern (Verh\u00e4ltnis = 1024) bedeutet nicht, dass Ihr Container diesen erh\u00e4lt. Wenn Ihr Host-Computer nur \u00fcber einen Kern verf\u00fcgt und Sie mehr als einen Container verwenden, m\u00fcssen alle Container die verf\u00fcgbare CPU gemeinsam nutzen. Wie funktioniert das? Schauen wir uns das Bild an.<\/p>\n<p><img decoding=\"async\" alt=\"Wie man auf die Ressourcen von Kubernetes Pod zugreift\" src=\"\/wp-content\/uploads\/2020\/09\/7f4b20642708ef3a7e773d7900161267.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nCPU-Anfrage - System mit einem Kern<\/p>\n<p>Stellen Sie sich vor, Sie haben ein Host-System mit einem Kern, auf dem Container laufen. Mama (Kubernetes) hat einen Kuchen (CPU) gebacken und m\u00f6chte ihn mit den Kindern (Containern) teilen. Drei Kinder wollen einen ganzen Kuchen (Verh\u00e4ltnis = 1024), ein weiteres Kind m\u00f6chte die H\u00e4lfte des Kuchens (512). Mama m\u00f6chte fair sein und macht eine einfache Berechnung.<\/p>\n<pre><code class=\"plaintext\"># \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0440\u043e\u0433\u043e\u0432 \u0445\u043e\u0442\u044f\u0442 \u0434\u0435\u0442\u0438?\n# 3 \u0440\u0435\u0431\u0435\u043d\u043a\u0430 \u0445\u043e\u0442\u044f\u0442 \u043f\u043e \u0446\u0435\u043b\u043e\u043c\u0443 \u043f\u0438\u0440\u043e\u0433\u0443 \u0438 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u043f\u0438\u0440\u043e\u0433\u0430\ncakesNumberKidsWant = (3 * 1) + (1 * 0.5) = 3.5\n# \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a:\n3 (\u0440\u0435\u0431\u0435\u043d\u043a\u0430\/\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430) * 1 (\u0446\u0435\u043b\u044b\u0439 \u043f\u0438\u0440\u043e\u0433\/\u043f\u043e\u043b\u043d\u043e\u0435 \u044f\u0434\u0440\u043e) + 1 (\u0440\u0435\u0431\u0435\u043d\u043e\u043a\/\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440) * 0.5 (\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043f\u0438\u0440\u043e\u0433\u0430\/\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u044f\u0434\u0440\u0430)\n# \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0440\u043e\u0433\u043e\u0432 \u0438\u0441\u043f\u0435\u0447\u0435\u043d\u043e?\navailableCakesNumber = 1\n# \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0440\u043e\u0433\u0430 (\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e) \u0434\u0435\u0442\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c?\nnewMaxRequest = 1 \/ 3.5 =~ 28%<\/code><\/pre>\n<p>\nLaut Berechnung werden drei Kinder jeweils 28 % eines Kerns erhalten, und nicht einen ganzen Kern. Dem vierten Kind stehen 14 % eines vollst\u00e4ndigen Kerns zu, nicht die H\u00e4lfte. Aber alles ist anders, wenn Sie ein Multi-Core-System haben.<\/p>\n<p><img decoding=\"async\" alt=\"Wie man auf die Ressourcen von Kubernetes Pod zugreift\" src=\"\/wp-content\/uploads\/2020\/09\/7bf71d97add9adcf7cf0260941526590.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nCPU-Anfrage - Multi-Core (4) System<\/p>\n<p>Im obigen Bild sieht man, dass drei Kinder einen ganzen Kuchen wollen und eines die H\u00e4lfte. Da Mama vier Kuchen gebacken hat, wird jedes ihrer Kinder so viel bekommen, wie es m\u00f6chte. In einem Multi-Core-System sind die Prozessorressourcen auf alle verf\u00fcgbaren Prozessorkerne verteilt. Wenn der Container auf weniger als einen vollen CPU-Kern beschr\u00e4nkt ist, kann er ihn trotzdem zu 100 % nutzen. <\/p>\n<p>Die oben genannten Berechnungen sind vereinfacht, um zu verstehen, wie die CPU zwischen Containern aufgeteilt wird. Nat\u00fcrlich gibt es neben den Containern auch andere Prozesse, die CPU-Ressourcen nutzen. Wenn Prozesse in einem Container im Leerlauf sind, k\u00f6nnen andere deren Ressourcen benutzen. <code>CPU: \"200m\"<\/code> entspricht <code>CPU: 0,2<\/code>, was etwa 20 % eines Kerns entspricht.<\/p>\n<p>Jetzt sprechen wir \u00fcber <code>limit.cpu<\/code>. CPU, das Kubernetes begrenzt, wird mit 100 multipliziert. Das Ergebnis ist die Menge an Zeit, die der Container alle 100 \u00b5s nutzen kann (<code>cpu-period<\/code>). <\/p>\n<p><code>limit.cpu<\/code> entspricht dem Docker-Flag <code>--cpus<\/code>. Das ist eine neue Kombination aus den alten <code>--cpu-period<\/code> und <code>--cpu-quota<\/code>. Indem wir es festlegen, geben wir an, wie viel verf\u00fcgbare CPU-Ressourcen der Container maximal nutzen kann, bis die Drosselung beginnt:<\/p>\n<ul>\n<li><strong>cpus<\/strong> \u2014 Kombination <code>cpu-period<\/code> und <code>cpu-quota. cpus = 1.5<\/code> entspricht der Festlegung von <code>cpu-period = 100000<\/code> und <code>cpu-quota = 150000<\/code>;<\/li>\n<li><strong>cpu-period<\/strong> \u2014 die Periode <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Completely_Fair_Scheduler\">des CFS-CPU-Schedulers<\/a><\/noindex>, standardm\u00e4\u00dfig 100 Mikrosekunden;<\/li>\n<li><strong>cpu-quota<\/strong> \u2014 die Anzahl der Mikrosekunden innerhalb von <code>cpu-period<\/code>, die der Container begrenzt ist.<\/li>\n<\/ul>\n<p>\n<strong>Was passiert, wenn nicht gen\u00fcgend angeforderte CPU bereitgestellt wird?<\/strong><\/p>\n<p>Wenn der Container mehr ben\u00f6tigt, als bereitgestellt ist, stiehlt er CPU von anderen Prozessen.<\/p>\n<p><strong>Was geschieht, wenn ein unzureichendes CPU-Limit festgelegt wird?<\/strong><\/p>\n<p>Da die CPU-Ressourcen reguliert sind, wird das Drosseln aktiviert.<\/p>\n<p><strong>Was passiert, wenn kein CPU-Anforderungswert angegeben wird?<\/strong><\/p>\n<p>Analog zur Speicheranfrage entspricht der Wert der Anfrage dem Limit.<\/p>\n<p><strong>Was passiert, wenn kein CPU-Limit angegeben wird?<\/strong><\/p>\n<p>Der Container verwendet so viel CPU, wie er ben\u00f6tigt. Wenn eine Standard-CPU-Richtlinie im Namespace definiert ist (LimitRange), wird dieses Limit auch f\u00fcr den Container verwendet.<\/p>\n<p><strong>Was geschieht, wenn weder eine Anfrage noch ein Limit f\u00fcr die CPU angegeben werden?<\/strong><\/p>\n<p>\u00c4hnlich wie beim Speicher ist dies das schlechteste Szenario. Der Scheduler wei\u00df nicht, wie viele Ressourcen Ihr Container ben\u00f6tigt, was zu schwerwiegenden Problemen auf dem Knoten f\u00fchren kann. Um dies zu vermeiden, sollten Standardlimits f\u00fcr Namespaces (LimitRange) festgelegt werden.<\/p>\n<p>Denken Sie daran: Wenn Sie mehr CPU anfordern, als die Knoten bereitstellen k\u00f6nnen, wird der Pod nicht geplant. <code>Requests.cpu<\/code> \u2014 kein Mindestwert, sondern ein Wert, der ausreicht, um den Pod zu starten und ohne Ausf\u00e4lle zu betreiben. Wenn die Anwendung keine komplexen Berechnungen durchf\u00fchrt, ist es am besten, <code>request.cpu &lt;= 1<\/code> und so viele Replikate wie n\u00f6tig zu starten.<\/p>\n<h2>Die ideale Anzahl an angeforderten Ressourcen oder Ressourcenlimits<\/h2>\n<p>\nWir haben von der Begrenzung der Rechenressourcen erfahren. Jetzt ist es an der Zeit, die Frage zu beantworten: \u201eWie viele Ressourcen ben\u00f6tigt mein Pod, um die Anwendung reibungslos zu betreiben? Welche Anzahl ist ideal?\u201c <\/p>\n<p>Leider gibt es auf diese Fragen keine eindeutigen Antworten. Wenn Sie nicht wissen, wie Ihre Anwendung funktioniert und wie viel CPU oder Speicher sie ben\u00f6tigt, ist es am besten, der Anwendung viel Speicher und CPU zu geben und dann Leistungstests durchzuf\u00fchren.<\/p>\n<p>Neben den Leistungstests sollten Sie die Anwendung eine Woche lang im Monitoring beobachten. Wenn die Grafiken zeigen, dass Ihre Anwendung weniger Ressourcen verbraucht, als Sie angefordert haben, k\u00f6nnen Sie die angeforderte CPU oder den Speicher reduzieren.<\/p>\n<p>Als Beispiel sehen Sie dieses <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/grafana\/dashboards\/7187\">Grafana-Dashboard<\/a><\/noindex>. Es zeigt den Unterschied zwischen den angeforderten Ressourcen oder dem Ressourcenlimit und der aktuellen Ressourcennutzung.<\/p>\n<h2>Fazit<\/h2>\n<p>\nAnfragen und Ressourcensperren helfen, die Funktionsf\u00e4higkeit des Kubernetes-Clusters aufrechtzuerhalten. Eine richtige Konfiguration der Limits minimiert die Kosten und h\u00e4lt die Anwendungen st\u00e4ndig in einem funktionsf\u00e4higen Zustand.<\/p>\n<p>Kurz gesagt, es gibt einige Punkte, die man beachten sollte:<\/p>\n<ol>\n<li>Die angeforderten Ressourcen sind die Konfiguration, die beim Start ber\u00fccksichtigt wird (wenn Kubernetes plant, die Anwendung zu platzieren). Im Gegensatz dazu ist die Ressourcensperre w\u00e4hrend des Betriebs wichtig \u2014 wenn die Anwendung bereits auf einem Knoten l\u00e4uft.<\/li>\n<li>Im Vergleich zu RAM ist die CPU eine regulierbare Ressource. Bei CPU-Mangel wird Ihr Pod nicht beendet; es tritt ein Drosselmechanismus in Kraft.<\/li>\n<li>Angeforderte Ressourcen und Ressourcensperren sind keine minimalen oder maximalen Werte! Durch die Festlegung angeforderter Ressourcen garantieren Sie, dass die Anwendung reibungslos funktioniert.<\/li>\n<li>Eine gute Praxis ist es, die angeforderte Speichermenge gleich dem Speicherrlimit zu setzen.<\/li>\n<li>Es ist gut, die angeforderte <code>CPU &lt;=1<\/code>, wenn die Anwendung keine komplexen Berechnungen durchf\u00fchrt.<\/li>\n<li>Wenn Sie mehr Ressourcen anfordern, als auf dem Knoten verf\u00fcgbar sind, wird der Pod niemals auf diesem Knoten geplant.<\/li>\n<li>Um die richtige Menge an angeforderten Ressourcen\/Ressourcensperren zu bestimmen, verwenden Sie Lasttests und \u00dcberwachung.<\/li>\n<\/ol>\n<p>\nIch hoffe, dieser Artikel hilft Ihnen, das grundlegende Konzept der Ressourcensperren zu verstehen. Und Sie k\u00f6nnen dieses Wissen in Ihrer Arbeit anwenden.<\/p>\n<p>Viel Erfolg!<\/p>\n<p><strong>Was Sie sonst noch lesen sollten:<\/strong><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/500504\/\">SRE-Observabilit\u00e4t: Namensr\u00e4ume und Metrikstruktur<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/blog\/poleznye-instrumenty-dlya-kubernetes\">90+ n\u00fctzliche Tools f\u00fcr Kubernetes: Deployment, Management, Monitoring, Sicherheit und mehr<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/tele.click\/k8s_mail\">Unser Kanal Rund um Kubernetes auf Telegram<\/a><\/noindex>.<\/li>\n<\/ol>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/516014\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>The Reward by Tohad \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Kubernetes \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0437 Docker \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes. \u041d\u043e \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0438\u0445 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":94263,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-94262","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\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\/kak-poluchit-dostup-k-resursam-kubernetes-pod\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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\u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c Kubernetes Pod | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod\" \/>\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-09-14T17:42:34+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-14T17:42:34+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\udd47Wie Sie auf Kubernetes Pod-Ressourcen zugreifen | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod","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\u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c Kubernetes Pod | ProHoster","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod","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-09-14T17:42:34+00:00","article:modified_time":"2020-09-14T17:42:34+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"94262","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 11:30:27","updated":"2022-10-02 18:20:09","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/94262","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=94262"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/94262\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/94263"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=94262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=94262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=94262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}