{"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\/pt\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","title":{"rendered":"Criando uma plataforma Kubernetes no Pinterest","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Ao longo dos anos, o Pinterest teve 300 milh\u00f5es de usu\u00e1rios que criaram mais de 200 bilh\u00f5es de pins em mais de 4 bilh\u00f5es de pain\u00e9is. Para atender a esse ex\u00e9rcito de usu\u00e1rios e a vasta base de conte\u00fado, o portal desenvolveu milhares de servi\u00e7os, come\u00e7ando por microsservi\u00e7os, que podem ser geridos por algumas CPUs, at\u00e9 gigantescos monolitos que operam em toda uma frota de m\u00e1quinas virtuais. E chegou o momento em que a empresa voltou seu olhar para o k8s. O que fez com que o \u2018cubo\u2019 chamasse a aten\u00e7\u00e3o do Pinterest? Voc\u00ea descobrir\u00e1 lendo nossa tradu\u00e7\u00e3o do recente artigo do <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/pinterest-engineering\">blog de engenharia do Pinterest<\/a><\/noindex>.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Criando uma plataforma Kubernetes no Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/71719121d8d0ed8e284b471c3bcb7328.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAssim, centenas de milh\u00f5es de usu\u00e1rios e centenas de bilh\u00f5es de pins. Para atender a esse ex\u00e9rcito de usu\u00e1rios e a vasta base de conte\u00fado, n\u00f3s desenvolvemos milhares de servi\u00e7os, come\u00e7ando por microsservi\u00e7os, que podem ser geridos por algumas CPUs, at\u00e9 gigantescos monolitos que operam em toda uma frota de m\u00e1quinas virtuais. Al\u00e9m disso, temos diversos frameworks que tamb\u00e9m podem exigir recursos de CPU, mem\u00f3ria ou acesso a opera\u00e7\u00f5es de entrada e sa\u00edda.<\/p>\n<p>Durante o suporte a esse zool\u00f3gico de ferramentas, a equipe de desenvolvimento enfrenta uma s\u00e9rie de problemas:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li>Os engenheiros n\u00e3o t\u00eam uma maneira unificada de iniciar o ambiente de trabalho. Servi\u00e7os sem estado, servi\u00e7os com estado e projetos em fase de desenvolvimento est\u00e3o baseados em pilhas tecnol\u00f3gicas completamente diferentes. Isso levou \u00e0 cria\u00e7\u00e3o de um curso de forma\u00e7\u00e3o para os engenheiros, al\u00e9m de complicar seriamente o trabalho da nossa equipe de infraestrutura.<\/li>\n<li>Desenvolvedores, que possuem sua pr\u00f3pria frota de m\u00e1quinas virtuais, criam uma enorme carga para os administradores internos. Como resultado, opera\u00e7\u00f5es simples, como atualiza\u00e7\u00e3o do SO ou AMI, se estendem por semanas e meses. Isso resulta em um aumento da carga em situa\u00e7\u00f5es que, \u00e0 primeira vista, parecem absolutamente cotidianas.<\/li>\n<li>Dificuldades em criar ferramentas de gerenciamento de infraestrutura globais sobre solu\u00e7\u00f5es j\u00e1 existentes. A situa\u00e7\u00e3o \u00e9 ainda mais complicada pelo fato de que encontrar os propriet\u00e1rios das m\u00e1quinas virtuais n\u00e3o \u00e9 f\u00e1cil. Isso significa que n\u00e3o sabemos se \u00e9 seguro extrair esses recursos para trabalhar em outras \u00e1reas da nossa infraestrutura.<\/li>\n<\/ul>\n<p>\nSistemas de orquestra\u00e7\u00e3o de cont\u00eaineres s\u00e3o uma forma de unificar a gest\u00e3o de cargas de trabalho. Eles abrem caminho para aumentar a velocidade de desenvolvimento e simplificar a gest\u00e3o da infraestrutura, pois todos os recursos envolvidos no projeto s\u00e3o geridos por um \u00fanico sistema centralizado.<\/p>\n<p><img decoding=\"async\" alt=\"Criando uma plataforma Kubernetes no Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/8ce586ab31e593c99310ae2bf2a7bafb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Figura 1: Prioridades da infraestrutura (confiabilidade, desempenho dos desenvolvedores e efici\u00eancia).<\/i><\/p>\n<p>A equipe de Cloud Management Platform do Pinterest conheceu o K8s em 2017. Na primeira metade de 2017, documentamos a maior parte das nossas capacidades de produ\u00e7\u00e3o, incluindo API e todos os nossos <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pt\/server\/\"   title=\"servidores web\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1189\">servidores web<\/a>. Em seguida, realizamos uma avalia\u00e7\u00e3o cuidadosa de diferentes sistemas de orquestra\u00e7\u00e3o de solu\u00e7\u00f5es de cont\u00eaineres, constru\u00e7\u00e3o de clusters e opera\u00e7\u00e3o com eles. No final de 2017, decidimos utilizar o Kubernetes. Ele era flex\u00edvel o suficiente e amplamente suportado pela comunidade de desenvolvedores.<\/p>\n<p>At\u00e9 o momento, criamos nossas pr\u00f3prias ferramentas de inicializa\u00e7\u00e3o do cluster com base no Kops e migramos componentes existentes da infraestrutura para o Kubernetes \u2014 como rede, seguran\u00e7a, m\u00e9tricas, gerenciamento de registros, gest\u00e3o de identidades e tr\u00e1fego. Tamb\u00e9m implementamos um sistema de modelagem de cargas de trabalho para nosso recurso, cuja complexidade \u00e9 oculta dos desenvolvedores. Agora, estamos focados em garantir a estabilidade do cluster, sua escalabilidade e a inclus\u00e3o de novos clientes.<\/p>\n<h4>Kubernetes: o caminho do Pinterest<\/h4>\n<p>\nO in\u00edcio do trabalho com o Kubernetes em grande escala no Pinterest como uma plataforma que seria amada por nossos engenheiros resultou em muitos desafios.<\/p>\n<p>Como uma grande empresa, investimos recursos significativos em ferramentas de infraestrutura. Um exemplo s\u00e3o as ferramentas de seguran\u00e7a, que gerenciam certificados e distribuem chaves, componentes de controle de tr\u00e1fego, sistemas de descoberta de servi\u00e7os, componentes de visibilidade e envio de registros e m\u00e9tricas. Tudo isso foi reunido n\u00e3o por acaso: passamos por um caminho normal de tentativas e erros, e, portanto, quer\u00edamos integrar toda essa estrutura na nova infraestrutura do Kubernetes em vez de reinventar a roda antiga em uma nova plataforma. Essa abordagem, de forma geral, simplificou a migra\u00e7\u00e3o, j\u00e1 que todo o suporte a aplicativos j\u00e1 existe e n\u00e3o precisa ser criado do zero.<\/p>\n<p>Por outro lado, os modelos de previs\u00e3o de carga no pr\u00f3prio Kubernetes (como implanta\u00e7\u00f5es, jobs e sets de Daemon) s\u00e3o insuficientes para o nosso projeto. Esses problemas de usabilidade representam enormes obst\u00e1culos \u00e0 transi\u00e7\u00e3o para o Kubernetes. Por exemplo, ouvimos desenvolvedores de servi\u00e7os reclamando sobre a falta ou configura\u00e7\u00e3o inadequada do acesso. Tamb\u00e9m encontramos um uso incorreto de modelos, quando eram criadas centenas de c\u00f3pias com especifica\u00e7\u00f5es e tarefas id\u00eanticas, o que resultava em problemas de depura\u00e7\u00e3o aterradores.<\/p>\n<p>Al\u00e9m disso, foi muito dif\u00edcil manter diferentes vers\u00f5es em um mesmo cluster. Imagine a complexidade do suporte ao cliente se voc\u00ea precisar trabalhar com v\u00e1rias vers\u00f5es do mesmo ambiente de execu\u00e7\u00e3o, com todos os seus problemas, bugs e atualiza\u00e7\u00f5es.<\/p>\n<h4>Recursos personalizados e controladores do Pinterest<\/h4>\n<p>\nPara facilitar o processo de implementa\u00e7\u00e3o do Kubernetes para nossos engenheiros, al\u00e9m de simplificar a infraestrutura e acelerar seu funcionamento, desenvolvemos nossas pr\u00f3prias defini\u00e7\u00f5es de recursos personalizados (CRD).<\/p>\n<p>As CRDs oferecem as seguintes funcionalidades:<\/p>\n<ol>\n<li>Integra\u00e7\u00e3o de diversos recursos nativos do Kubernetes, para que funcionem como uma \u00fanica carga. Por exemplo, o recurso PinterestService inclui a implanta\u00e7\u00e3o, o servi\u00e7o de entrada e o config map. Isso permite que os desenvolvedores n\u00e3o se preocupem com a configura\u00e7\u00e3o do DNS.<\/li>\n<li>Implementa\u00e7\u00e3o do suporte necess\u00e1rio a aplicativos. O usu\u00e1rio deve se concentrar apenas na especifica\u00e7\u00e3o do cont\u00eainer de acordo com sua l\u00f3gica de neg\u00f3cios, enquanto o controlador da CRD implementa todos os init-containers, vari\u00e1veis de ambiente e especifica\u00e7\u00f5es do pod necess\u00e1rias. Isso proporciona um n\u00edvel de conforto fundamentalmente diferente para os desenvolvedores.<\/li>\n<li>Os controladores de CRDs tamb\u00e9m gerenciam o ciclo de vida de seus pr\u00f3prios recursos e melhoram a disponibilidade da depura\u00e7\u00e3o. Isso inclui a sincroniza\u00e7\u00e3o das especifica\u00e7\u00f5es desejadas e reais, a atualiza\u00e7\u00e3o do status da CRD e o registro de eventos, entre outros. Sem as CRDs, os desenvolvedores seriam for\u00e7ados a gerenciar um conjunto numeroso de recursos, o que aumentaria apenas a probabilidade de erro. <\/li>\n<\/ol>\n<p>\nAqui est\u00e1 um exemplo do PinterestService e de um recurso interno que \u00e9 gerenciado pelo nosso controlador:<\/p>\n<p><img decoding=\"async\" alt=\"Criando uma plataforma Kubernetes no Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/5f76107d023d18f535447a13d41404fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nComo pode ser visto acima, para suportar o cont\u00eainer do usu\u00e1rio, precisamos integrar um cont\u00eainer de inicializa\u00e7\u00e3o e v\u00e1rios complementos para garantir seguran\u00e7a, visibilidade e operabilidade com o tr\u00e1fego da rede. Al\u00e9m disso, criamos modelos de mapas de configura\u00e7\u00e3o e implementamos suporte para modelos de PVC para tarefas em lote, bem como rastreamento de v\u00e1rias vari\u00e1veis de ambiente para monitoramento de identifica\u00e7\u00e3o, consumo de recursos e coleta de \"lixo\".<\/p>\n<p>\u00c9 dif\u00edcil imaginar que os desenvolvedores queiram escrever esses arquivos de configura\u00e7\u00e3o manualmente sem o suporte do CRD, muito menos realizar manuten\u00e7\u00e3o e depura\u00e7\u00e3o das configura\u00e7\u00f5es.<\/p>\n<h4>Fluxo de trabalho de implanta\u00e7\u00e3o de aplicativos<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Criando uma plataforma Kubernetes no Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/08c953d5cf32244733cf4193c1b304bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA figura acima mostra como implantar um recurso personalizado do Pinterest em um cluster Kubernetes:<\/p>\n<ol>\n<li>Os desenvolvedores interagem com nosso cluster Kubernetes atrav\u00e9s da CLI e da interface do usu\u00e1rio.<\/li>\n<li>As ferramentas CLI \/ UI extraem arquivos YAML de configura\u00e7\u00e3o do fluxo de trabalho e outras propriedades de constru\u00e7\u00e3o (a mesma ID de vers\u00e3o) do Artifactory, em seguida, os enviam para o Servi\u00e7o de Submiss\u00e3o de Tarefas. Essa etapa garante que somente vers\u00f5es funcionais sejam entregues ao cluster. <\/li>\n<li>O JSS \u00e9 um gateway para v\u00e1rias plataformas, incluindo Kubernetes. Aqui ocorre a autentica\u00e7\u00e3o do usu\u00e1rio, a atribui\u00e7\u00e3o de quotas e a verifica\u00e7\u00e3o parcial da configura\u00e7\u00e3o do nosso CRD.<\/li>\n<li>Ap\u00f3s a verifica\u00e7\u00e3o do CRD no lado do JSS, as informa\u00e7\u00f5es s\u00e3o enviadas para a API da plataforma k8s.<\/li>\n<li>Nosso controlador CRD monitora eventos em todos os recursos personalizados. Ele transforma o CR em recursos nativos do k8s, adiciona os m\u00f3dulos necess\u00e1rios, define as vari\u00e1veis de ambiente pertinentes e realiza outras tarefas auxiliares, garantindo assim um suporte de infraestrutura adequado para os aplicativos personalizados em cont\u00eainer.<\/li>\n<li>Ent\u00e3o, o controlador CRD envia os dados recebidos para a API do Kubernetes para que sejam processados pelo agendador e colocados em opera\u00e7\u00e3o.<\/li>\n<\/ol>\n<p>\n<b>Nota<\/b>: este fluxo de trabalho de pr\u00e9-lan\u00e7amento para deployment foi criado para os primeiros usu\u00e1rios da nova plataforma k8s. Atualmente, estamos em processo de aprimoramento desse processo para nos integrar completamente com nosso novo CI\/CD. Isso significa que n\u00e3o podemos compartilhar tudo relacionado ao Kubernetes. Estamos ansiosos para compartilhar nossa experi\u00eancia e falar sobre o progresso da equipe nessa \u00e1rea em nossa pr\u00f3xima postagem no blog \"Construindo uma plataforma de CI\/CD para Pinterest\".<\/p>\n<h4>Tipos de recursos especiais<\/h4>\n<p>\nCom base nas necessidades espec\u00edficas do Pinterest, desenvolvemos os seguintes CRDs que se adequam a diferentes fluxos de trabalho:<\/p>\n<ul>\n<li>PinterestService \u2014 s\u00e3o servi\u00e7os stateless que j\u00e1 operam h\u00e1 bastante tempo. Muitos dos nossos sistemas principais s\u00e3o baseados em um conjunto desses servi\u00e7os.<\/li>\n<li>PinterestJobSet modela tarefas em lote de ciclo completo. No Pinterest, h\u00e1 um cen\u00e1rio comum em que v\u00e1rias tarefas executam os mesmos cont\u00eaineres em paralelo, independentemente de outros processos semelhantes.<\/li>\n<li>PinterestCronJob \u00e9 amplamente utilizado em conjunto com pequenas cargas de trabalho peri\u00f3dicas. \u00c9 uma camada sobre a funcionalidade nativa do cron, com mecanismos de suporte do Pinterest que cuidam da seguran\u00e7a, tr\u00e1fego, logs e m\u00e9tricas.<\/li>\n<li>PinterestDaemon inclui daemons de infraestrutura. Esta fam\u00edlia continua a crescer \u00e0 medida que adicionamos mais suporte para nossos clusters.<\/li>\n<li>PinterestTrainingJob abrange processos Tensorflow e Pytorch, proporcionando o mesmo n\u00edvel de suporte durante a execu\u00e7\u00e3o que outros CRDs. Como o Pinterest utiliza ativamente Tensorflow e outros sistemas de aprendizado de m\u00e1quina, t\u00ednhamos raz\u00f5es para construir um CRD separado em torno deles.<\/li>\n<\/ul>\n<p>\nTamb\u00e9m estamos trabalhando no PinterestStatefulSet, que em breve ser\u00e1 adaptado para armazenamento de dados e outros sistemas stateful.<\/p>\n<h4>Suporte ao ambiente de execu\u00e7\u00e3o<\/h4>\n<p>\nQuando um m\u00f3dulo de aplicativos \u00e9 iniciado no Kubernetes, ele recebe automaticamente um certificado para se identificar. Este certificado \u00e9 usado para acessar um reposit\u00f3rio de segredos ou para se comunicar com outros servi\u00e7os via mTLS. Enquanto isso, o configurador de inicializa\u00e7\u00e3o de cont\u00eaineres e o Daemon carregam todas as depend\u00eancias necess\u00e1rias antes de iniciar o aplicativo em cont\u00eainer. Quando tudo estiver pronto, o sidecar de tr\u00e1fego e o Daemon registrar\u00e3o o endere\u00e7o IP do m\u00f3dulo em nosso Zookeeper, para que os clientes possam descobri-lo. Tudo isso funcionar\u00e1, pois o m\u00f3dulo de rede foi configurado antes do in\u00edcio do aplicativo.<\/p>\n<p>Acima est\u00e3o exemplos t\u00edpicos de suporte a cargas de trabalho em tempo de execu\u00e7\u00e3o. Para outros tipos de cargas de trabalho, pode ser necess\u00e1rio um suporte ligeiramente diferente, mas todos eles s\u00e3o apresentados na forma de sidecar em n\u00edvel de pod, nos n\u00f3s ou por Daemons em n\u00edvel de m\u00e1quinas virtuais. Estamos garantindo que tudo isso seja implantado dentro da infraestrutura de gerenciamento e esteja alinhado entre os aplicativos, o que, em \u00faltima an\u00e1lise, reduz significativamente a carga em termos de trabalho t\u00e9cnico e suporte ao cliente.<\/p>\n<h4>Testes e QA<\/h4>\n<p>\nConstru\u00edmos um pipeline de teste de ponta a ponta sobre a infraestrutura de teste existente do Kubernetes. Esses testes se aplicam a todos os nossos clusters. Nosso pipeline passou por v\u00e1rias reformula\u00e7\u00f5es antes de se tornar parte do cluster de produto.<\/p>\n<p>Al\u00e9m dos sistemas de teste, temos sistemas de monitoramento e alerta que acompanham constantemente o estado dos componentes do sistema, o consumo de recursos e outros indicadores importantes, nos notificando somente quando h\u00e1 necessidade de interven\u00e7\u00e3o humana.<\/p>\n<h4>Alternativas<\/h4>\n<p>\nConsideramos algumas alternativas aos recursos personalizados, como controladores de acesso mutacional e sistemas de template. No entanto, todas elas envolvem dificuldades significativas em sua implementa\u00e7\u00e3o, ent\u00e3o optamos pelo caminho do CRD.<\/p>\n<p>O controlador de acesso mutacional foi utilizado para introduzir sidecars, vari\u00e1veis de ambiente e outros suportes durante a execu\u00e7\u00e3o. No entanto, ele enfrentava v\u00e1rios problemas, como vincula\u00e7\u00e3o de recursos e gerenciamento de seu ciclo de vida, enquanto no CRD esses problemas n\u00e3o ocorrem.<\/p>\n<p><b>Nota:<\/b> Sistemas de templates, como os diagramas Helm, tamb\u00e9m s\u00e3o amplamente utilizados para iniciar aplica\u00e7\u00f5es com configura\u00e7\u00f5es semelhantes. No entanto, nossas aplica\u00e7\u00f5es de trabalho s\u00e3o muito diversas para serem gerenciadas por templates. Al\u00e9m disso, durante a implanta\u00e7\u00e3o cont\u00ednua com o uso de templates, haver\u00e1 muitos erros.<\/p>\n<h4>Trabalho em andamento<\/h4>\n<p>\nAtualmente, estamos lidando com uma carga de trabalho mista em todos os nossos clusters. Para suportar processos de diferentes tipos e tamanhos, estamos trabalhando nas seguintes dire\u00e7\u00f5es:<\/p>\n<ul>\n<li>Um conjunto de clusters distribui grandes aplica\u00e7\u00f5es entre diferentes clusters para garantir escalabilidade e estabilidade.<\/li>\n<li>Garantir a estabilidade, escalabilidade e visibilidade do cluster para estabelecer a conex\u00e3o entre a aplica\u00e7\u00e3o e seu SLA.<\/li>\n<li>Gerenciamento de recursos e cotas, para que as aplica\u00e7\u00f5es n\u00e3o entrem em conflito entre si, enquanto o tamanho do cluster \u00e9 controlado de nossa parte.<\/li>\n<li>Nova plataforma CI\/CD para suporte e implanta\u00e7\u00e3o de aplica\u00e7\u00f5es no Kubernetes.<\/li>\n<\/ul>\n<p>Fonte: <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.3 - 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\/pt\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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\udd47Criando uma plataforma kubernetes no Pinterest | ProHoster","description":"Ao longo dos anos de exist\u00eancia do Pinterest, 300 milh\u00f5es de usu\u00e1rios do servi\u00e7o criaram mais de 200 bilh\u00f5es de pins em mais de 4 bilh\u00f5es de pain\u00e9is.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/37636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=37636"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/37636\/revisions"}],"predecessor-version":[{"id":158433,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/37636\/revisions\/158433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/28249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=37636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=37636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=37636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}