{"id":37636,"date":"2019-10-31T22:18:44","date_gmt":"2019-10-31T19:18:44","guid":{"rendered":"https:\/\/prohoster.info\/blog\/sozdayom-kubernetes-platformu-v-pinterest\/"},"modified":"2019-10-31T22:18:44","modified_gmt":"2019-10-31T19:18:44","slug":"sozdayom-kubernetes-platformu-v-pinterest","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","title":{"rendered":"Creando una plataforma de Kubernetes en Pinterest","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>A lo largo de los a\u00f1os, Pinterest ha reunido 300 millones de usuarios que han creado m\u00e1s de 200 mil millones de pins en m\u00e1s de 4 mil millones de tableros. Para atender a este ej\u00e9rcito de usuarios y a su vasta base de contenido, el portal ha desarrollado miles de servicios, desde microservicios que pueden manejar varios CPU, hasta gigantescos monolitos que operan en todo un parque de m\u00e1quinas virtuales. Y lleg\u00f3 el momento en que la compa\u00f1\u00eda puso su mirada en k8s. \u00bfQu\u00e9 es lo que atrajo a \u00abPinterest\u00bb hacia \u00abel cubo\u00bb? De esto te enterar\u00e1s en nuestra traducci\u00f3n del art\u00edculo reciente de <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/pinterest-engineering\">el blog de ingenier\u00eda de Pinterest<\/a><\/noindex>.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Creando una plataforma de Kubernetes en Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/71719121d8d0ed8e284b471c3bcb7328.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAs\u00ed que, cientos de millones de usuarios y cientos de miles de pins. Para atender a este ej\u00e9rcito de usuarios y a su vasta base de contenido, hemos desarrollado miles de servicios, desde microservicios que pueden manejar varios CPU, hasta gigantescos monolitos que operan en un parque completo de m\u00e1quinas virtuales. Adem\u00e1s, contamos con diversos frameworks que tambi\u00e9n pueden requerir recursos de CPU, memoria o acceso a operaciones de entrada\/salida.<\/p>\n<p>En el proceso de mantener este zool\u00f3gico de herramientas, el equipo de desarrollo enfrenta varios problemas:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li>Los ingenieros no tienen un m\u00e9todo unificado para lanzar entornos de trabajo. Los servicios sin estado, los servicios con estado y los proyectos en desarrollo se basan en pilas tecnol\u00f3gicas completamente diferentes. Esto ha llevado a la creaci\u00f3n de todo un curso de capacitaci\u00f3n para ingenieros, complicando seriamente el trabajo de nuestro equipo de infraestructura.<\/li>\n<li>Los desarrolladores, que disponen de su propio parque de m\u00e1quinas virtuales, generan una carga enorme para los administradores internos. Como resultado, operaciones tan simples como la actualizaci\u00f3n del sistema operativo o de AMI se alargan a semanas y meses. Esto lleva a un aumento de la carga en situaciones que, a primera vista, parecen ordinarias.<\/li>\n<li>Dificultades en la creaci\u00f3n de herramientas de gesti\u00f3n de infraestructura global sobre soluciones ya existentes. La situaci\u00f3n se complica a\u00fan m\u00e1s por el hecho de que no es sencillo encontrar a los propietarios de las m\u00e1quinas virtuales. Es decir, no sabemos si es seguro liberar esos recursos para trabajar en otras \u00e1reas de nuestra infraestructura.<\/li>\n<\/ul>\n<p>\nLos sistemas de orquestaci\u00f3n de contenedores son una forma de unificar la gesti\u00f3n de la carga de trabajo. Le abren el camino para aumentar la velocidad de desarrollo y simplifican la gesti\u00f3n de la infraestructura, ya que todos los recursos involucrados en el proyecto son gestionados por un \u00fanico sistema centralizado.<\/p>\n<p><img decoding=\"async\" alt=\"Creando una plataforma de Kubernetes en Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/8ce586ab31e593c99310ae2bf2a7bafb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Figura 1: Prioridades de la infraestructura (fiabilidad, rendimiento de los desarrolladores y eficiencia).<\/i><\/p>\n<p>El equipo de Cloud Management Platform en Pinterest se familiariz\u00f3 con K8s en 2017. Para la primera mitad de 2017, documentamos la mayor parte de nuestra capacidad productiva, incluidos los API y todos nuestros <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/es\/server\/\"   title=\"servidores web\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1189\">servidores web<\/a>. Luego realizamos una evaluaci\u00f3n minuciosa de varios sistemas de orquestaci\u00f3n de soluciones de contenedores, creaci\u00f3n de cl\u00fasteres y su funcionamiento. A finales de 2017, decidimos utilizar Kubernetes. Era lo suficientemente flexible y contaba con un amplio soporte en la comunidad de desarrolladores.<\/p>\n<p>En la actualidad, hemos creado nuestras propias herramientas de inicializaci\u00f3n del cl\u00faster basadas en Kops y hemos migrado a Kubernetes los componentes existentes de la infraestructura, como la red, la seguridad, las m\u00e9tricas, la gesti\u00f3n de registros, la gesti\u00f3n de identidades y el tr\u00e1fico. Tambi\u00e9n hemos implementado un sistema de modelado de cargas de trabajo para nuestro recurso, cuya complejidad est\u00e1 oculta a los desarrolladores. Ahora estamos enfocados en garantizar la estabilidad del cl\u00faster, su escalabilidad y la incorporaci\u00f3n de nuevos clientes.<\/p>\n<h4>Kubernetes: el camino de Pinterest<\/h4>\n<p>\nComenzar a trabajar con Kubernetes a gran escala en Pinterest como una plataforma que ser\u00e1 apreciada por nuestros ingenieros present\u00f3 numerosos desaf\u00edos.<\/p>\n<p>Como empresa grande, hemos invertido grandes cantidades de dinero en herramientas de infraestructura. Por ejemplo, herramientas de seguridad que procesan certificados y distribuyen claves, componentes de control de tr\u00e1fico, sistemas de descubrimiento de servicios, componentes de visibilidad y env\u00edo de registros y m\u00e9tricas. Todo esto se reuni\u00f3 no por casualidad: pasamos por un camino normal de prueba y error, y por ello quer\u00edamos integrar todo esto en la nueva infraestructura sobre Kubernetes en lugar de reinventar la rueda antigua en una nueva plataforma. Este enfoque, en general, simplific\u00f3 la migraci\u00f3n, ya que todo el soporte de aplicaciones ya existe y no necesita ser creado desde cero.<\/p>\n<p>Por otro lado, los modelos de pron\u00f3stico de carga en Kubernetes (como implementaciones, trabajos y conjuntos de Daemon) son insuficientes para nuestro proyecto. Estos problemas de usabilidad son enormes obst\u00e1culos en el camino hacia la adopci\u00f3n de Kubernetes. Por ejemplo, hemos escuchado a desarrolladores de servicios quej\u00e1ndose de la falta o la configuraci\u00f3n incorrecta de las entradas. Tambi\u00e9n hemos encontrado un uso inadecuado de los generadores de plantillas, cuando se crearon cientos de copias con la misma especificaci\u00f3n y tarea, lo que result\u00f3 en problemas de depuraci\u00f3n aterradores.<\/p>\n<p>Tambi\u00e9n fue muy dif\u00edcil mantener diferentes versiones en un mismo cl\u00faster. Imagina la complejidad del soporte al cliente, si necesitas trabajar en m\u00faltiples versiones del mismo entorno de ejecuci\u00f3n, lidiando con todos sus problemas, errores y actualizaciones.<\/p>\n<h4>Recursos personalizados y controladores de Pinterest<\/h4>\n<p>\nPara facilitar el proceso de implementaci\u00f3n de Kubernetes para nuestros ingenieros, as\u00ed como para simplificar la infraestructura y acelerar su funcionamiento, hemos desarrollado nuestras propias definiciones de recursos personalizados (CRD).<\/p>\n<p>Las CRD proporcionan las siguientes funcionalidades:<\/p>\n<ol>\n<li>Unificaci\u00f3n de varios recursos nativos de Kubernetes para que funcionen como una \u00fanica carga. Por ejemplo, el recurso PinterestService incluye la implementaci\u00f3n, el servicio de entrada y el mapa de configuraci\u00f3n. Esto permite a los desarrolladores no preocuparse por la configuraci\u00f3n de DNS.<\/li>\n<li>Implementaci\u00f3n del soporte de aplicaciones necesario. El usuario debe centrarse \u00fanicamente en la especificaci\u00f3n del contenedor seg\u00fan su l\u00f3gica de negocio, mientras que el controlador de la CRD implementa todos los init-containers, variables de entorno y especificaciones de pod necesarias. Esto proporciona un nivel de comodidad completamente diferente para los desarrolladores.<\/li>\n<li>Los controladores de la CRD tambi\u00e9n gestionan el ciclo de vida de sus propios recursos y mejoran la disponibilidad de depuraci\u00f3n. Esto incluye la conciliaci\u00f3n de las especificaciones deseadas y reales, la actualizaci\u00f3n del estado de la CRD y el registro de eventos, entre otros. Sin la CRD, los desarrolladores tendr\u00edan que gestionar un conjunto numeroso de recursos, lo que aumentar\u00eda la probabilidad de errores. <\/li>\n<\/ol>\n<p>\nAqu\u00ed hay un ejemplo de PinterestService y un recurso interno que es gestionado por nuestro controlador:<\/p>\n<p><img decoding=\"async\" alt=\"Creando una plataforma de Kubernetes en Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/5f76107d023d18f535447a13d41404fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nComo se puede ver arriba, para apoyar el contenedor personalizado, necesitamos integrar en \u00e9l un contenedor de inicializaci\u00f3n y varios complementos para asegurar la seguridad, la visibilidad y el manejo del tr\u00e1fico de red. Adem\u00e1s, hemos creado plantillas de configuraci\u00f3n y hemos implementado el soporte para plantillas de PVC para trabajos por lotes, as\u00ed como el seguimiento de m\u00faltiples variables de entorno para monitorear la identificaci\u00f3n, el consumo de recursos y la recolecci\u00f3n de 'basura'.<\/p>\n<p>Es dif\u00edcil imaginar que los desarrolladores quieran escribir estos archivos de configuraci\u00f3n manualmente sin soporte de CRD, sin mencionar el mantenimiento y depuraci\u00f3n adicionales de las configuraciones.<\/p>\n<h4>Flujo de trabajo de despliegue de aplicaciones<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Creando una plataforma de Kubernetes en Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/08c953d5cf32244733cf4193c1b304bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn la imagen anterior se muestra c\u00f3mo desplegar un recurso personalizado de Pinterest en un cl\u00faster de Kubernetes:<\/p>\n<ol>\n<li>Los desarrolladores interact\u00faan con nuestro cl\u00faster de Kubernetes a trav\u00e9s de CLI e interfaz de usuario.<\/li>\n<li>Las herramientas CLI \/ UI extraen archivos YAML de configuraci\u00f3n del flujo de trabajo y otras propiedades de construcci\u00f3n (la misma identificaci\u00f3n de versi\u00f3n) de Artifactory, luego los env\u00edan al Servicio de Sometimiento de Trabajo. Este paso garantiza que solo se implementen versiones funcionales en el cl\u00faster. <\/li>\n<li>JSS act\u00faa como un gateway para diversas plataformas, incluyendo Kubernetes. Aqu\u00ed se lleva a cabo la autenticaci\u00f3n del usuario, la asignaci\u00f3n de cuotas y la verificaci\u00f3n parcial de la configuraci\u00f3n de nuestro CRD.<\/li>\n<li>Despu\u00e9s de validar el CRD en el lado de JSS, la informaci\u00f3n se env\u00eda a la API de la plataforma k8s.<\/li>\n<li>Nuestro controlador CRD supervisa los eventos en todos los recursos personalizados. Convierte el CR en recursos nativos de k8s, a\u00f1ade los m\u00f3dulos necesarios, establece las variables de entorno apropiadas y realiza otras tareas auxiliares, garantizando as\u00ed un apoyo infraestructural adecuado a las aplicaciones personalizadas en contenedores.<\/li>\n<li>Luego, el controlador CRD env\u00eda los datos recibidos a la API de Kubernetes para ser procesados por el scheduler y ser puestos en marcha.<\/li>\n<\/ol>\n<p>\n<b>Nota<\/b>: este flujo de trabajo de implementaci\u00f3n en pre-lanzamiento fue creado para los primeros usuarios de la nueva plataforma k8s. Actualmente, estamos en el proceso de perfeccionar este proceso para integrarnos completamente con nuestro nuevo CI\/CD. Esto significa que no podemos compartir toda la informaci\u00f3n relacionada con Kubernetes. Esperamos con ansias la oportunidad de compartir nuestra experiencia y hablar sobre el progreso del equipo en este sentido en nuestra pr\u00f3xima entrada de blog 'Construyendo una plataforma CI\/CD para Pinterest'.<\/p>\n<h4>Tipos de recursos especiales<\/h4>\n<p>\nSeg\u00fan las necesidades espec\u00edficas de Pinterest, hemos desarrollado los siguientes CRD que son adecuados para varios flujos de trabajo:<\/p>\n<ul>\n<li>PinterestService son servicios stateless que han estado funcionando durante mucho tiempo. Muchos de nuestros sistemas principales se basan en un conjunto de estos servicios.<\/li>\n<li>PinterestJobSet modela trabajos por lotes de ciclo completo. En Pinterest, hay un caso de uso com\u00fan donde m\u00faltiples trabajos ejecutan los mismos contenedores en paralelo, independientemente de otros procesos similares.<\/li>\n<li>PinterestCronJob se usa ampliamente en conjunto con cargas de trabajo peri\u00f3dicas menores. Esta es una capa para trabajar de manera nativa con cron, con mecanismos de soporte de Pinterest que manejan seguridad, tr\u00e1fico, registros y m\u00e9tricas.<\/li>\n<li>PinterestDaemon incluye demonios de infraestructura. Esta familia contin\u00faa creciendo, ya que agregamos m\u00e1s soporte para nuestros cl\u00fasteres.<\/li>\n<li>PinterestTrainingJob abarca procesos de TensorFlow y PyTorch, proporcionando el mismo nivel de soporte durante la ejecuci\u00f3n que todos los dem\u00e1s CRD. Dado que Pinterest utiliza activamente TensorFlow y otros sistemas de aprendizaje autom\u00e1tico, ten\u00edamos motivos para construir un CRD separado en torno a ellos.<\/li>\n<\/ul>\n<p>\nTambi\u00e9n estamos trabajando en PinterestStatefulSet, que pronto ser\u00e1 adaptado para almacenamiento de datos y otros sistemas stateful.<\/p>\n<h4>Soporte para el entorno de ejecuci\u00f3n<\/h4>\n<p>\nCuando se lanza un m\u00f3dulo de aplicaciones en Kubernetes, autom\u00e1ticamente recibe un certificado para identificarse a s\u00ed mismo. Este certificado se utiliza para acceder al almac\u00e9n de secretos o para comunicarse con otros servicios a trav\u00e9s de mTLS. Mientras tanto, el configurador de inicializaci\u00f3n de contenedores y el Daemon cargar\u00e1n todas las dependencias necesarias antes de iniciar la aplicaci\u00f3n en contenedor. Cuando todo est\u00e9 listo, el sidecar de tr\u00e1fico y el Daemon registrar\u00e1n la direcci\u00f3n IP del m\u00f3dulo en nuestro Zookeeper, para que los clientes puedan detectarlo. Todo esto funcionar\u00e1, ya que el m\u00f3dulo de red se configur\u00f3 antes de iniciar la aplicaci\u00f3n.<\/p>\n<p>Arriba se presentan ejemplos t\u00edpicos de soporte para cargas de trabajo durante la ejecuci\u00f3n. Para otros tipos de cargas de trabajo, puede requerirse un soporte algo diferente, pero todos se presentan en forma de sidecar a nivel de pod, nodos o Daemons a nivel de m\u00e1quinas virtuales. Nos aseguramos de que todo esto est\u00e9 desplegado dentro de la infraestructura de gesti\u00f3n y se coordine entre aplicaciones, lo que en \u00faltima instancia reduce significativamente la carga en t\u00e9rminos de trabajos t\u00e9cnicos y soporte al cliente.<\/p>\n<h4>Pruebas y QA<\/h4>\n<p>\nHemos construido un pipeline de pruebas end-to-end sobre la infraestructura de pruebas de Kubernetes ya existente. Estas pruebas se distribuyen entre todos nuestros cl\u00fasteres. Nuestro pipeline ha pasado por muchas revisiones antes de convertirse en parte del cl\u00faster de productos.<\/p>\n<p>Adem\u00e1s de los sistemas de prueba, tenemos sistemas de monitoreo y alerta que supervisan continuamente el estado de los componentes del sistema, el consumo de recursos y otros indicadores importantes, notific\u00e1ndonos solo cuando es necesaria la intervenci\u00f3n humana.<\/p>\n<h4>Alternativas<\/h4>\n<p>\nHemos considerado algunas alternativas a los recursos personalizados, como controladores de acceso mutacionales y sistemas de plantillas. Sin embargo, todos ellos conllevan serias dificultades operativas, por lo que elegimos el camino de CRD.<\/p>\n<p>El controlador de acceso mutacional se utiliz\u00f3 para introducir sidecars, variables de entorno y otro soporte durante la ejecuci\u00f3n. Sin embargo, se encontr\u00f3 con varios problemas, como la vinculaci\u00f3n de recursos y la gesti\u00f3n de su ciclo de vida, mientras que en CRD no se presentan tales problemas.<\/p>\n<p><b>Nota:<\/b> Los sistemas de plantillas, como los diagramas de Helm, son ampliamente utilizados para lanzar aplicaciones con configuraciones similares. Sin embargo, nuestras aplicaciones de trabajo son demasiado diversas para ser gestionadas mediante plantillas. Adem\u00e1s, durante el despliegue continuo al usar plantillas, surgir\u00e1n demasiados errores.<\/p>\n<h4>Trabajo futuro<\/h4>\n<p>\nActualmente lidiamos con una carga mixta en todos nuestros cl\u00fasteres. Para mantener este tipo de procesos de diferentes tipos y tama\u00f1os, estamos trabajando en las siguientes \u00e1reas:<\/p>\n<ul>\n<li>Un conjunto de cl\u00fasteres distribuye grandes aplicaciones entre diferentes cl\u00fasteres para garantizar escalabilidad y estabilidad.<\/li>\n<li>Garantizar la estabilidad, escalabilidad y visibilidad del cl\u00faster para establecer la conexi\u00f3n entre la aplicaci\u00f3n y su SLA.<\/li>\n<li>Gesti\u00f3n de recursos y cuotas, para que las aplicaciones no entren en conflicto entre s\u00ed, y para que la escala del cl\u00faster sea controlada de nuestra parte.<\/li>\n<li>Nueva plataforma CI\/CD para soportar y desplegar aplicaciones en Kubernetes.<\/li>\n<\/ul>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/itsumma\/blog\/465487\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0417\u0430 \u0433\u043e\u0434\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f Pinterest 300 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 200 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 4 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0434\u043e\u0441\u043e\u043a. \u0427\u0442\u043e\u0431\u044b \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0430\u0440\u043c\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043e\u0431\u0448\u0438\u0440\u043d\u0443\u044e \u043a\u043e\u043d\u0442\u0435\u043d\u0442-\u0431\u0430\u0437\u0443, \u043f\u043e\u0440\u0442\u0430\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e CPU, \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u0438\u043c\u0438 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0440\u0443\u0442\u044f\u0442\u0441\u044f \u043d\u0430 \u0446\u0435\u043b\u043e\u043c \u043f\u0430\u0440\u043a\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d. \u0418 \u0432\u043e\u0442 \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b \u043c\u043e\u043c\u0435\u043d\u0442, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28249,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37636","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=\"\u0417\u0430 \u0433\u043e\u0434\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f Pinterest 300 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 200 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 4 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0434\u043e\u0441\u043e\u043a.\" \/>\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\/sozdayom-kubernetes-platformu-v-pinterest\" \/>\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\u0421\u043e\u0437\u0434\u0430\u0451\u043c kubernetes-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0432 Pinterest | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0417\u0430 \u0433\u043e\u0434\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f Pinterest 300 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 200 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 4 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0434\u043e\u0441\u043e\u043a.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest\" \/>\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=\"2019-10-31T19:18:44+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:18:44+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\udd47 Creando una plataforma de kubernetes en Pinterest | ProHoster","description":"A lo largo de los a\u00f1os de existencia de Pinterest, 300 millones de usuarios del servicio han creado m\u00e1s de 200 mil millones de pines en m\u00e1s de 4 mil millones de tableros.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","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\u0421\u043e\u0437\u0434\u0430\u0451\u043c kubernetes-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0432 Pinterest | ProHoster","og:description":"\u0417\u0430 \u0433\u043e\u0434\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f Pinterest 300 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 200 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 4 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0434\u043e\u0441\u043e\u043a.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","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":"2019-10-31T19:18:44+00:00","article:modified_time":"2019-10-31T19:18:44+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37636","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":"2026-02-09 15:30:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:23:06","updated":"2026-02-09 15:30:19","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\/37636","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=37636"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/37636\/revisions"}],"predecessor-version":[{"id":158433,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/37636\/revisions\/158433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/28249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=37636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=37636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=37636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}