{"id":80076,"date":"2020-05-03T01:42:34","date_gmt":"2020-05-02T23:42:34","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt"},"modified":"2020-05-03T01:42:34","modified_gmt":"2020-05-02T23:42:34","slug":"proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","title":{"rendered":"Dise\u00f1o de cl\u00fasteres de Kubernetes: \u00bfcu\u00e1ntos deben existir?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Nota de traducci\u00f3n.<\/b>: este material proviene de un proyecto educativo <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/\">learnk8s<\/a><\/noindex> \u2014 respuesta a una pregunta popular al dise\u00f1ar una infraestructura basada en Kubernetes. Esperamos que las descripciones detalladas de las ventajas y desventajas de cada opci\u00f3n ayuden a hacer la elecci\u00f3n \u00f3ptima para su proyecto.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Dise\u00f1o de cl\u00fasteres de Kubernetes: \u00bfcu\u00e1ntos deben existir?\" src=\"\/wp-content\/uploads\/2020\/05\/d3cc3b7e686e39032b1f02f3e8b6c46c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>TL;DR<\/b>: un mismo conjunto de cargas de trabajo se puede ejecutar en varios cl\u00fasteres grandes (cada cl\u00faster manejar\u00e1 un gran n\u00famero de cargas) o en muchos peque\u00f1os (con pocas cargas en cada cl\u00faster).<\/p>\n<p>A continuaci\u00f3n se presenta una tabla que eval\u00faa las ventajas y desventajas de cada enfoque:<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Dise\u00f1o de cl\u00fasteres de Kubernetes: \u00bfcu\u00e1ntos deben existir?\" src=\"\/wp-content\/uploads\/2020\/05\/ab5b5fefc97c3befddbaeb0791f8a90d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAl utilizar Kubernetes como plataforma para la explotaci\u00f3n de aplicaciones, a menudo surgen varias preguntas fundamentales sobre los matices de la configuraci\u00f3n de cl\u00fasteres:<\/p>\n<ul>\n<li> <i>\u00bfCu\u00e1ntos cl\u00fasteres utilizar?<\/i><\/li>\n<li> <i>\u00bfQu\u00e9 tan grandes deben ser?<\/i><\/li>\n<li> <i>\u00bfQu\u00e9 debe incluir cada cl\u00faster?<\/i><\/li>\n<\/ul>\n<p>\nEn este art\u00edculo intentar\u00e9 responder a todas estas preguntas, analizando las ventajas y desventajas de cada enfoque.<\/p>\n<h2>Planteamiento de la cuesti\u00f3n<\/h2>\n<p>\nComo creador de software, es probable que desarrolle y opere m\u00faltiples aplicaciones al mismo tiempo.<\/p>\n<p>Adem\u00e1s, muchas instancias de estas aplicaciones seguramente se ejecutan en diferentes entornos; por ejemplo, podr\u00edan ser <i>dev<\/i>, <i>test<\/i> y <i>prod<\/i>.<\/p>\n<p>Como resultado, se obtiene una matriz completa de aplicaciones y entornos:<\/p>\n<p><img decoding=\"async\" alt=\"Dise\u00f1o de cl\u00fasteres de Kubernetes: \u00bfcu\u00e1ntos deben existir?\" src=\"\/wp-content\/uploads\/2020\/05\/f2a811fa82e1e433463ba25d29f837e6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Aplicaciones y entornos<\/i><\/p>\n<p>En el ejemplo anterior se presentan 3 aplicaciones y 3 entornos, lo que da un total de 9 posibles combinaciones.<\/p>\n<p>Cada instancia de la aplicaci\u00f3n es una unidad de implementaci\u00f3n autosuficiente, que se puede manejar de forma independiente de las dem\u00e1s.<\/p>\n<p><i>Tenga en cuenta que <b>instancia de la aplicaci\u00f3n<\/b> puede consistir en m\u00faltiples <b>componentes<\/b>, como frontend, backend, base de datos, etc. En el caso de una aplicaci\u00f3n de microservicios, la instancia incluir\u00e1 todos los microservicios.<\/i><\/p>\n<p>Como resultado, los usuarios de Kubernetes tienen varias preguntas:<\/p>\n<ul>\n<li> \u00bfDeber\u00eda alojar todas las instancias de la aplicaci\u00f3n en un solo cl\u00faster?<\/li>\n<li> \u00bfDeber\u00eda crear un cl\u00faster separado para cada instancia de la aplicaci\u00f3n?<\/li>\n<li> \u00bfO tal vez deber\u00eda utilizar una combinaci\u00f3n de los enfoques mencionados?<\/li>\n<\/ul>\n<p>\nTodas estas opciones son viables, ya que Kubernetes es un sistema flexible que no limita las posibilidades del usuario.<\/p>\n<p>Aqu\u00ed hay algunas de las posibles rutas:<\/p>\n<ul>\n<li> un gran cl\u00faster com\u00fan;<\/li>\n<li> varios cl\u00fasteres peque\u00f1os y especializados;<\/li>\n<li> un cl\u00faster para cada aplicaci\u00f3n;<\/li>\n<li> un cl\u00faster para cada entorno.<\/li>\n<\/ul>\n<p>\nComo se muestra a continuaci\u00f3n, los primeros dos enfoques est\u00e1n en extremos opuestos de la escala de opciones:<\/p>\n<p><img decoding=\"async\" alt=\"Dise\u00f1o de cl\u00fasteres de Kubernetes: \u00bfcu\u00e1ntos deben existir?\" src=\"\/wp-content\/uploads\/2020\/05\/99b8fd0d1e4173705e7996cf8ccb6eec.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>De varios cl\u00fasteres grandes (a la izquierda) a muchos peque\u00f1os (a la derecha)<\/i><\/p>\n<p><i>En general, se considera que un cl\u00faster es 'm\u00e1s grande' que otro si tiene una mayor suma de nodos y pods. Por ejemplo, un cl\u00faster con 10 nodos y 100 pods es m\u00e1s grande que un cl\u00faster con 1 nodo y 10 pods.<\/i><\/p>\n<p>\u00a1Bien, empecemos!<\/p>\n<h2>1. Un gran cl\u00faster com\u00fan<\/h2>\n<p>\nLa primera opci\u00f3n es alojar todas las cargas de trabajo en un solo cl\u00faster:<\/p>\n<p><img decoding=\"async\" alt=\"Dise\u00f1o de cl\u00fasteres de Kubernetes: \u00bfcu\u00e1ntos deben existir?\" src=\"\/wp-content\/uploads\/2020\/05\/283fc3c3f5ccb40a157ccff600628114.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Un gran cl\u00faster<\/i><\/p>\n<p>En este enfoque, el cl\u00faster se utiliza como una plataforma de infraestructura <b>\u2014 todo lo necesario lo despliegas simplemente en el cl\u00faster Kubernetes existente.<\/b> Los espacios de nombres<\/p>\n<p><i><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/overview\/working-with-objects\/namespaces\/\">Los namespaces<\/a><\/noindex> Vamos a revisar los pros y los contras de este enfoque.<\/i><\/p>\n<p><i>+ Uso eficiente de recursos<\/i><\/p>\n<h3>En el caso de un \u00fanico cl\u00faster, solo se necesita una copia de todos los recursos necesarios para ejecutar y administrar el cl\u00faster Kubernetes.<\/h3>\n<p>\nPor ejemplo, esto es cierto para los nodos maestros. Generalmente, cada cl\u00faster de Kubernetes tiene 3 nodos maestros, por lo que para un \u00fanico cl\u00faster, su n\u00famero seguir\u00e1 siendo el mismo (en comparaci\u00f3n, 10 cl\u00fasteres necesitar\u00e1n 30 nodos maestros).<\/p>\n<p>La sutileza mencionada tambi\u00e9n se aplica a otros servicios que funcionan a gran escala en todo el cl\u00faster, como balanceadores de carga, controladores de Ingress, sistemas de autenticaci\u00f3n, registro y monitoreo.<\/p>\n<p>En un cl\u00faster \u00fanico, todos estos servicios se pueden usar de inmediato para todas las cargas de trabajo (no es necesario crear copias, como en el caso de varios cl\u00fasteres).<\/p>\n<p>+ Econom\u00edas<\/p>\n<h3>Como consecuencia de lo anterior, un n\u00famero menor de cl\u00fasteres generalmente cuesta menos, ya que no hay gastos en recursos redundantes.<\/h3>\n<p>\nEsto es especialmente cierto para los nodos maestros, que pueden costar mucho dinero sin importar el m\u00e9todo de implementaci\u00f3n (on-premises o en la nube).<\/p>\n<p>Algunos servicios de Kubernetes administrados, como<\/p>\n<p>Google Kubernetes Engine (GKE) <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes-engine\">Azure Kubernetes Service (AKS)<\/a><\/noindex> o <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/aks\/\">Azure Kubernetes Service (AKS)<\/a><\/noindex>, proporcionan una capa de gesti\u00f3n de forma gratuita. En este caso, la cuesti\u00f3n de los costos es menos apremiante.<\/p>\n<p>Tambi\u00e9n existen servicios gestionados que cobran una tarifa fija por el funcionamiento de cada cl\u00faster de Kubernetes (por ejemplo, <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/eks\/\">Amazon Elastic Kubernetes Service, EKS<\/a><\/noindex>).<\/p>\n<h3>+ Administraci\u00f3n eficiente<\/h3>\n<p>\nGestionar un solo cl\u00faster es m\u00e1s sencillo que m\u00faltiples.<\/p>\n<p>La administraci\u00f3n puede incluir las siguientes tareas:<\/p>\n<ul>\n<li> actualizaci\u00f3n de la versi\u00f3n de Kubernetes;<\/li>\n<li> configuraci\u00f3n del pipeline CI\/CD;<\/li>\n<li> instalaci\u00f3n del plugin CNI;<\/li>\n<li> configuraci\u00f3n del sistema de autenticaci\u00f3n de usuarios;<\/li>\n<li> instalaci\u00f3n del controlador de acceso;<\/li>\n<\/ul>\n<p>\ny muchos m\u00e1s\u2026<\/p>\n<p>En el caso de un solo cl\u00faster, esto solo tendr\u00e1 que hacerse una vez.<\/p>\n<p>Para muchos cl\u00fasteres, las operaciones deber\u00e1n repetirse m\u00faltiples veces, lo que probablemente requerir\u00e1 cierta automatizaci\u00f3n de procesos y herramientas para garantizar la sistematicidad y homogeneidad del proceso.<\/p>\n<p><i>Y ahora unas palabras sobre las desventajas.<\/i><\/p>\n<h3>\u2212 Punto \u00fanico de fallo<\/h3>\n<p>\nEn caso de fallo del <i>\u00fanico<\/i> cl\u00faster, todas las <i>cargas de trabajo dejar\u00e1n de funcionar!<\/i> \u00a1Existen muchas situaciones en las que algo puede salir mal:<\/p>\n<p>la actualizaci\u00f3n de Kubernetes puede causar efectos secundarios inesperados;<\/p>\n<ul>\n<li> un componente del cl\u00faster (por ejemplo, el plugin CNI) comienza a funcionar de manera diferente a lo esperado;<\/li>\n<li> uno de los componentes del cl\u00faster est\u00e1 configurado incorrectamente;<\/li>\n<li> falla en la infraestructura subyacente.<\/li>\n<li> Un solo incidente de este tipo puede causar un da\u00f1o grave a todas las cargas de trabajo alojadas en el cl\u00faster compartido.<\/li>\n<\/ul>\n<p>\n\u2212 Falta de aislamiento fuerte<\/p>\n<h3>Trabajar en un cl\u00faster compartido significa que las aplicaciones comparten hardware, capacidades de red y el sistema operativo en los nodos del cl\u00faster.<\/h3>\n<p>\nEn cierto sentido, dos contenedores con dos aplicaciones diferentes que funcionan en el mismo nodo son similares a dos procesos que se ejecutan en la misma m\u00e1quina bajo el mismo n\u00facleo del sistema operativo.<\/p>\n<p>Los contenedores de Linux proporcionan alg\u00fan grado de aislamiento, pero no es tan fuerte como el que proporcionan, digamos, las m\u00e1quinas virtuales. En esencia, el proceso en un contenedor es el mismo proceso que se est\u00e1 ejecutando en el sistema operativo hu\u00e9sped.<\/p>\n<p><i>Esto puede convertirse en un problema desde el punto de vista de la seguridad: tal organizaci\u00f3n te\u00f3ricamente permite que aplicaciones no relacionadas interact\u00faen entre s\u00ed (ya sea de forma intencionada o accidental).<\/i><\/p>\n<p>Esto puede convertirse en un problema en t\u00e9rminos de seguridad: esta organizaci\u00f3n permite te\u00f3ricamente a aplicaciones no relacionadas interactuar entre s\u00ed (intencionadamente o accidentalmente).<\/p>\n<p>Adem\u00e1s, todas las cargas de trabajo en el cl\u00faster de Kubernetes comparten algunos servicios comunes del cl\u00faster, como <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/dns-pod-service\/\">DNS<\/a><\/noindex> \u2014 permiten a las aplicaciones encontrar los servicios de otras aplicaciones en el cl\u00faster.<\/p>\n<p><i>Todos los puntos mencionados anteriormente pueden tener diferentes implicaciones dependiendo de los requisitos de seguridad de las aplicaciones.<\/i><\/p>\n<p>Kubernetes proporciona diversas herramientas para prevenir problemas en el sistema de seguridad, como <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/pod-security-policy\/\">PodSecurityPolicies<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/network-policies\/\">NetworkPolicies<\/a><\/noindex>. Sin embargo, para configurarlas correctamente se requiere cierta experiencia; adem\u00e1s, no son capaces de cerrar todas las brechas de seguridad.<\/p>\n<p>Es importante recordar siempre que Kubernetes fue dise\u00f1ado originalmente para <i>el uso compartido<\/i>, y no para <i>la aislamiento y seguridad<\/i>.<\/p>\n<h3>\u2212 Ausencia de multi-tenancy estricta<\/h3>\n<p>\nDada la abundancia de recursos compartidos en el cl\u00faster de Kubernetes, existen m\u00faltiples maneras en las que diferentes aplicaciones pueden \"pisarse\" entre s\u00ed.<\/p>\n<p>Por ejemplo, una aplicaci\u00f3n puede monopolizar alg\u00fan recurso compartido (como CPU o memoria) y privar a otras aplicaciones que se ejecutan en el mismo nodo de su acceso.<\/p>\n<p>Kubernetes proporciona varios mecanismos para controlar este comportamiento, como <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/manage-compute-resources-container\/\">solicitudes de recursos y l\u00edmites<\/a><\/noindex> <i>(ver tambi\u00e9n el art\u00edculo \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/489668\/\"> L\u00edmites de CPU y throttling agresivo en Kubernetes <\/a><\/noindex>\" \u2014 nota del traductor)<\/i>, <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/resource-quotas\/\">ResourceQuotas<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/limit-range\/\">LimitRanges<\/a><\/noindex>. Sin embargo, al igual que en el caso de la seguridad, su configuraci\u00f3n es bastante compleja y no pueden prevenir todos los efectos secundarios imprevistos.<\/p>\n<h3>\u2212 Gran n\u00famero de usuarios<\/h3>\n<p>\nEn el caso de un \u00fanico cl\u00faster, se debe dar acceso a muchas personas. Cuanto mayor es su n\u00famero, mayor es el riesgo de que rompan algo.<\/p>\n<p>Dentro del cl\u00faster se puede controlar qui\u00e9n puede hacer qu\u00e9 mediante <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/rbac\/\">control de acceso basado en roles (RBAC)<\/a><\/noindex> <i>(ver el art\u00edculo \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/470503\/\"> Usuarios y autorizaci\u00f3n RBAC en Kubernetes <\/a><\/noindex>\" \u2014 nota del traductor)<\/i>. Sin embargo, esto no evitar\u00e1 que los usuarios \"rompan\" algo dentro de su \u00e1rea de responsabilidad.<\/p>\n<h3>\u2212 Los cl\u00fasteres no pueden crecer indefinidamente<\/h3>\n<p>\nUn cl\u00faster que se utiliza para todas las cargas de trabajo probablemente ser\u00e1 bastante grande (en t\u00e9rminos de nodos y pods).<\/p>\n<p>Pero aqu\u00ed surge otro problema: los cl\u00fasteres en Kubernetes no pueden crecer indefinidamente.<\/p>\n<p>Hay un l\u00edmite te\u00f3rico en el tama\u00f1o del cl\u00faster. En Kubernetes, este es aproximadamente <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/setup\/best-practices\/cluster-large\/\">5000 nodos, 150 mil pods y 300 mil contenedores<\/a><\/noindex>.<\/p>\n<p>Sin embargo, en la vida real, los problemas pueden comenzar mucho antes, por ejemplo, con solo <noindex><a rel=\"nofollow\" href=\"https:\/\/events19.lfasiallc.com\/wp-content\/uploads\/2017\/11\/BoF_-Not-One-Size-Fits-All-How-to-Size-Kubernetes-Clusters_Guang-Ya-Liu-_-Sahdev-Zala.pdf\">500 nodos<\/a><\/noindex>.<\/p>\n<p>La cuesti\u00f3n es que los cl\u00fasteres grandes ejercen una alta carga sobre la capa de control de Kubernetes. En otras palabras, para mantener el cl\u00faster en funcionamiento y utilizar los recursos de manera efectiva, se requiere una configuraci\u00f3n cuidadosa.<\/p>\n<p><i>Este problema se estudia en el art\u00edculo correspondiente en el blog original titulado \"<noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/kubernetes-node-size\">Architecting Kubernetes clusters \u2014 choosing a worker node size<\/a><\/noindex>\u00bb.<\/i><\/p>\n<p><i>Pero consideremos el enfoque opuesto: m\u00faltiples cl\u00fasteres peque\u00f1os.<\/i><\/p>\n<h2>2. Muchos cl\u00fasteres peque\u00f1os y especializados<\/h2>\n<p>\nCon este enfoque, se utiliza un cl\u00faster separado para cada elemento desplegado:<\/p>\n<p><img decoding=\"async\" alt=\"Dise\u00f1o de cl\u00fasteres de Kubernetes: \u00bfcu\u00e1ntos deben existir?\" src=\"\/wp-content\/uploads\/2020\/05\/2320f62d945944f2e26f07252e9b8440.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Muchos cl\u00fasteres peque\u00f1os<\/i><\/p>\n<p>Para los prop\u00f3sitos de este art\u00edculo, un <i>elemento desplegado<\/i> se entiende como una instancia de la aplicaci\u00f3n, por ejemplo, la versi\u00f3n de desarrollo de una aplicaci\u00f3n espec\u00edfica.<\/p>\n<p>En esta estrategia, Kubernetes se utiliza como un <b>entorno de ejecuci\u00f3n<\/b> especializado para instancias individuales de aplicaciones.<\/p>\n<p><i>+ Uso eficiente de recursos<\/i><\/p>\n<h3>+ Radio de explosi\u00f3n limitado<\/h3>\n<p>\nCuando hay una 'falla' en un cl\u00faster, las consecuencias negativas se limitan a las cargas de trabajo que se ejecutaban en ese cl\u00faster. Todas las dem\u00e1s cargas permanecen intactas.<\/p>\n<h3>+ Aislamiento<\/h3>\n<p>\nLas cargas de trabajo ubicadas en cl\u00fasteres individuales no comparten recursos como CPU, memoria, sistema operativo, red u otros servicios.<\/p>\n<p>Como resultado, obtenemos un aislamiento estricto entre aplicaciones no relacionadas, lo que puede beneficiar su seguridad.<\/p>\n<h3>+ Pocos usuarios<\/h3>\n<p>\nDado que cada cl\u00faster contiene solo un n\u00famero limitado de cargas de trabajo, se reduce el n\u00famero de usuarios que tienen acceso a \u00e9l.<\/p>\n<p>Cuanto menos personas tengan acceso al cl\u00faster, menor es el riesgo de que algo \"se rompa\".<\/p>\n<p><i>Veamos los inconvenientes.<\/i><\/p>\n<h3>\u2212 Uso ineficiente de recursos<\/h3>\n<p>\nComo se mencion\u00f3 anteriormente, cada cl\u00faster de Kubernetes requiere un conjunto espec\u00edfico de recursos de gesti\u00f3n: nodos maestros, componentes de la capa de control, soluciones de monitoreo y registro.<\/p>\n<p>En el caso de un gran n\u00famero de cl\u00fasteres peque\u00f1os, se debe dedicar una mayor proporci\u00f3n de recursos a la gesti\u00f3n.<\/p>\n<h3>\u2212 Costo elevado<\/h3>\n<p>\nEl uso ineficiente de recursos conlleva autom\u00e1ticamente altos costos.<\/p>\n<p>Por ejemplo, mantener 30 nodos maestros en lugar de tres con la misma capacidad computacional seguramente se reflejar\u00e1 en los gastos.<\/p>\n<h3>\u2212 Dificultades de administraci\u00f3n<\/h3>\n<p>\nAdministrar m\u00faltiples cl\u00fasteres de Kubernetes es mucho m\u00e1s complicado que trabajar con uno solo.<\/p>\n<p>Por ejemplo, ser\u00e1 necesario configurar la autenticaci\u00f3n y autorizaci\u00f3n para cada cl\u00faster. La actualizaci\u00f3n de la versi\u00f3n de Kubernetes tambi\u00e9n deber\u00e1 realizarse varias veces.<\/p>\n<p>Lo m\u00e1s probable es que sea necesario aplicar automatizaci\u00f3n para mejorar la eficiencia de todas estas tareas.<\/p>\n<p><i>Ahora consideremos escenarios menos extremos.<\/i><\/p>\n<h2>3. Un cl\u00faster por cada aplicaci\u00f3n<\/h2>\n<p>\nEn este enfoque, creas un cl\u00faster separado para todas las instancias de una aplicaci\u00f3n espec\u00edfica:<\/p>\n<p><img decoding=\"async\" alt=\"Dise\u00f1o de cl\u00fasteres de Kubernetes: \u00bfcu\u00e1ntos deben existir?\" src=\"\/wp-content\/uploads\/2020\/05\/238ee74d4e4dc42b7daeadc1ce484905.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Cl\u00faster por aplicaci\u00f3n<\/i><\/p>\n<p>Este camino puede considerarse como una generalizaci\u00f3n del principio \"<b>un cl\u00faster por equipo<\/b>\", ya que generalmente un equipo de ingenieros se ocupa del desarrollo de una o varias aplicaciones.<\/p>\n<p><i>+ Uso eficiente de recursos<\/i><\/p>\n<h3>+ El cl\u00faster se puede adaptar a la aplicaci\u00f3n<\/h3>\n<p>\nSi una aplicaci\u00f3n tiene necesidades especiales, se pueden implementar en el cl\u00faster sin afectar a otros cl\u00fasteres.<\/p>\n<p>Tales necesidades pueden incluir workers con GPU, ciertos plugins de CNI, service mesh o alg\u00fan otro servicio.<\/p>\n<p>Cada cl\u00faster se puede ajustar seg\u00fan la aplicaci\u00f3n en \u00e9l operativa, para que contenga solo lo necesario.<\/p>\n<h3>\u2212 Diferentes entornos en un mismo cl\u00faster<\/h3>\n<p>\nUna desventaja de este enfoque es que las instancias de aplicaciones de diferentes entornos coexisten en un mismo cl\u00faster.<\/p>\n<p>Por ejemplo, la versi\u00f3n de producci\u00f3n de la aplicaci\u00f3n opera en el mismo cl\u00faster que la versi\u00f3n de desarrollo. Esto tambi\u00e9n significa que los desarrolladores llevan a cabo su trabajo en el mismo cl\u00faster donde se ejecuta la versi\u00f3n de producci\u00f3n de la aplicaci\u00f3n.<\/p>\n<p>Si, debido a acciones de los desarrolladores o fallos de la versi\u00f3n de desarrollo, ocurre un fallo en el cl\u00faster, potencialmente la versi\u00f3n de producci\u00f3n tambi\u00e9n puede verse afectada, lo cual es una gran desventaja de este enfoque.<\/p>\n<p><i>Y, por \u00faltimo, el \u00faltimo escenario en nuestra lista.<\/i><\/p>\n<h2>4. Un cl\u00faster por cada entorno<\/h2>\n<p>\nEste escenario prev\u00e9 asignar un cl\u00faster separado para cada entorno:<\/p>\n<p><img decoding=\"async\" alt=\"Dise\u00f1o de cl\u00fasteres de Kubernetes: \u00bfcu\u00e1ntos deben existir?\" src=\"\/wp-content\/uploads\/2020\/05\/157da599edf178832b1b15459786fbc8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Un cl\u00faster por entorno<\/i><\/p>\n<p>Por ejemplo, puede que tengas cl\u00fasteres <i>dev<\/i>, <i>test<\/i> y <i>prod<\/i>, en los que lanzar\u00e1s todas las instancias de la aplicaci\u00f3n destinadas a un entorno espec\u00edfico.<\/p>\n<p><i>Aqu\u00ed est\u00e1n las ventajas y desventajas de este enfoque.<\/i><\/p>\n<h3>+ Aislamiento del entorno de producci\u00f3n<\/h3>\n<p>\nEn este enfoque, todos los entornos est\u00e1n aislados entre s\u00ed. Sin embargo, en la pr\u00e1ctica, esto es especialmente importante para el entorno de producci\u00f3n.<\/p>\n<p>Las versiones de producci\u00f3n de la aplicaci\u00f3n ahora no dependen de lo que ocurre en otros cl\u00fasteres y entornos.<\/p>\n<p>Por lo tanto, si de repente surge un problema en el cl\u00faster de desarrollo, las versiones de producci\u00f3n de las aplicaciones seguir\u00e1n funcionando como si nada hubiera pasado.<\/p>\n<h3>+ El cl\u00faster se puede adaptar al entorno<\/h3>\n<p>\nCada cl\u00faster se puede adaptar a su entorno. Por ejemplo, se puede:<\/p>\n<ul>\n<li> instalar herramientas de desarrollo y depuraci\u00f3n en el cl\u00faster de desarrollo;<\/li>\n<li> instalar marcos y herramientas de prueba en el cl\u00faster; <i>test<\/i>;<\/li>\n<li> utilizar hardware y canales de red m\u00e1s potentes en el cl\u00faster <i>prod<\/i>.<\/li>\n<\/ul>\n<p>\nEsto permite aumentar la eficiencia tanto en el desarrollo como en la operaci\u00f3n de aplicaciones.<\/p>\n<h3>+ Restricci\u00f3n de acceso al cl\u00faster de producci\u00f3n<\/h3>\n<p>\nLa necesidad de trabajar directamente con el cl\u00faster de producci\u00f3n no ocurre con frecuencia, por lo que se puede restringir significativamente el n\u00famero de personas que tienen acceso a \u00e9l.<\/p>\n<p>Se puede ir a\u00fan m\u00e1s lejos y negar completamente el acceso a este cl\u00faster a las personas, realizando todos los despliegues mediante una herramienta de automatizaci\u00f3n CI\/CD. Este enfoque ayudar\u00e1 a minimizar el riesgo de errores humanos precisamente donde m\u00e1s se necesita.<\/p>\n<p><i>Y ahora unas palabras sobre las desventajas.<\/i><\/p>\n<h3>\u2212 Falta de aislamiento entre aplicaciones<\/h3>\n<p>\nLa principal desventaja del enfoque es la falta de aislamiento de hardware y recursos entre las aplicaciones.<\/p>\n<p>Las aplicaciones no relacionadas comparten los recursos del cl\u00faster: n\u00facleo del sistema, procesador, memoria y algunos otros servicios.<\/p>\n<p>Como se mencion\u00f3 anteriormente, esto puede ser potencialmente peligroso.<\/p>\n<h3>\u2212 Imposibilidad de localizar las dependencias de las aplicaciones<\/h3>\n<p>\nSi una aplicaci\u00f3n tiene requisitos espec\u00edficos, es necesario satisfacerlos en todos los cl\u00fasteres.<\/p>\n<p>Por ejemplo, si una aplicaci\u00f3n necesita GPU, cada cl\u00faster debe tener al menos un worker con GPU (incluso si solo es usado por esta aplicaci\u00f3n).<\/p>\n<p>Como resultado, corremos el riesgo de tener costos m\u00e1s altos y un uso ineficiente de los recursos.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>\nCon un conjunto determinado de aplicaciones, se pueden colocar en varios cl\u00fasteres grandes o en muchos peque\u00f1os.<\/p>\n<p>El art\u00edculo analiza las ventajas y desventajas de diferentes enfoques, desde un solo cl\u00faster global hasta varios peque\u00f1os y especializados:<\/p>\n<ul>\n<li> un gran cl\u00faster com\u00fan;<\/li>\n<li> varios cl\u00fasteres peque\u00f1os y especializados;<\/li>\n<li> un cl\u00faster para cada aplicaci\u00f3n;<\/li>\n<li> un cl\u00faster para cada entorno.<\/li>\n<\/ul>\n<p>\n<i>Entonces, \u00bfqu\u00e9 enfoque elegir?<\/i><\/p>\n<p>Como suele ser, la respuesta depende del escenario de uso: es necesario sopesar las ventajas y desventajas de los diferentes enfoques y elegir la opci\u00f3n m\u00e1s \u00f3ptima.<\/p>\n<p>Sin embargo, la elecci\u00f3n no se limita a los ejemplos mencionados anteriormente: \u00a1se puede emplear cualquier combinaci\u00f3n de ellos!<\/p>\n<p>Por ejemplo, se puede organizar un par de cl\u00fasteres para cada equipo: un cl\u00faster para desarrollo (en el que estar\u00e1n los entornos <i>dev<\/i> y <i>test<\/i>) y un cl\u00faster para <i>producci\u00f3n<\/i> (donde estar\u00e1 el entorno de producci\u00f3n).<\/p>\n<p>Bas\u00e1ndote en la informaci\u00f3n de este art\u00edculo, podr\u00e1s optimizar las ventajas y desventajas seg\u00fan el escenario espec\u00edfico. \u00a1Buena suerte!<\/p>\n<h2>P.D.<\/h2>\n<p>\nTambi\u00e9n puedes leer en nuestro blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/484954\/\">Gu\u00eda visual para la soluci\u00f3n de problemas en Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/480946\/\">Registros en Kubernetes (y no solo) hoy: expectativas y realidad<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/478306\/\">Service Mesh: lo que cada Ingeniero de Software necesita saber sobre la tecnolog\u00eda m\u00e1s popular<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468679\/\">Gu\u00eda de seguridad en Kubernetes: autenticaci\u00f3n, autorizaci\u00f3n, auditor\u00eda<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/498100\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u044d\u0442\u043e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0442 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 learnk8s \u2014 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 Kubernetes. \u041d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043b\u044e\u0441\u043e\u0432 \u0438 \u043c\u0438\u043d\u0443\u0441\u043e\u0432 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440 \u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. TL;DR: \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043d\u0430\u0431\u043e\u0440 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445 (\u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":80077,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-80076","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=\"description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt\" \/>\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\u041f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432: \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt\" \/>\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-05-02T23:42:34+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-02T23: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\udd47Dise\u00f1o de cl\u00fasteres de Kubernetes: \u00bfcu\u00e1ntos deber\u00edan ser? | ProHoster","description":"Ej.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","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\u041f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432: \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c? | ProHoster","og:description":"\u041f\u0440\u0438\u043c.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/proektirovanie-kubernetes-klasterov-skolko-ih-dolzhno-byt","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-05-02T23:42:34+00:00","article:modified_time":"2020-05-02T23:42:34+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"80076","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 16:24:58","updated":"2022-10-02 20:23:35","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\/80076","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=80076"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/80076\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/80077"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=80076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=80076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=80076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}