{"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\/es\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod","title":{"rendered":"C\u00f3mo acceder a los recursos del Pod de Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"C\u00f3mo acceder a los recursos del Pod de Kubernetes\" 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>La recompensa de Tohad<\/i><\/a><\/noindex><\/p>\n<p>Al comenzar a trabajar con Kubernetes, a menudo se olvida configurar los recursos de los contenedores. En esta etapa, es suficiente verificar que la imagen de Docker funcione y que se pueda desplegar en el cl\u00faster de Kubernetes.<\/p>\n<p>Pero m\u00e1s tarde, se requiere desplegar la aplicaci\u00f3n en un cl\u00faster de producci\u00f3n junto con otras aplicaciones. Para ello, es necesario asignar recursos al contenedor y asegurarse de que hay suficientes para iniciar y ejecutar la aplicaci\u00f3n, sin que surjan problemas en otras aplicaciones en ejecuci\u00f3n.<\/p>\n<p>Comando <noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/\">Kubernetes aaS de Mail.ru<\/a><\/noindex> ha traducido un art\u00edculo sobre los recursos de los contenedores (CPU y MEM), solicitudes y l\u00edmites de recursos. Aprender\u00e1 qu\u00e9 beneficios ofrecen estas configuraciones y qu\u00e9 suceder\u00e1 si no se establecen.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Recursos computacionales<\/h2>\n<p>\nTenemos dos tipos de recursos con las siguientes unidades:<\/p>\n<ul>\n<li>Unidad Central de Procesamiento (CPU) \u2014 n\u00facleos;<\/li>\n<li>Memoria (MEM) \u2014 bytes.<\/li>\n<\/ul>\n<p>\nLos recursos se especifican para cada contenedor. En el siguiente archivo YAML del Pod, ver\u00e1 la secci\u00f3n de recursos que contiene los recursos solicitados y l\u00edmite:<\/p>\n<ul>\n<li>Recursos solicitados del Pod = suma de los recursos solicitados de todos los contenedores;<\/li>\n<li>Recursos l\u00edmite del Pod = suma de los recursos l\u00edmite de todos los contenedores.<\/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 # CPU SOLICITADO: 200m n\u00facleos\n          memory: \"1Gi\" # MEMORIA SOLICITADA: 1Gi\n        limits:\n          cpu: 1 # USO M\u00c1XIMO DE CPU: 1 n\u00facleo\n          memory: \"1Gi\" # USO M\u00c1XIMO DE MEMORIA:  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\" # CPU SOLICITADO: 200m n\u00facleos\n          memory: \"0.5Gi\" # MEMORIA SOLICITADA: 0.5Gi\n        limits:\n          cpu: 1 # USO M\u00c1XIMO DE CPU: 1 n\u00facleo\n          memory: \"1Gi\" # USO M\u00c1XIMO DE MEMORIA:  1Gi<\/code><\/pre>\n<p>Ejemplo de recursos solicitados y l\u00edmites<\/p>\n<p>Campo <code>resources.requested<\/code> de la especificaci\u00f3n del Pod \u2014 uno de los elementos que se utilizan para encontrar el nodo adecuado. Ya se puede planificar el despliegue del Pod en \u00e9l. \u00bfC\u00f3mo se busca el nodo adecuado?<\/p>\n<p>Kubernetes se compone de varios componentes, incluidos el nodo maestro o master-nodo (Kubernetes Control Plane). En el nodo maestro hay varios procesos: kube-apiserver, kube-controller-manager y kube-scheduler. <\/p>\n<p>El proceso kube-scheduler se encarga de revisar los nuevos pods creados y buscar posibles nodos de trabajo que cumplan con todas las solicitudes de los pods, incluyendo la cantidad de recursos solicitados. La lista de nodos encontrados por kube-scheduler se clasifica. El pod se programar\u00e1 en el nodo con la puntuaci\u00f3n m\u00e1s alta.<\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3mo acceder a los recursos del Pod de Kubernetes\" src=\"\/wp-content\/uploads\/2020\/09\/b489991a3cbbd5359c99701886d488e5.jpg\" style=\"display:block;margin: 0 auto;\" \/>\u00bfD\u00f3nde se colocar\u00e1 el pod p\u00farpura?<\/p>\n<p>En la imagen se puede ver que kube-scheduler debe programar un nuevo pod p\u00farpura. El cl\u00faster de Kubernetes contiene dos nodos: A y B. Como se puede notar, kube-scheduler no puede programar el pod en el nodo A, ya que los recursos disponibles (no solicitados) no cumplen con las solicitudes del pod p\u00farpura. As\u00ed, los 1 GB de memoria solicitados por el pod p\u00farpura no caben en el nodo A, ya que el volumen de memoria disponible es de 0.5 GB. Pero el nodo B tiene suficientes recursos. Al final, kube-scheduler decide que el destino del pod p\u00farpura es el nodo B.<\/p>\n<p>Ahora sabemos c\u00f3mo los recursos solicitados afectan la elecci\u00f3n del nodo para ejecutar el pod. Pero, \u00bfc\u00f3mo afectan los recursos l\u00edmites?<\/p>\n<p>Los recursos l\u00edmites son el umbral que la CPU\/MEM no puede sobrepasar. Sin embargo, el recurso de CPU es flexible, por lo que los contenedores que alcanzan los valores l\u00edmite de CPU no provocar\u00e1n la finalizaci\u00f3n del pod. En su lugar, se activar\u00e1 el limitador de CPU. Si se alcanza el l\u00edmite de uso de MEM, el contenedor se detendr\u00e1 debido al OOM-Killer y se reiniciar\u00e1 si as\u00ed lo permite la configuraci\u00f3n de RestartPolicy.<\/p>\n<h2>Recursos solicitados y l\u00edmites en detalle<\/h2>\n<p>\n<img decoding=\"async\" alt=\"C\u00f3mo acceder a los recursos del Pod de Kubernetes\" src=\"\/wp-content\/uploads\/2020\/09\/22e672100940e8895ae42a56a681111f.jpg\" style=\"display:block;margin: 0 auto;\" \/>La relaci\u00f3n de recursos entre Docker y Kubernetes<\/p>\n<p>La mejor manera de explicar c\u00f3mo funcionan los recursos solicitados y los l\u00edmites es mostrar la relaci\u00f3n entre Kubernetes y Docker. En la imagen anterior, puedes ver c\u00f3mo se relacionan los campos de Kubernetes y las banderas de inicio de Docker.<\/p>\n<h2>Memoria: solicitud y l\u00edmite<\/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>\nComo se mencion\u00f3 anteriormente, la memoria se mide en bytes. Basado en <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/manage-resources-containers\/#meaning-of-memory\">la documentaci\u00f3n de Kubernetes<\/a><\/noindex>, podemos especificar la memoria como un n\u00famero. Por lo general, es un n\u00famero entero, como 2678, que significa 2678 bytes. Tambi\u00e9n se pueden usar sufijos. <code>G<\/code> y <code>Gi<\/code>, lo importante es recordar que no son equivalentes. El primero es decimal, mientras que el segundo es binario. Como ejemplo, se menciona en la documentaci\u00f3n de k8s: <code>128974848<\/code>, <code>129e6<\/code>, <code>129M<\/code>, <code>123Mi<\/code> \u2014 son pr\u00e1cticamente equivalentes.<\/p>\n<p>El par\u00e1metro de Kubernetes <code>limits.memory<\/code> corresponde a la bandera <code>--memory<\/code> de Docker. En el caso de <code>request.memory<\/code> La flecha para Docker est\u00e1 ausente porque Docker no utiliza este campo. \u00bfPuedes preguntar si realmente es necesario? S\u00ed, lo es. Como ya mencion\u00e9, el campo es importante para Kubernetes. Bas\u00e1ndose en la informaci\u00f3n de este campo, kube-scheduler decide en qu\u00e9 nodo programar el Pod.<\/p>\n<p><strong>\u00bfQu\u00e9 ocurre si se solicita insuficiente memoria?<\/strong><\/p>\n<p>Si el contenedor alcanza los l\u00edmites de memoria solicitada, el Pod se coloca en un grupo de Pod que se detienen cuando hay falta de memoria en el nodo.<\/p>\n<p><strong>\u00bfQu\u00e9 suceder\u00e1 si se establece un l\u00edmite de memoria demasiado peque\u00f1o?<\/strong><\/p>\n<p>Si el contenedor excede el l\u00edmite de memoria, se terminar\u00e1 por OOM-Killed. Y se reiniciar\u00e1, si es posible seg\u00fan la RestartPolicy, donde el valor por defecto es <code>Siempre<\/code>.<\/p>\n<p><strong>\u00bfQu\u00e9 pasar\u00e1 si no se especifica la memoria solicitada?<\/strong><\/p>\n<p>Kubernetes tomar\u00e1 el l\u00edmite y lo establecer\u00e1 como el valor por defecto.<\/p>\n<p><strong>\u00bfQu\u00e9 puede suceder si no se especifica la memoria l\u00edmite?<\/strong><\/p>\n<p>El contenedor no tiene restricciones, puede usar tanta memoria como desee. Sin embargo, si comienza a utilizar toda la memoria disponible del nodo, ser\u00e1 terminado por OOM. Luego, el contenedor ser\u00e1 reiniciado, si es posible seg\u00fan la RestartPolicy.<\/p>\n<p><strong>\u00bfQu\u00e9 ocurrir\u00e1 si no se especifican los l\u00edmites de memoria?<\/strong><\/p>\n<p>Este es el peor escenario: el programador no sabe cu\u00e1ntos recursos necesita el contenedor, y esto puede causar problemas severos en el nodo. En este caso, ser\u00eda bueno tener restricciones predeterminadas en el espacio de nombres (establecidas por LimitRange). No hay restricciones predeterminadas: el Pod no tiene l\u00edmites, puede usar tanta memoria como desee.<\/p>\n<p>Si la memoria solicitada es mayor de lo que puede ofrecer el nodo, el Pod no ser\u00e1 programado. Es importante recordar que <code>Requests.memory<\/code> no es un valor m\u00ednimo. Es una descripci\u00f3n de la cantidad de memoria suficiente para que el contenedor funcione de manera continua. <\/p>\n<p>Normalmente se recomienda establecer el mismo valor para <code>request.memory<\/code> y <code>limit.memory<\/code>. De este modo, Kubernetes no programar\u00e1 un Pod en un nodo que tenga suficiente memoria para iniciar el Pod, pero no suficiente para su funcionamiento. Tenga en cuenta: al programar el Pod, Kubernetes solo considera <code>requests.memory<\/code>, y <code>limits.memory<\/code> no lo tiene en cuenta.<\/p>\n<h2>CPU: solicitud y l\u00edmite<\/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>\nCon la CPU, todo es un poco m\u00e1s complicado. Volviendo a la imagen de la correlaci\u00f3n entre Kubernetes y Docker, se puede notar que <code>request.cpu<\/code> corresponde a <code>--cpu-shares<\/code>, mientras que <code>limit.cpu<\/code> corresponde a la bandera <code>cpus<\/code> en Docker.<\/p>\n<p>La CPU solicitada por Kubernetes se multiplica por 1024: la proporci\u00f3n de ciclos de CPU. Si deseas solicitar 1 n\u00facleo completo, debes agregar <code>cpu: 1<\/code>, como se mostr\u00f3 arriba. <\/p>\n<p>Solicitar un n\u00facleo completo (proporci\u00f3n = 1024) no significa que tu contenedor lo obtenga. Si tu host tiene solo un n\u00facleo y usas m\u00e1s de un contenedor, todos los contenedores deben compartir la CPU disponible entre ellos. \u00bfC\u00f3mo sucede esto? Veamos la imagen.<\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3mo acceder a los recursos del Pod de Kubernetes\" src=\"\/wp-content\/uploads\/2020\/09\/7f4b20642708ef3a7e773d7900161267.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSolicitud de CPU \u2014 sistema de un solo n\u00facleo<\/p>\n<p>Imaginemos que tienes un sistema host con un n\u00facleo, en el que se ejecutan los contenedores. Mam\u00e1 (Kubernetes) horne\u00f3 un pastel (CPU) y quiere compartirlo entre los ni\u00f1os (contenedores). Tres ni\u00f1os quieren un pastel completo (proporci\u00f3n = 1024), otro ni\u00f1o quiere la mitad del pastel (512). Mam\u00e1 quiere ser justa y hace un c\u00e1lculo sencillo.<\/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>\nSeg\u00fan el c\u00e1lculo, los tres ni\u00f1os recibir\u00e1n el 28% de un n\u00facleo, y no un n\u00facleo completo. Al cuarto ni\u00f1o le tocar\u00e1 el 14% de un n\u00facleo completo, y no la mitad. Pero todo ser\u00e1 diferente si tienes un sistema multin\u00facleo.<\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3mo acceder a los recursos del Pod de Kubernetes\" src=\"\/wp-content\/uploads\/2020\/09\/7bf71d97add9adcf7cf0260941526590.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSolicitud de CPU \u2014 sistema multin\u00facleo (4)<\/p>\n<p>En la imagen anterior, se puede ver que tres ni\u00f1os quieren un pastel completo y uno quiere la mitad. Dado que mam\u00e1 horne\u00f3 cuatro pasteles, cada uno de sus ni\u00f1os obtendr\u00e1 lo que desee. En un sistema multin\u00facleo, los recursos de la CPU se distribuyen entre todos los n\u00facleos disponibles. Si un contenedor est\u00e1 limitado a menos de un n\u00facleo completo de CPU, a\u00fan puede utilizarlo al 100%. <\/p>\n<p>Los c\u00e1lculos anteriores se simplificaron para entender c\u00f3mo se distribuye la CPU entre los contenedores. Por supuesto, adem\u00e1s de los contenedores en s\u00ed, hay otros procesos que tambi\u00e9n utilizan recursos de la CPU. Cuando los procesos en un contenedor est\u00e1n inactivos, otros pueden utilizar su recurso. <code>CPU: \"200m\"<\/code> corresponde a <code>CPU: 0,2<\/code>, lo que significa aproximadamente el 20% de un n\u00facleo.<\/p>\n<p>Ahora hablemos de <code>limit.cpu<\/code>. La CPU que limita Kubernetes se multiplica por 100. El resultado es la cantidad de tiempo que el contenedor puede utilizar cada 100 microsegundos (<code>cpu-period<\/code>). <\/p>\n<p><code>limit.cpu<\/code> corresponde a la bandera de Docker <code>--cpus<\/code>. Esta es una nueva combinaci\u00f3n de viejas <code>--cpu-period<\/code> y <code>--cpu-quota<\/code>. Al establecerlo, indicamos cu\u00e1ntos recursos de CPU disponibles puede usar el contenedor como m\u00e1ximo antes de que comience el throttling:<\/p>\n<ul>\n<li><strong>cpus<\/strong> \u2014 combinaci\u00f3n <code>cpu-period<\/code> y <code>cpu-quota. cpus = 1.5<\/code> equivale a establecer <code>cpu-per\u00edodo = 100000<\/code> y <code>cpu-cuota = 150000<\/code>;<\/li>\n<li><strong>cpu-period<\/strong> \u2014 per\u00edodo <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Completely_Fair_Scheduler\">planificador de CPU CFS<\/a><\/noindex>, por defecto 100 microsegundos;<\/li>\n<li><strong>cpu-cuota<\/strong> \u2014 n\u00famero de microsegundos dentro <code>cpu-period<\/code>, que limita el contenedor.<\/li>\n<\/ul>\n<p>\n<strong>\u00bfQu\u00e9 suceder\u00e1 si se solicita una cantidad de CPU insuficiente?<\/strong><\/p>\n<p>Si el contenedor necesita m\u00e1s de lo que se establece, robar\u00e1 CPU de otros procesos.<\/p>\n<p><strong>\u00bfQu\u00e9 ocurrir\u00e1 si se establece un l\u00edmite de CPU insuficiente?<\/strong><\/p>\n<p>Dado que el recurso CPU es regulable, se activar\u00e1 el throttling.<\/p>\n<p><strong>\u00bfQu\u00e9 pasar\u00e1 si no se especifica la solicitud de CPU?<\/strong><\/p>\n<p>Al igual que con la memoria, el valor de la solicitud es igual al l\u00edmite.<\/p>\n<p><strong>\u00bfQu\u00e9 suceder\u00e1 si no se indica un l\u00edmite de CPU?<\/strong><\/p>\n<p>El contenedor usar\u00e1 tanta CPU como necesite. Si se define una pol\u00edtica de CPU por defecto (LimitRange) en el espacio de nombres, este l\u00edmite se utilizar\u00e1 tambi\u00e9n para el contenedor.<\/p>\n<p><strong>\u00bfQu\u00e9 pasar\u00e1 si no se especifica ni la solicitud ni el l\u00edmite de CPU?<\/strong><\/p>\n<p>Al igual que con la memoria, este es el peor escenario. El planificador no sabe cu\u00e1ntos recursos necesita su contenedor, y esto puede causar problemas graves en el nodo. Para evitarlo, debe establecer l\u00edmites por defecto para los espacios de nombres (LimitRange).<\/p>\n<p>Recuerde: si solicita m\u00e1s CPU de la que pueden proporcionar los nodos, el Pod no ser\u00e1 programado. <code>Requests.cpu<\/code> \u2014 no es un valor m\u00ednimo, sino un valor suficiente para iniciar el Pod y funcionar sin fallos. Si la aplicaci\u00f3n no realiza c\u00e1lculos complejos, lo mejor es establecer <code>request.cpu &lt;= 1<\/code> y ejecutar tantas r\u00e9plicas como sean necesarias.<\/p>\n<h2>La cantidad ideal de recursos solicitados o l\u00edmite de recursos<\/h2>\n<p>\nHemos aprendido sobre la limitaci\u00f3n de recursos computacionales. Ahora es el momento de responder a la pregunta: \"\u00bfCu\u00e1ntos recursos necesita mi Pod para ejecutar la aplicaci\u00f3n sin problemas? \u00bfCu\u00e1l es la cantidad ideal?\". <\/p>\n<p>Desafortunadamente, no hay respuestas claras a estas preguntas. Si no sabe c\u00f3mo funciona su aplicaci\u00f3n, cu\u00e1nta CPU o memoria necesita, lo mejor es darle a la aplicaci\u00f3n mucha memoria y CPU, y luego ejecutar pruebas de rendimiento.<\/p>\n<p>Adem\u00e1s de las pruebas de rendimiento, observe el comportamiento de la aplicaci\u00f3n durante una semana en la monitorizaci\u00f3n. Si los gr\u00e1ficos indican que su aplicaci\u00f3n consume menos recursos de los que solicit\u00f3, puede reducir la cantidad de CPU o memoria solicitada.<\/p>\n<p>Como ejemplo, vea este <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/grafana\/dashboards\/7187\">tablero de Grafana<\/a><\/noindex>. Muestra la diferencia entre los recursos solicitados o el l\u00edmite de recursos y el uso actual de los recursos.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>\nLa solicitud y el l\u00edmite de recursos ayudan a mantener el funcionamiento del cl\u00faster de Kubernetes. Una configuraci\u00f3n adecuada de los l\u00edmites minimiza los costos y mantiene constantemente las aplicaciones en funcionamiento.<\/p>\n<p>En resumen, hay que tener en cuenta varios puntos:<\/p>\n<ol>\n<li>Los recursos solicitados son la configuraci\u00f3n que se tiene en cuenta durante el inicio (cuando Kubernetes planifica el despliegue de la aplicaci\u00f3n). Por otro lado, el l\u00edmite de recursos es importante durante la operaci\u00f3n, cuando la aplicaci\u00f3n ya est\u00e1 en ejecuci\u00f3n en el nodo.<\/li>\n<li>En comparaci\u00f3n con la memoria, la CPU es un recurso regulado. En caso de escasez de CPU, tu Pod no se detendr\u00e1, se activar\u00e1 el mecanismo de limitaci\u00f3n.<\/li>\n<li>Los recursos solicitados y el l\u00edmite de recursos no son valores m\u00ednimos y m\u00e1ximos. Al definir los recursos solicitados, garantizas que la aplicaci\u00f3n funcionar\u00e1 sin problemas.<\/li>\n<li>Una buena pr\u00e1ctica es establecer la solicitud de memoria igual al l\u00edmite de memoria.<\/li>\n<li>Es conveniente establecer solicitado <code>CPU &lt;= 1<\/code>, si la aplicaci\u00f3n no realiza c\u00e1lculos complejos.<\/li>\n<li>Si solicitas m\u00e1s recursos de los que hay en el nodo, tu Pod nunca ser\u00e1 programado en ese nodo.<\/li>\n<li>Para determinar la cantidad adecuada de recursos solicitados\/l\u00edmites de recursos, utiliza pruebas de carga y monitoreo.<\/li>\n<\/ol>\n<p>\nEspero que este art\u00edculo te ayude a entender el concepto b\u00e1sico de limitaci\u00f3n de recursos. Y que puedas aplicar este conocimiento en tu trabajo.<\/p>\n<p>\u00a1\u00c9xitos!<\/p>\n<p><strong>Qu\u00e9 m\u00e1s leer:<\/strong><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/500504\/\">Observabilidad SRE: espacios de nombres y estructura de m\u00e9tricas<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/blog\/poleznye-instrumenty-dlya-kubernetes\">90+ herramientas \u00fatiles para Kubernetes: despliegue, gesti\u00f3n, monitoreo, seguridad y m\u00e1s<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/tele.click\/k8s_mail\">Nuestro canal Alrededor de Kubernetes en Telegram<\/a><\/noindex>.<\/li>\n<\/ol>\n<p>Fuente: <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.2 - 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\/es\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47C\u00f3mo acceder a los recursos del Pod de Kubernetes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/94262","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=94262"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/94262\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/94263"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=94262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=94262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=94262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}