{"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\/fr\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","title":{"rendered":"Cr\u00e9er une plateforme Kubernetes sur Pinterest","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Au fil des ans, 300 millions d'utilisateurs de Pinterest ont cr\u00e9\u00e9 plus de 200 milliards de pins sur plus de 4 milliards de tableaux. Pour g\u00e9rer cette arm\u00e9e d'utilisateurs et cette vaste base de contenu, le portail a d\u00e9velopp\u00e9 des milliers de services, allant des microservices capables de fonctionner avec quelques CPU \u00e0 d'\u00e9normes monolithes fonctionnant sur un parc entier de machines virtuelles. Et c'est \u00e0 ce moment-l\u00e0 que l'attention de l'entreprise s'est tourn\u00e9e vers k8s. Qu'est-ce qui a attir\u00e9 Pinterest vers le 'cube' ? Vous le d\u00e9couvrirez dans notre traduction d'un r\u00e9cent article de <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/pinterest-engineering\">le blog d'ing\u00e9nierie de Pinterest<\/a><\/noindex>.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Cr\u00e9er une plateforme Kubernetes sur Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/71719121d8d0ed8e284b471c3bcb7328.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAinsi, des centaines de millions d'utilisateurs et des centaines de milliards de pins. Pour g\u00e9rer cette arm\u00e9e d'utilisateurs et cette vaste base de contenu, nous avons d\u00e9velopp\u00e9 des milliers de services, allant des microservices capables de fonctionner avec quelques CPU \u00e0 d'\u00e9normes monolithes fonctionnant sur un parc entier de machines virtuelles. De plus, nous avons divers frameworks qui peuvent \u00e9galement exiger des ressources CPU, de la m\u00e9moire ou un acc\u00e8s aux op\u00e9rations d'entr\u00e9e-sortie.<\/p>\n<p>Dans le cadre du soutien \u00e0 cet \u00e9ventail d'outils, l'\u00e9quipe de d\u00e9veloppement est confront\u00e9e \u00e0 plusieurs probl\u00e8mes :<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li>Les ing\u00e9nieurs n'ont pas de m\u00e9thode unifi\u00e9e pour lancer un environnement de travail. Les services sans \u00e9tat, les services avec \u00e9tat et les projets en cours de d\u00e9veloppement reposent sur des stacks technologiques totalement diff\u00e9rents. Cela a conduit \u00e0 la cr\u00e9ation d'un cours de formation complet pour les ing\u00e9nieurs, tout en compliquant gravement le travail de notre \u00e9quipe d'infrastructure.<\/li>\n<li>Les d\u00e9veloppeurs, disposant de leur propre parc de machines virtuelles, imposent une charge \u00e9norme sur les administrateurs internes. Ainsi, des op\u00e9rations aussi simples que la mise \u00e0 jour du syst\u00e8me d'exploitation ou de l'AMI peuvent s'\u00e9tendre sur des semaines et des mois. Cela conduit \u00e0 une charge accrue dans des situations qui, par ailleurs, devraient \u00eatre banales.<\/li>\n<li>Difficult\u00e9s \u00e0 cr\u00e9er des outils de gestion d'infrastructure globaux au-dessus des solutions existantes. La situation est encore compliqu\u00e9e par le fait qu'il n'est pas facile de trouver les propri\u00e9taires des machines virtuelles, c'est-\u00e0-dire que nous ne savons pas si nous pouvons r\u00e9cup\u00e9rer ces ressources pour les utiliser dans d'autres parties de notre infrastructure.<\/li>\n<\/ul>\n<p>\nLes syst\u00e8mes d'orchestration de conteneurs sont un moyen d'unifier la gestion des charges de travail. Ils vous permettent d'acc\u00e9l\u00e9rer le d\u00e9veloppement et simplifient la gestion de l'infrastructure, car toutes les ressources impliqu\u00e9es dans le projet sont g\u00e9r\u00e9es par un syst\u00e8me centralis\u00e9.<\/p>\n<p><img decoding=\"async\" alt=\"Cr\u00e9er une plateforme Kubernetes sur Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/8ce586ab31e593c99310ae2bf2a7bafb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Figure 1 : Priorit\u00e9s de l'infrastructure (fiabilit\u00e9, performance des d\u00e9veloppeurs et efficacit\u00e9).<\/i><\/p>\n<p>L'\u00e9quipe Cloud Management Platform chez Pinterest a d\u00e9couvert K8s en 2017. Au d\u00e9but de l\u2019ann\u00e9e 2017, nous avons document\u00e9 la majeure partie de nos capacit\u00e9s de production, notamment, l'API et tous nos <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/fr\/server\/\"   title=\"serveurs web\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1189\">serveurs web<\/a>. Ensuite, nous avons proc\u00e9d\u00e9 \u00e0 une \u00e9valuation minutieuse de diff\u00e9rents syst\u00e8mes d'orchestration de solutions contenues, de la construction de clusters et de leur fonctionnement. \u00c0 la fin de 2017, nous avons d\u00e9cid\u00e9 d'adopter Kubernetes. Il \u00e9tait assez flexible et largement soutenu par la communaut\u00e9 des d\u00e9veloppeurs.<\/p>\n<p>\u00c0 ce jour, nous avons cr\u00e9\u00e9 nos propres outils de d\u00e9ploiement initial du cluster bas\u00e9 sur Kops et migr\u00e9 vers Kubernetes les composants existants de l'infrastructure, tels que le r\u00e9seau, la s\u00e9curit\u00e9, la mesure, la journalisation, la gestion des identit\u00e9s et le trafic. Nous avons \u00e9galement mis en place un syst\u00e8me de mod\u00e9lisation des charges de travail pour notre ressource, dont la complexit\u00e9 est cach\u00e9e aux d\u00e9veloppeurs. Nous nous concentrons maintenant sur la garantie de la stabilit\u00e9 du cluster, son \u00e9volutivit\u00e9 et l'int\u00e9gration de nouveaux clients.<\/p>\n<h4>Kubernetes : le parcours de Pinterest<\/h4>\n<p>\nLe d\u00e9marrage de Kubernetes \u00e0 l'\u00e9chelle de Pinterest en tant que plateforme appr\u00e9ci\u00e9e par nos ing\u00e9nieurs a entra\u00een\u00e9 de nombreuses difficult\u00e9s.<\/p>\n<p>En tant que grande entreprise, nous avons investi des ressources consid\u00e9rables dans les outils d'infrastructure. On peut citer les outils de s\u00e9curit\u00e9 qui traitent les certificats et distribuent les cl\u00e9s, les composants de contr\u00f4le du trafic, les syst\u00e8mes de d\u00e9tection des services, les composants de visibilit\u00e9 et d'envoi de journaux et de m\u00e9triques. Tout cela n\u2019a pas \u00e9t\u00e9 assembl\u00e9 par hasard : nous avons suivi un parcours normal d'essais et d'erreurs, et nous avons donc voulu int\u00e9grer tout cela dans la nouvelle infrastructure sur Kubernetes au lieu de r\u00e9inventer la roue sur une nouvelle plateforme. Cette approche a globalement simplifi\u00e9 la migration, car tout le soutien des applications existe d\u00e9j\u00e0 et n\u2019a pas besoin d\u2019\u00eatre cr\u00e9\u00e9 de toutes pi\u00e8ces.<\/p>\n<p>D'un autre c\u00f4t\u00e9, les mod\u00e8les de pr\u00e9vision de charge dans Kubernetes lui-m\u00eame (comme les d\u00e9ploiements, les jobs et les ensembles Daemon) sont insuffisants pour notre projet. Ces probl\u00e8mes d'ergonomie repr\u00e9sentent d'\u00e9normes obstacles \u00e0 la transition vers Kubernetes. Par exemple, nous avons entendu des d\u00e9veloppeurs de services se plaindre de l'absence ou de la mauvaise configuration des entr\u00e9es. Nous avons \u00e9galement rencontr\u00e9 des probl\u00e8mes d'utilisation inappropri\u00e9e des g\u00e9n\u00e9rateurs de mod\u00e8les, cr\u00e9ant des centaines de copies avec des sp\u00e9cifications et des t\u00e2che identiques, ce qui a entra\u00een\u00e9 des probl\u00e8mes de d\u00e9bogage consid\u00e9rables.<\/p>\n<p>Il \u00e9tait \u00e9galement tr\u00e8s difficile de prendre en charge diff\u00e9rentes versions dans un m\u00eame cluster. Imaginez la complexit\u00e9 du support client si vous devez travailler simultan\u00e9ment avec plusieurs versions du m\u00eame environnement d'ex\u00e9cution, avec tous leurs probl\u00e8mes, bugs et mises \u00e0 jour.<\/p>\n<h4>Ressources et contr\u00f4leurs personnalis\u00e9s de Pinterest<\/h4>\n<p>\nPour faciliter le processus d'impl\u00e9mentation de Kubernetes pour nos ing\u00e9nieurs, ainsi que pour simplifier l'infrastructure et acc\u00e9l\u00e9rer son fonctionnement, nous avons d\u00e9velopp\u00e9 nos propres d\u00e9finitions de ressources personnalis\u00e9es (CRD).<\/p>\n<p>Les CRD offrent les fonctionnalit\u00e9s suivantes :<\/p>\n<ol>\n<li>L'unification de diverses ressources natives Kubernetes pour qu'elles fonctionnent comme une seule charge. Par exemple, la ressource PinterestService inclut un d\u00e9ploiement, un service d'entr\u00e9e et une carte de configuration. Cela permet aux d\u00e9veloppeurs de ne pas se soucier de la configuration DNS.<\/li>\n<li>L'impl\u00e9mentation du support d'application n\u00e9cessaire. L'utilisateur doit se concentrer uniquement sur la sp\u00e9cification du conteneur selon sa logique m\u00e9tier, tandis que le contr\u00f4leur CRD impl\u00e9mente tous les conteneurs init n\u00e9cessaires, les variables d'environnement et les sp\u00e9cifications du pod. Cela offre un niveau de confort fondamentalement diff\u00e9rent pour les d\u00e9veloppeurs.<\/li>\n<li>Les contr\u00f4leurs CRD g\u00e8rent \u00e9galement le cycle de vie des ressources propri\u00e9taires et am\u00e9liorent la disponibilit\u00e9 du d\u00e9bogage. Cela inclut l'harmonisation des sp\u00e9cifications souhait\u00e9es et r\u00e9elles, la mise \u00e0 jour du statut CRD et la gestion des journaux d'\u00e9v\u00e9nements et plus encore. Sans CRD, les d\u00e9veloppeurs devraient g\u00e9rer un grand nombre de ressources, augmentant ainsi les risques d\u2019erreurs. <\/li>\n<\/ol>\n<p>\nVoici un exemple de PinterestService et d'une ressource interne g\u00e9r\u00e9e par notre contr\u00f4leur :<\/p>\n<p><img decoding=\"async\" alt=\"Cr\u00e9er une plateforme Kubernetes sur Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/5f76107d023d18f535447a13d41404fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nComme mentionn\u00e9 ci-dessus, pour supporter le conteneur utilisateur, nous devons int\u00e9grer un conteneur d'initialisation et plusieurs extensions afin d'assurer la s\u00e9curit\u00e9, la visibilit\u00e9 et la gestion du trafic r\u00e9seau. De plus, nous avons cr\u00e9\u00e9 des mod\u00e8les de cartes de configuration et mis en \u0153uvre un support pour les mod\u00e8les PVC pour les t\u00e2ches en lot, ainsi qu'un suivi de nombreuses variables d'environnement pour surveiller l'identification, la consommation de ressources et la collecte de \"d\u00e9chets\".<\/p>\n<p>Il est difficile d'imaginer que les d\u00e9veloppeurs souhaitent r\u00e9diger ces fichiers de configuration manuellement sans support CRD, sans parler du maintien et du d\u00e9bogage ult\u00e9rieurs des configurations.<\/p>\n<h4>Flux de d\u00e9ploiement des applications<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Cr\u00e9er une plateforme Kubernetes sur Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/08c953d5cf32244733cf4193c1b304bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL'illustration ci-dessus montre comment d\u00e9ployer une ressource personnalis\u00e9e Pinterest dans un cluster Kubernetes :<\/p>\n<ol>\n<li>Les d\u00e9veloppeurs interagissent avec notre cluster Kubernetes via CLI et interface utilisateur.<\/li>\n<li>Les outils CLI \/ UI extraient les fichiers YAML de configuration du flux de travail et d'autres propri\u00e9t\u00e9s de construction (le m\u00eame identifiant de version) \u00e0 partir d'Artifactory, puis les envoient au Job Submission Service. Cette \u00e9tape garantit que seules les versions fonctionnelles seront mises en place dans le cluster. <\/li>\n<li>JSS sert de passerelle pour diverses plateformes, y compris Kubernetes. C'est ici que s'effectue l'authentification de l'utilisateur, l'attribution de quotas et une v\u00e9rification partielle de la configuration de notre CRD.<\/li>\n<li>Apr\u00e8s v\u00e9rification du CRD c\u00f4t\u00e9 JSS, les informations sont envoy\u00e9es \u00e0 l'API de la plateforme k8s.<\/li>\n<li>Notre contr\u00f4leur CRD surveille les \u00e9v\u00e9nements sur toutes les ressources personnalis\u00e9es. Il convertit le CR en ressources natives k8s, ajoute les modules n\u00e9cessaires, d\u00e9finit les variables d'environnement appropri\u00e9es et effectue d'autres t\u00e2ches auxiliaires, garantissant ainsi un soutien infrastructurel suffisant pour les applications conteneuris\u00e9es personnalis\u00e9es.<\/li>\n<li>Ensuite, le contr\u00f4leur CRD transmet les donn\u00e9es re\u00e7ues \u00e0 l'API Kubernetes afin qu'elles soient trait\u00e9es par le planificateur et mises en \u0153uvre.<\/li>\n<\/ol>\n<p>\n<b>Remarque<\/b>: ce workflow de d\u00e9ploiement en pr\u00e9version a \u00e9t\u00e9 cr\u00e9\u00e9 pour les premiers utilisateurs de la nouvelle plateforme k8s. Nous sommes actuellement en train d'affiner ce processus afin de l'int\u00e9grer enti\u00e8rement \u00e0 notre nouveau CI\/CD. Cela signifie que nous ne pouvons pas tout partager sur Kubernetes. Nous sommes impatients de pouvoir partager notre exp\u00e9rience et de parler des progr\u00e8s de l'\u00e9quipe dans ce domaine dans notre prochain billet de blog \u00ab Building a CI\/CD platform for Pinterest \u00bb.<\/p>\n<h4>Types de ressources sp\u00e9ciales<\/h4>\n<p>\nEn fonction des besoins sp\u00e9cifiques de Pinterest, nous avons d\u00e9velopp\u00e9 les CRD suivants, adapt\u00e9s \u00e0 divers workflows :<\/p>\n<ul>\n<li>PinterestService est un service stateless qui fonctionne depuis longtemps. De nombreux syst\u00e8mes de base reposent sur un ensemble de ces services.<\/li>\n<li>PinterestJobSet mod\u00e9lise des t\u00e2ches par lots de cycle complet. Chez Pinterest, un sc\u00e9nario courant consiste \u00e0 lancer plusieurs t\u00e2ches avec les m\u00eames conteneurs en parall\u00e8le, ind\u00e9pendamment d'autres processus similaires.<\/li>\n<li>PinterestCronJob est largement utilis\u00e9 avec de petites charges de travail p\u00e9riodiques. C'est une enveloppe pour le traitement natif cron avec des m\u00e9canismes de support sp\u00e9cifiques \u00e0 Pinterest, responsables de la s\u00e9curit\u00e9, du trafic, des journaux et des m\u00e9triques.<\/li>\n<li>PinterestDaemon inclut des Daemons d'infrastructure. Cette famille continue de cro\u00eetre alors que nous ajoutons de plus en plus de support pour nos clusters.<\/li>\n<li>PinterestTrainingJob couvre les processus Tensorflow et Pytorch, offrant le m\u00eame niveau de support en phase d'ex\u00e9cution que tous les autres CRD. \u00c9tant donn\u00e9 que Pinterest utilise activement Tensorflow et d'autres syst\u00e8mes de machine learning, il \u00e9tait logique de cr\u00e9er une CRD distincte autour d'eux.<\/li>\n<\/ul>\n<p>\nNous travaillons \u00e9galement sur PinterestStatefulSet, qui sera bient\u00f4t adapt\u00e9 pour les syst\u00e8mes de stockage de donn\u00e9es et d'autres syst\u00e8mes stateful.<\/p>\n<h4>Support de l'environnement d'ex\u00e9cution<\/h4>\n<p>\nLorsque le module d'application est lanc\u00e9 dans Kubernetes, il obtient automatiquement un certificat pour s'identifier. Ce certificat est utilis\u00e9 pour acc\u00e9der au stockage secret ou pour communiquer avec d'autres services via mTLS. Parall\u00e8lement, le configurateur d'initialisation des conteneurs et le Daemon chargent toutes les d\u00e9pendances n\u00e9cessaires avant de lancer l'application de conteneur. Lorsque tout est pr\u00eat, le sidecar du trafic et le Daemon enregistrent l'adresse IP du module dans notre Zookeeper, afin que les clients puissent le d\u00e9couvrir. Tout cela fonctionnera, car le module r\u00e9seau a \u00e9t\u00e9 configur\u00e9 avant le lancement de l'application.<\/p>\n<p>Les exemples ci-dessus illustrent des cas typiques de support des charges de travail pendant l'ex\u00e9cution. D'autres types de charges de travail peuvent n\u00e9cessiter un soutien l\u00e9g\u00e8rement diff\u00e9rent, mais tous sont pr\u00e9sent\u00e9s sous forme de sidecar au niveau du pod, de n\u0153uds ou de Daemons au niveau de machines virtuelles. Nous veillons \u00e0 ce que tout cela soit d\u00e9ploy\u00e9 au sein de l'infrastructure de gestion et harmonis\u00e9 entre les applications, ce qui r\u00e9duit consid\u00e9rablement la charge en termes de travaux techniques et de support client.<\/p>\n<h4>Tests et QA<\/h4>\n<p>\nNous avons constitu\u00e9 un pipeline de tests end-to-end sur l'infrastructure de test Kubernetes existante. Ces tests s'\u00e9tendent \u00e0 tous nos clusters. Notre pipeline a subi de nombreuses refontes avant de devenir partie int\u00e9grante du cluster produit.<\/p>\n<p>En plus des syst\u00e8mes de test, nous avons des syst\u00e8mes de surveillance et d'alerte qui suivent en permanence l'\u00e9tat des composants du syst\u00e8me, la consommation des ressources et d'autres indicateurs importants, nous alertant uniquement en cas de besoin d'intervention humaine.<\/p>\n<h4>Alternatives<\/h4>\n<p>\nNous avons examin\u00e9 certaines alternatives aux ressources personnalis\u00e9es, telles que les contr\u00f4leurs d'acc\u00e8s mutationnels et les syst\u00e8mes de mod\u00e8les. Cependant, toutes sont lourdes en termes de gestion, c'est pourquoi nous avons opt\u00e9 pour la voie des CRD.<\/p>\n<p>Le contr\u00f4leur d'acc\u00e8s mutationnel a \u00e9t\u00e9 utilis\u00e9 pour introduire des sidecars, des variables d'environnement et d'autres supports pendant l'ex\u00e9cution. Cependant, il a rencontr\u00e9 divers probl\u00e8mes, tels que le couplage des ressources et la gestion de leur cycle de vie, ce qui n'est pas un probl\u00e8me rencontr\u00e9 avec les CRD.<\/p>\n<p><b>Remarque :<\/b> Les syst\u00e8mes de mod\u00e8les, tels que les diagrammes Helm, sont \u00e9galement largement utilis\u00e9s pour d\u00e9ployer des applications avec des configurations similaires. Cependant, nos applications fonctionnelles sont trop vari\u00e9es pour \u00eatre g\u00e9r\u00e9es par des mod\u00e8les. De plus, lors du d\u00e9ploiement continu utilisant des mod\u00e8les, trop d'erreurs se produiront.<\/p>\n<h4>Travail \u00e0 venir<\/h4>\n<p>\nNous faisons face \u00e0 une charge mixte sur tous nos clusters. Pour supporter de tels processus de diff\u00e9rentes types et tailles, nous travaillons dans les domaines suivants :<\/p>\n<ul>\n<li>L'ensemble de clusters r\u00e9partit de grandes applications sur diff\u00e9rents clusters pour garantir l'\u00e9volutivit\u00e9 et la stabilit\u00e9.<\/li>\n<li>Assurer la stabilit\u00e9, l'\u00e9volutivit\u00e9 et la visibilit\u00e9 du cluster pour \u00e9tablir le lien entre l'application et son SLA.<\/li>\n<li>Gestion des ressources et des quotas, afin que les applications ne rentrent pas en conflit entre elles et que l'\u00e9chelle du cluster soit contr\u00f4l\u00e9e de notre c\u00f4t\u00e9.<\/li>\n<li>Nouvelle plateforme CI\/CD pour le soutien et le d\u00e9ploiement d'applications dans Kubernetes.<\/li>\n<\/ul>\n<p>Source : <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\/fr\/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=\"fr_FR\" \/>\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\/fr\/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\udd47Cr\u00e9ation d'une plateforme Kubernetes sur Pinterest | ProHoster","description":"Au fil des ans, Pinterest a vu 300 millions d'utilisateurs cr\u00e9er plus de 200 milliards de plaques sur plus de 4 milliards de tableaux.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/37636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=37636"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/37636\/revisions"}],"predecessor-version":[{"id":158433,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/37636\/revisions\/158433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/28249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=37636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=37636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=37636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}