{"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\/da\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod","title":{"rendered":"Hvordan man f\u00e5r adgang til ressourcerne i Kubernetes Pod","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Hvordan man f\u00e5r adgang til ressourcerne i Kubernetes Pod\" 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>Bel\u00f8nningen af Tohad<\/i><\/a><\/noindex><\/p>\n<p>N\u00e5r man begynder at arbejde med Kubernetes, glemmer man ofte at indstille containerressourcer. P\u00e5 dette trin er det nok at sikre, at Docker-billedet fungerer, og at det kan implementeres i Kubernetes-klusteret.<\/p>\n<p>Men senere kr\u00e6ves det, at applikationen implementeres i produktionsklusteret sammen med andre applikationer. For dette skal der tildeles ressourcer til containeren, og det skal sikres, at der er tilstr\u00e6kkeligt til at starte og k\u00f8re applikationen uden problemer i de \u00f8vrige k\u00f8rende applikationer.<\/p>\n<p>Kommandoen <noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/\">Kubernetes aaS fra Mail.ru<\/a><\/noindex> oversatte artiklen om containerressourcer (CPU &amp; MEM), ressourceanmodninger og -begr\u00e6nsninger. Du vil l\u00e6re, hvilke fordele disse indstillinger giver, og hvad der vil ske, hvis de ikke indstilles.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Beregning ressourcer<\/h2>\n<p>\nVi har to typer ressourcer med f\u00f8lgende enheder:<\/p>\n<ul>\n<li>Central processor (CPU) \u2014 kerner;<\/li>\n<li>Hukommelse (MEM) \u2014 byte.<\/li>\n<\/ul>\n<p>\nRessourcer angives for hver container. I den f\u00f8lgende YAML-fil Pod vil du se en ressourceafsnit, der indeholder anmodede og maksimale ressourcer:<\/p>\n<ul>\n<li>Anmodede ressourcer for Pod = summen af de anmodede ressourcer for alle containere;<\/li>\n<li>Maksimale ressourcer for Pod = summen af de maksimale ressourcer for alle containere.<\/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    \u2014 name: main-container\n      image: my-backend\n      tag: v1\n      ports:\n      \u2014 containerPort: 8080\n      resources:\n        requests:\n          cpu: 0.2 # ANBEFALET CPU: 200m kerner\n          memory: \"1Gi\" # ANBEFALET RAM: 1Gi\n        limits:\n          cpu: 1 # MAKS CPU BRUG: 1 kerne\n          memory: \"1Gi\" # MAKS RAM BRUG:  1Gi\n    \u2014 name: other-container\n      image: other-app\n      tag: v1\n      ports:\n      \u2014 containerPort: 8000\n      resources:\n        requests:\n          cpu: \"200m\" # ANBEFALET CPU: 200m kerner\n          memory: \"0.5Gi\" # ANBEFALET RAM: 0.5Gi\n        limits:\n          cpu: 1 # MAKS CPU BRUG: 1 kerne\n          memory: \"1Gi\" # MAKS RAM BRUG:  1Gi<\/code><\/pre>\n<p>Eksempel p\u00e5 anmodede og maksimale ressourcer<\/p>\n<p>Felt <code>resources.requested<\/code> fra Pod-specifikationen \u2014 et af elementerne, der bruges til at finde den relevante node. Den kan allerede planl\u00e6gges til implementeringen af Pod. Hvordan finder man den passende node?<\/p>\n<p>Kubernetes best\u00e5r af flere komponenter, herunder indeholder en hovednode eller master-node (Kubernetes Control Plane). I master-noden findes der flere processer: kube-apiserver, kube-controller-manager og kube-scheduler. <\/p>\n<p>Processen kube-scheduler er ansvarlig for at se p\u00e5 nyoprettede pods og finde mulige arbejdsnoder, der opfylder alle pods anmodninger, herunder m\u00e6ngden af anmodede ressourcer. Listen over noder fundet af kube-scheduler rangeres. Pod planl\u00e6gges p\u00e5 noden med de h\u00f8jeste scores.<\/p>\n<p><img decoding=\"async\" alt=\"Hvordan man f\u00e5r adgang til ressourcerne i Kubernetes Pod\" src=\"\/wp-content\/uploads\/2020\/09\/b489991a3cbbd5359c99701886d488e5.jpg\" style=\"display:block;margin: 0 auto;\" \/>Hvor vil den lilla Pod blive placeret?<\/p>\n<p>P\u00e5 billedet kan vi se, at kube-scheduler skal planl\u00e6gge en ny violet Pod. Kubernetes-klustret indeholder to noder: A og B. Som det kan ses, kan kube-scheduler ikke planl\u00e6gge Pod'en p\u00e5 node A \u2014 de tilg\u00e6ngelige (uafkr\u00e6vede) ressourcer opfylder ikke anmodningen fra den violet Pod. Den anmodede 1 GB hukommelse fra den violet Pod kan ikke passe ind p\u00e5 node A, da den tilg\u00e6ngelige hukommelse er 0,5 GB. Men node B har tilstr\u00e6kkelige ressourcer. I sidste ende beslutter kube-scheduler, at destinationen for den violet Pod er node B.<\/p>\n<p>Nu ved vi, hvordan de anmodede ressourcer p\u00e5virker valget af node til at k\u00f8re Pod. Men hvordan p\u00e5virker gr\u00e6nseressourcerne?<\/p>\n<p>Gr\u00e6nseressourcer er den gr\u00e6nse, som CPU\/MEM ikke kan overskride. Dog er CPU-ressourcen fleksibel, s\u00e5 containere, der n\u00e5r gr\u00e6nsev\u00e6rdierne for CPU, vil ikke f\u00e5 Pod'en til at stoppe. I stedet vil der blive implementeret throttling af CPU. Hvis gr\u00e6nsen for brugen af MEM derimod n\u00e5s, vil containeren blive stoppet af OOM-Killer og derefter genstartes, hvis det er tilladt i indstillingen RestartPolicy.<\/p>\n<h2>Anmodede og gr\u00e6nseressourcer i detaljer<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Hvordan man f\u00e5r adgang til ressourcerne i Kubernetes Pod\" src=\"\/wp-content\/uploads\/2020\/09\/22e672100940e8895ae42a56a681111f.jpg\" style=\"display:block;margin: 0 auto;\" \/>Forbindelsen mellem ressourcerne i Docker og Kubernetes<\/p>\n<p>Den bedste m\u00e5de at forklare, hvordan anmodede og gr\u00e6nseressourcer fungerer, er at pr\u00e6sentere forbindelsen mellem Kubernetes og Docker. P\u00e5 billedet ovenfor kan du se, hvordan felterne i Kubernetes og Docker's opstartssflags h\u00e6nger sammen.<\/p>\n<h2>Hukommelse: anmodning og gr\u00e6nse<\/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>\nSom n\u00e6vnt ovenfor, m\u00e5les hukommelse i byte. Baseret p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/manage-resources-containers\/#meaning-of-memory\">Kubernetes-dokumentation<\/a><\/noindex>, kan vi angive hukommelsen som et tal. Det er normalt et helt tal, for eksempel 2678 \u2014 det vil sige 2678 byte. Du kan ogs\u00e5 bruge suffikserne <code>G<\/code> og <code>Gi<\/code>, det vigtigste er at huske, at de ikke er ens. Den f\u00f8rste er decimal, mens den anden er bin\u00e6r. Som eksempel n\u00e6vnt i k8s-dokumentationen: <code>128974848<\/code>, <code>129e6<\/code>, <code>129M<\/code>, <code>123Mi<\/code> \u2014 de er praktisk talt ens.<\/p>\n<p>Kubernetes parameter <code>limits.memory<\/code> svarer til flaget <code>--memory<\/code> fra Docker. I tilf\u00e6lde af <code>request.memory<\/code> er der ikke noget tilsvarende flag i Docker, da Docker ikke bruger dette felt. Du sp\u00f8rger m\u00e5ske, om det overhovedet er n\u00f8dvendigt? Ja, det er n\u00f8dvendigt. Som jeg sagde, har feltet betydning for Kubernetes. Baseret p\u00e5 informationer herfra beslutter kube-scheduler, hvilken node der skal planl\u00e6gges til Pod'en.<\/p>\n<p><strong>Hvad sker der, hvis der anmodes om for lidt hukommelse?<\/strong><\/p>\n<p>Hvis containeren n\u00e5r gr\u00e6nserne for den anmodede hukommelse, placeres Pod'en i en gruppe af Pods, der stoppes, n\u00e5r der opst\u00e5r hukommelsesmangel p\u00e5 node.<\/p>\n<p><strong>Hvad sker der, hvis der indstilles en for lav gr\u00e6nse for hukommelse?<\/strong><\/p>\n<p>Hvis containeren overstiger hukommelsesgr\u00e6nsen, afsluttes den med OOM-Killed. Den vil blive genstartet, hvis det er muligt i henhold til RestartPolicy, hvor standardv\u00e6rdien er <code>Altid<\/code>.<\/p>\n<p><strong>Hvad sker der, hvis der ikke angives anmodet hukommelse?<\/strong><\/p>\n<p>Kubernetes vil tage gr\u00e6nsev\u00e6rdien og indstille den som standardv\u00e6rdi.<\/p>\n<p><strong>Hvad kan der ske, hvis der ikke angives gr\u00e6nse for hukommelse?<\/strong><\/p>\n<p>Containeren har ingen begr\u00e6nsninger og kan bruge s\u00e5 meget hukommelse, som den vil. Hvis den begynder at bruge al den tilg\u00e6ngelige hukommelse p\u00e5 noden, vil den blive dr\u00e6bt af OOM. Derefter vil containeren blive genstartet, hvis det er muligt i henhold til RestartPolicy.<\/p>\n<p><strong>Hvad sker der, hvis der ikke angives hukommelsesbegr\u00e6nsninger?<\/strong><\/p>\n<p>Det er det v\u00e6rste scenarie: Planl\u00e6ggeren ved ikke, hvor mange ressourcer containeren har brug for, og det kan for\u00e5rsage alvorlige problemer p\u00e5 noden. I dette tilf\u00e6lde ville det v\u00e6re godt at have standardbegr\u00e6nsninger i navnerummet (fastsat af LimitRange). Der er ingen standardbegr\u00e6nsninger \u2014 Pod har ingen begr\u00e6nsninger og kan bruge s\u00e5 meget hukommelse, som den vil.<\/p>\n<p>Hvis den anmodede hukommelse er mere, end noden kan tilbyde, vil Pod ikke blive planlagt. Det er vigtigt at huske, at <code>Requests.memory<\/code> \u2014 ikke er minimumsv\u00e6rdien. Det er en beskrivelse af den m\u00e6ngde hukommelse, der er tilstr\u00e6kkelig til, at containeren kan k\u00f8re stabilt. <\/p>\n<p>Det anbefales generelt at indstille den samme v\u00e6rdi for <code>request.memory<\/code> og <code>limit.memory<\/code>. Ved dette vil Kubernetes ikke planl\u00e6gge Pod p\u00e5 en node, der har nok hukommelse til at starte Pod'en, men ikke nok til at k\u00f8re den. Husk: N\u00e5r Kubernetes planl\u00e6gger Pod, tager det kun <code>requests.memory<\/code>, og <code>limits.memory<\/code> i betragtning.<\/p>\n<h2>CPU: anmodning og gr\u00e6nse<\/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>\nMed CPU'en er det lidt mere kompliceret. N\u00e5r vi ser tilbage p\u00e5 billedet af forholdet mellem Kubernetes og Docker, kan vi bem\u00e6rke, at <code>request.cpu<\/code> svarer til <code>--cpu-shares<\/code>, mens <code>limit.cpu<\/code> svarer til flaget <code>cpus<\/code> i Docker.<\/p>\n<p>CPU'en, som Kubernetes anmoder om, ganges med 1024 \u2014 forholdet for CPU-cyklusser. Hvis du vil anmode om 1 fuld kerne, skal du tilf\u00f8je <code>cpu: 1<\/code>, som vist ovenfor. <\/p>\n<p>Anmodning om en fuld kerne (forhold = 1024) betyder ikke, at din container vil f\u00e5 den. Hvis din v\u00e6rtscomputer kun har en kerne, og du bruger mere end \u00e9n container, skal alle containerne dele den tilg\u00e6ngelige CPU imellem sig. Hvordan sker det? Lad os se p\u00e5 billedet.<\/p>\n<p><img decoding=\"async\" alt=\"Hvordan man f\u00e5r adgang til ressourcerne i Kubernetes Pod\" src=\"\/wp-content\/uploads\/2020\/09\/7f4b20642708ef3a7e773d7900161267.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nCPU-anmodning - et system med et enkelt kerne<\/p>\n<p>Lad os forestille os, at du har et v\u00e6rtssystem med \u00e9t kerne, hvor containere k\u00f8rer. Mor (Kubernetes) har bagt en kage (CPU) og vil dele den mellem b\u00f8rnene (containere). Tre b\u00f8rn \u00f8nsker en hel kage (forhold = 1024), mens et andet barn \u00f8nsker halvdelen af en kage (512). Mor \u00f8nsker at v\u00e6re retf\u00e6rdig og udf\u00f8rer en simpel beregning.<\/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>\nIf\u00f8lge beregningen vil de tre b\u00f8rn f\u00e5 28% af kernen, i stedet for en hel kerne. Det fjerde barn vil f\u00e5 14% af en hel kerne, i stedet for halvdelen. Men alt vil v\u00e6re anderledes, hvis du har et multicore-system.<\/p>\n<p><img decoding=\"async\" alt=\"Hvordan man f\u00e5r adgang til ressourcerne i Kubernetes Pod\" src=\"\/wp-content\/uploads\/2020\/09\/7bf71d97add9adcf7cf0260941526590.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nCPU-anmodning - multicore (4) system<\/p>\n<p>P\u00e5 billedet ovenfor kan man se, at tre b\u00f8rn \u00f8nsker en hel kage, mens et \u00f8nsker halvdelen. Da mor har bagt fire kager, vil hvert af hendes b\u00f8rn f\u00e5 s\u00e5 meget, som de \u00f8nsker. I et multicore-system fordeles CPU-ressourcerne over alle tilg\u00e6ngelige kerner. Hvis en container er begr\u00e6nset til mindre end \u00e9n hel CPU-kerne, kan den stadig bruge den 100%. <\/p>\n<p>De ovenst\u00e5ende beregninger er forenklet for at forst\u00e5, hvordan CPU fordeles mellem containere. Selvf\u00f8lgelig er der ogs\u00e5 andre processer, udover selve containerne, som ogs\u00e5 bruger CPU-ressourcer. N\u00e5r processerne i \u00e9n container er inaktive, kan andre bruge dens ressourcer. <code>CPU: \"200m\"<\/code> svarer til <code>CPU: 0,2<\/code>, hvilket svarer til cirka 20% af \u00e9n kerne.<\/p>\n<p>Lad os nu tale om <code>limit.cpu<\/code>. CPU, der begr\u00e6nser Kubernetes, multipliceres med 100. Resultatet er m\u00e6ngden af tid, som en container kan bruge hver 100 \u00b5s (<code>cpu-period<\/code>). <\/p>\n<p><code>limit.cpu<\/code> svare til Docker-flaget <code>--cpus<\/code>. Det er en ny kombination af gamle <code>--cpu-period<\/code> og <code>--cpu-quota<\/code>. N\u00e5r vi indstiller det, angiver vi, hvor mange tilg\u00e6ngelige CPU-ressourcer en container maksimalt kan bruge, indtil throttling begynder:<\/p>\n<ul>\n<li><strong>cpus<\/strong> \u2014 kombinationen af <code>cpu-period<\/code> og <code>cpu-quota. cpus = 1.5<\/code> motsvarer indstillingen <code>cpu-period = 100000<\/code> og <code>cpu-quota = 150000<\/code>;<\/li>\n<li><strong>cpu-period<\/strong> \u2014 perioder <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Completely_Fair_Scheduler\">CPU CFS-planl\u00e6ggeren<\/a><\/noindex>, som standard 100 mikrosekunder;<\/li>\n<li><strong>cpu-quota<\/strong> \u2014 antal mikrosekunder indenfor <code>cpu-period<\/code>, som containeren er begr\u00e6nset til.<\/li>\n<\/ul>\n<p>\n<strong>Hvad sker der, hvis man s\u00e6tter en utilstr\u00e6kkelig CPU-anmodning?<\/strong><\/p>\n<p>Hvis containeren har brug for mere, end der er indstillet, vil den stj\u00e6le CPU fra andre processer.<\/p>\n<p><strong>Hvad vil der ske, hvis man s\u00e6tter en utilstr\u00e6kkelig CPU-gr\u00e6nse?<\/strong><\/p>\n<p>Da CPU-ressourcen er justerbar, vil throttling blive aktiveret.<\/p>\n<p><strong>Hvad vil der ske, hvis man ikke angiver CPU-anmodningen?<\/strong><\/p>\n<p>Ligesom med hukommelse er anmodningen lig med gr\u00e6nsen.<\/p>\n<p><strong>Hvad sker der, hvis gr\u00e6nsen for CPU \u043d\u0435 er angivet?<\/strong><\/p>\n<p>Containeren vil bruge s\u00e5 meget CPU, som den har brug for. Hvis der er defineret en standard CPU-politik i navnerummet (LimitRange), vil denne gr\u00e6nse blive anvendt for containeren.<\/p>\n<p><strong>Hvad sker der, hvis hverken anmodningen eller gr\u00e6nsen for CPU angives?<\/strong><\/p>\n<p>Som med hukommelse er dette det v\u00e6rste scenarie. Planl\u00e6ggeren ved ikke, hvor mange ressourcer din container har brug for, og det kan for\u00e5rsage alvorlige problemer p\u00e5 noden. For at undg\u00e5 dette skal der ops\u00e6ttes standardgr\u00e6nser for navnerumene (LimitRange).<\/p>\n<p>Husk: hvis du anmoder om mere CPU, end noderne kan levere, vil Pod'en ikke blive planlagt. <code>Requests.cpu<\/code> \u2014 ikke et minimalt bel\u00f8b, men et bel\u00f8b, der er tilstr\u00e6kkeligt til at k\u00f8re Pod'en og fungere uden problemer. Hvis applikationen ikke udf\u00f8rer komplekse beregninger, er det bedste valg at indstille <code>request.cpu &lt;= 1<\/code> og k\u00f8re s\u00e5 mange replikaer, som n\u00f8dvendigt.<\/p>\n<h2>Det ideelle antal anmodede ressourcer eller ressourcegr\u00e6nser<\/h2>\n<p>\nVi har l\u00e6rt om begr\u00e6nsningen af computerressourcer. Nu er det tid til at besvare sp\u00f8rgsm\u00e5let: \"Hvor mange ressourcer har min Pod brug for for at k\u00f8re applikationen problemfrit? Hvad er det ideelle antal?\". <\/p>\n<p>Desv\u00e6rre er der ikke entydige svar p\u00e5 disse sp\u00f8rgsm\u00e5l. Hvis du ikke ved, hvordan din applikation fungerer, og hvor meget CPU eller hukommelse den har brug for, er det bedste valg at give applikationen rigeligt med hukommelse og CPU og derefter k\u00f8re ytelsestests.<\/p>\n<p>Udover ytelsestests skal du over en uge overv\u00e5ge applikationens adf\u00e6rd i overv\u00e5gningen. Hvis graferne viser, at din applikation bruger f\u00e6rre ressourcer, end du har anmodet om, kan du reducere antallet af anmodet CPU eller hukommelse.<\/p>\n<p>Som et eksempel kan du se dette <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/grafana\/dashboards\/7187\">Grafana-dashboard<\/a><\/noindex>. Det viser forskellen mellem anmodede ressourcer eller ressourcegr\u00e6nser og den aktuelle ressourcedistribution.<\/p>\n<h2>Konklusion<\/h2>\n<p>\nAnmodning og begr\u00e6nsning af ressourcer hj\u00e6lper med at opretholde Kubernetes-klyngens drift. Korrekt konfiguration af gr\u00e6nser minimerer omkostningerne og opretholder konstant applikationerne i drift.<\/p>\n<p>Kort sagt, husk p\u00e5 flere ting:<\/p>\n<ol>\n<li>De anmodede ressourcer er en konfiguration, der tages i betragtning under opstarten (n\u00e5r Kubernetes planl\u00e6gger placeringen af applikationen). Omvendt er ressourcegr\u00e6nse vigtig under drift \u2014 n\u00e5r applikationen allerede k\u00f8rer p\u00e5 en node.<\/li>\n<li>I forhold til hukommelse er CPU en reguleret ressource. I tilf\u00e6lde af CPU-mangel vil din Pod ikke afslutte, men throttling-mekanismer aktiveres.<\/li>\n<li>De anmodede ressourcer og ressourcegr\u00e6nse er ikke minimums- og maksimumsv\u00e6rdier! Ved at definere de anmodede ressourcer sikrer du, at applikationen fungerer problemfrit.<\/li>\n<li>En god praksis er at indstille en hukommelsesforesp\u00f8rgsel, der svarer til hukommelsesgr\u00e6nsen.<\/li>\n<li>Det er en god id\u00e9 at indstille den anmodede <code>CPU &lt;=1<\/code>, hvis applikationen ikke udf\u00f8rer komplekse beregninger.<\/li>\n<li>Hvis du anmoder om flere ressourcer, end der er tilg\u00e6ngeligt p\u00e5 noden, vil Pod aldrig blive planlagt p\u00e5 denne node.<\/li>\n<li>For at bestemme den rigtige m\u00e6ngde anmodede ressourcer\/ressourcegr\u00e6nser, brug belastningstest og overv\u00e5gning.<\/li>\n<\/ol>\n<p>\nJeg h\u00e5ber, denne artikel hj\u00e6lper dig med at forst\u00e5 grundkonceptet for ressourcebegr\u00e6nsninger. Og at du kan anvende denne viden i dit arbejde.<\/p>\n<p>Held og lykke!<\/p>\n<p><strong>Yderligere l\u00e6sning:<\/strong><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/500504\/\">Observabilitet SRE: navnerum og metric-struktur<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/blog\/poleznye-instrumenty-dlya-kubernetes\">90+ nyttige v\u00e6rkt\u00f8jer til Kubernetes: implementering, administration, overv\u00e5gning, sikkerhed og mere<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/tele.click\/k8s_mail\">Vores kanal Omkring Kubernetes p\u00e5 Telegram<\/a><\/noindex>.<\/li>\n<\/ol>\n<p>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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\udd47Hvordan f\u00e5r man adgang til ressourcerne i Kubernetes Pod | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/94262","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=94262"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/94262\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/94263"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=94262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=94262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=94262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}