{"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\/de\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","title":{"rendered":"Wir erstellen eine Kubernetes-Plattform bei Pinterest","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Im Laufe der Jahre hat Pinterest 300 Millionen Nutzer, die \u00fcber 200 Milliarden Pins auf mehr als 4 Milliarden Pinnw\u00e4nden erstellt haben. Um diesen enormen Nutzerstamm und das umfangreiche Content-Portfolio zu unterst\u00fctzen, hat die Plattform Tausende von Diensten entwickelt. Diese reichen von Mikroservices, die mit wenigen CPUs auskommen, bis hin zu riesigen Monolithen, die auf einem ganzen Park virtueller Maschinen laufen. Und dann kam der Moment, als das Unternehmen den Blick auf Kubernetes richtete. Was hat es \u201ePinterest\u201c an diesem \u201eKuben\u201c gereizt? Dies erfahren Sie in unserem Artikel aus der <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/pinterest-engineering\">Pinterest Engineering-Blog<\/a><\/noindex>.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Wir erstellen eine Kubernetes-Plattform bei Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/71719121d8d0ed8e284b471c3bcb7328.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlso, Hunderte Millionen Nutzer und Hunderte von Milliarden Pins. Um diese Nutzergemeinschaft und das umfangreiche Content-Portfolio zu bedienen, haben wir Tausende von Diensten entwickelt, von Mikroservices, die mit wenigen CPUs auskommen, bis hin zu gro\u00dfen Monolithen, die auf einem umfangreichen Park virtueller Maschinen betrieben werden. Dar\u00fcber hinaus nutzen wir verschiedene Frameworks, die ebenfalls CPU, Speicher oder Zugriff auf Ein- und Ausgabeoperationen erfordern k\u00f6nnen.<\/p>\n<p>Bei der Unterst\u00fctzung dieses Tool-Zoos sieht sich das Entwicklungsteam mit einer Reihe von Herausforderungen konfrontiert:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li>Die Ingenieure haben keinen einheitlichen Ansatz zur Bereitstellung von Arbeitsumgebungen. Stateless-Dienste, Stateful-Dienste und in aktiver Entwicklung befindliche Projekte basieren auf v\u00f6llig unterschiedlichen Technologiestacks. Dies hat zur Erstellung eines umfassenden Schulungskurses f\u00fcr Ingenieure gef\u00fchrt und erschwert die Arbeit unseres Infrastrukturteams erheblich.<\/li>\n<li>Entwickler, die \u00fcber einen eigenen Pool von virtuellen Maschinen verf\u00fcgen, setzen die internen Administratoren stark unter Druck. So werden selbst einfache Aufgaben wie das Aktualisieren des Betriebssystems oder der AMI \u00fcber Wochen und Monate hinausgezogen. Dies f\u00fchrt zu einer erh\u00f6hten Belastung in scheinbar allt\u00e4glichen Situationen.<\/li>\n<li>Herausforderungen bei der Schaffung globaler Infrastrukturmanagement-Tools \u00fcber bereits bestehende L\u00f6sungen hinweg. Die Situation wird zus\u00e4tzlich kompliziert, da es schwierig ist, die Eigent\u00fcmer der virtuellen Maschinen zu identifizieren. Das bedeutet, dass wir nicht wissen, ob es sicher ist, diese Ressourcen f\u00fcr andere Bereiche unserer Infrastruktur abzuziehen.<\/li>\n<\/ul>\n<p>\nContainer-Orchestrierungssysteme bieten eine einheitliche Methode zur Verwaltung von Arbeitslasten. Sie erm\u00f6glichen es Ihnen, die Entwicklungszeit zu verk\u00fcrzen und erleichtern die Verwaltung der Infrastruktur, da alle f\u00fcr das Projekt ben\u00f6tigten Ressourcen von einem zentralen System gesteuert werden.<\/p>\n<p><img decoding=\"async\" alt=\"Wir erstellen eine Kubernetes-Plattform bei Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/8ce586ab31e593c99310ae2bf2a7bafb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Abbildung 1: Infrastrukturpriorit\u00e4ten (Zuverl\u00e4ssigkeit, Entwicklergeschwindigkeit und Effizienz).<\/i><\/p>\n<p>Das Cloud Management Platform-Team von Pinterest kam 2017 mit K8s in Kontakt. Bis zur ersten H\u00e4lfte von 2017 hatten wir den Gro\u00dfteil unserer Produktionsumgebungen dokumentiert, einschlie\u00dflich der API und aller unserer <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/de\/server\/\"   title=\"Webserver\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1189\">Webserver<\/a>. Danach f\u00fchrten wir eine gr\u00fcndliche Bewertung verschiedener Container-Orchestrierungssysteme, Clusteraufbau und deren Betrieb durch. Ende 2017 entschieden wir uns f\u00fcr Kubernetes, da es ausreichend flexibel war und breit in der Entwicklergemeinde unterst\u00fctzt wurde.<\/p>\n<p>Bis heute haben wir unsere eigenen Tools f\u00fcr die prim\u00e4re Cluster-Bereitstellung auf Basis von Kops entwickelt und bestehende Infrastrukturkomponenten wie Netzwerke, Sicherheit, Monitoring, Logging, Identit\u00e4tsmanagement und Traffic in Kubernetes \u00fcberf\u00fchrt. Zudem haben wir ein System zur Modellierung von Arbeitslasten f\u00fcr unsere Ressourcen implementiert, dessen Komplexit\u00e4t f\u00fcr die Entwickler verborgen bleibt. Aktuell konzentrieren wir uns auf die Stabilit\u00e4t des Clusters, dessen Skalierung und die Anbindung neuer Kunden.<\/p>\n<h4>Kubernetes: der Weg von Pinterest<\/h4>\n<p>\nDie Einf\u00fchrung von Kubernetes in der Skalierung von Pinterest als Plattform, die bei unseren Ingenieuren beliebt sein soll, brachte zahlreiche Herausforderungen mit sich.<\/p>\n<p>Als gro\u00dfes Unternehmen haben wir erhebliche Mittel in infrastrukturelle Werkzeuge investiert. Beispielsweise verf\u00fcgen wir \u00fcber Sicherheitsinstrumente, die Zertifikate verarbeiten und Schl\u00fcssel verteilen, Komponenten f\u00fcr die Verkehrs\u00fcberwachung, Systeme zur Erkennung von Diensten sowie Elemente zur Sichtbarkeit und zum Senden von Protokollen und Metriken. All dies wurde nicht ohne Grund zusammengestellt: Wir haben einen normalen Prozess von Versuch und Irrtum durchlaufen und wollten daher all diese Ressourcen in eine neue Infrastruktur auf Kubernetes integrieren, anstatt das alte Rad auf einer neuen Plattform neu zu erfinden. Dieser Ansatz hat die Migration insgesamt vereinfacht, da die gesamte Anwendungsunterst\u00fctzung bereits vorhanden ist und nicht von Grund auf neu geschaffen werden muss.<\/p>\n<p>Andererseits sind die Prognosemodelle f\u00fcr Lasten im Kubernetes (zum Beispiel Bereitstellungen, Jobs und Daemon-Sets) f\u00fcr unser Projekt unzureichend. Diese Usability-Probleme stellen ein enormes Hindernis f\u00fcr den Wechsel zu Kubernetes dar. Wir haben beispielsweise geh\u00f6rt, wie Entwickler von Diensten sich \u00fcber fehlende oder falsche Einstellungen des Zugangs beschweren. Au\u00dferdem haben wir uns mit einer fehlerhaften Nutzung von Templates konfrontiert gesehen, bei der Hunderte von Kopien mit identischer Spezifikation und Aufgabe erstellt wurden, was zu schrecklichen Debugging-Problemen f\u00fchrte.<\/p>\n<p>Es war auch sehr schwierig, verschiedene Versionen im selben Cluster zu unterst\u00fctzen. Stellen Sie sich die Komplexit\u00e4t des Kundensupports vor, wenn Sie gleichzeitig mit mehreren Versionen derselben Laufzeitumgebung arbeiten m\u00fcssen, einschlie\u00dflich aller ihrer Probleme, Bugs und Updates.<\/p>\n<h4>Benutzerdefinierte Ressourcen und Controller von Pinterest<\/h4>\n<p>\nUm unseren Ingenieuren den Einstieg in Kubernetes zu erleichtern und die Infrastruktur zu vereinfachen und deren Leistung zu steigern, haben wir unsere eigenen Definitionen f\u00fcr benutzerdefinierte Ressourcen (CRD) entwickelt.<\/p>\n<p>CRD bieten folgende Funktionalit\u00e4ten an:<\/p>\n<ol>\n<li>Integration verschiedener nativer Kubernetes-Ressourcen, damit sie als eine einzige Last funktionieren. Beispielsweise umfasst die Ressource PinterestService das Deployment, den Login-Dienst und die Config-Map. Dadurch brauchen sich Entwickler keine Gedanken \u00fcber die DNS-Konfiguration zu machen.<\/li>\n<li>Implementierung der n\u00f6tigen Anwendungsunterst\u00fctzung. Der Benutzer sollte sich ausschlie\u00dflich auf die Container-Spezifikation gem\u00e4\u00df seiner Gesch\u00e4ftslogik konzentrieren, w\u00e4hrend der CRD-Controller alle notwendigen Init-Container, Umgebungsvariablen und Pod-Spezifikationen implementiert. Dies bietet Entwicklern ein v\u00f6llig neues Ma\u00df an Komfort.<\/li>\n<li>CRD-Controller verwalten auch den Lebenszyklus eigener Ressourcen und verbessern die Verf\u00fcgbarkeit von Debugging. Dazu geh\u00f6rt die Abstimmung zwischen gew\u00fcnschten und tats\u00e4chlichen Spezifikationen, die Aktualisierung des CRD-Status und das F\u00fchren von Ereignisprotokollen und mehr. Ohne CRD w\u00e4ren Entwickler gezwungen, eine Vielzahl von Ressourcen zu verwalten, was die Fehleranf\u00e4lligkeit erh\u00f6hen w\u00fcrde. <\/li>\n<\/ol>\n<p>\nHier ist ein Beispiel f\u00fcr PinterestService und eine interne Ressource, die von unserem Controller verwaltet wird:<\/p>\n<p><img decoding=\"async\" alt=\"Wir erstellen eine Kubernetes-Plattform bei Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/5f76107d023d18f535447a13d41404fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nWie oben erw\u00e4hnt, m\u00fcssen wir f\u00fcr die Unterst\u00fctzung eines benutzerdefinierten Containers diesen mit einem Initialisierungscontainer und mehreren Erweiterungen integrieren, um Sicherheit, Sichtbarkeit und Interaktion mit dem Netzwerkverkehr zu gew\u00e4hrleisten. Zudem haben wir Konfigurationskartenvorlagen erstellt und die Unterst\u00fctzung f\u00fcr PVC-Vorlagen f\u00fcr Batch-Jobs implementiert sowie die Verfolgung mehrerer Umgebungsvariablen zur Identifikation, Ressourcennutzung und Aufzeichnung von \u201eM\u00fcll\u201c realisiert.<\/p>\n<p>Es ist schwer vorstellbar, dass Entwickler diese Konfigurationsdateien manuell ohne Unterst\u00fctzung durch CRD schreiben m\u00f6chten, ganz zu schweigen von der weiteren Unterst\u00fctzung und Fehlersuche bei den Konfigurationen.<\/p>\n<h4>Workflow f\u00fcr die Bereitstellung von Anwendungen<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Wir erstellen eine Kubernetes-Plattform bei Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/08c953d5cf32244733cf4193c1b304bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie obige Abbildung zeigt, wie man einen benutzerdefinierten Pinterest-Ressource in einem Kubernetes-Cluster bereitstellt:<\/p>\n<ol>\n<li>Entwickler interagieren mit unserem Kubernetes-Cluster \u00fcber die CLI und die Benutzeroberfl\u00e4che.<\/li>\n<li>Die CLI-\/UI-Tools extrahieren YAML-Konfigurationsdateien des Workflows und andere Build-Eigenschaften (dasselbe Versionskennzeichen) aus Artifactory und senden sie dann an den Job Submission Service. Dieser Schritt stellt sicher, dass nur funktionierende Versionen in den Cluster geliefert werden. <\/li>\n<li>JSS dient als Gateway f\u00fcr verschiedene Plattformen, einschlie\u00dflich Kubernetes. Hier erfolgt die Benutzeranmeldung, die Zuteilung von Quoten und eine partielle \u00dcberpr\u00fcfung der Konfiguration unseres CRD.<\/li>\n<li>Nach der Pr\u00fcfung des CRD auf Seiten von JSS wird die Information an die API der k8s-Plattform gesendet.<\/li>\n<li>Unser CRD-Controller \u00fcberwacht Ereignisse aller Benutzerressourcen. Er wandelt die CR in native k8s-Ressourcen um, f\u00fcgt notwendige Module hinzu, setzt entsprechende Umgebungsvariablen und f\u00fchrt andere unterst\u00fctzende Aufgaben durch, wodurch er den Containeranwendungen der Benutzer eine ausreichende infrastrukturelle Unterst\u00fctzung garantiert.<\/li>\n<li>Anschlie\u00dfend \u00fcbertr\u00e4gt der CRD-Controller die erhaltenen Daten an die Kubernetes-API, damit diese vom Scheduler verarbeitet und in Betrieb genommen werden.<\/li>\n<\/ol>\n<p>\n<b>Hinweis<\/b>: Dieses Pre-Release-Workflow f\u00fcr das Deployment wurde f\u00fcr die ersten Nutzer der neuen k8s-Plattform erstellt. Wir befinden uns derzeit in der \u00dcberarbeitung dieses Prozesses, um ihn vollst\u00e4ndig mit unserem neuen CI\/CD zu integrieren. Das bedeutet, dass wir noch nicht alles \u00fcber Kubernetes mitteilen k\u00f6nnen. Wir freuen uns darauf, unsere Erfahrungen und den Fortschritt des Teams in dieser Hinsicht in unserem n\u00e4chsten Blogbeitrag \u201eBuilding a CI\/CD platform for Pinterest\u201c zu teilen.<\/p>\n<h4>Arten von speziellen Ressourcen<\/h4>\n<p>\nBasierend auf den spezifischen Anforderungen von Pinterest haben wir die folgenden CRDs entwickelt, die f\u00fcr verschiedene Arbeitsabl\u00e4ufe geeignet sind:<\/p>\n<ul>\n<li>PinterestService \u2014 das sind seit langem bestehende stateless-Services. Viele unserer Kernsysteme basieren auf einer Reihe solcher Services.<\/li>\n<li>PinterestJobSet modelliert Batch-Jobs im vollst\u00e4ndigen Zyklus. In Pinterest gibt es ein verbreitetes Szenario, bei dem mehrere Jobs dieselben Container parallel starten, unabh\u00e4ngig von anderen \u00e4hnlichen Prozessen.<\/li>\n<li>PinterestCronJob wird h\u00e4ufig in Kombination mit kleinen, regelm\u00e4\u00dfigen Lasten eingesetzt. Es handelt sich um eine Shell f\u00fcr die native Cron-Integration mit Mechanismen zur Unterst\u00fctzung von Pinterest, die f\u00fcr Sicherheit, Traffic, Protokolle und Metriken verantwortlich sind.<\/li>\n<li>PinterestDaemon umfasst die Daemons der Infrastruktur. Diese Familie w\u00e4chst weiter, da wir zunehmend Unterst\u00fctzung f\u00fcr unsere Cluster hinzuf\u00fcgen.<\/li>\n<li>PinterestTrainingJob bezieht sich auf Tensorflow- und Pytorch-Prozesse und bietet w\u00e4hrend des Betriebs das gleiche Unterst\u00fctzungsniveau wie alle anderen CRDs. Da Tensorflow und andere Maschinenlernsysteme aktiv bei Pinterest eingesetzt werden, hatten wir guten Grund, um sie herum ein separates CRD zu entwickeln.<\/li>\n<\/ul>\n<p>\nAu\u00dferdem arbeiten wir an PinterestStatefulSet, das bald f\u00fcr Datenspeicher und andere zustandsbehaftete Systeme angepasst werden wird.<\/p>\n<h4>Unterst\u00fctzung der Laufzeitumgebung<\/h4>\n<p>\nWenn ein Anwendungsmodul in Kubernetes gestartet wird, erh\u00e4lt es automatisch ein Zertifikat zur Identifikation. Dieses Zertifikat wird verwendet, um auf den geheimen Speicher zuzugreifen oder um \u00fcber mTLS mit anderen Diensten zu kommunizieren. In der Zwischenzeit laden der Container-Initializer und der Daemon alle erforderlichen Abh\u00e4ngigkeiten vor dem Start der Containeranwendung. Sobald alles bereit ist, registrieren der Sidecar-Traffic und der Daemon die IP-Adresse des Moduls in unserem Zookeeper, damit die Kunden es finden k\u00f6nnen. All dies funktioniert, da das Netzwerkmodul bereits vor dem Start der Anwendung konfiguriert wurde.<\/p>\n<p>Die obigen Beispiele zeigen typische Unterst\u00fctzungsarten f\u00fcr Workloads zur Laufzeit. F\u00fcr andere Arten von Workloads k\u00f6nnte etwas andere Unterst\u00fctzung erforderlich sein, aber alle werden in Form von Pod-Level-Sidecars, Node-Level- oder Machine-Level-Daemons bereitgestellt. Wir stellen sicher, dass dies alles innerhalb der Verwaltungsinfrastruktur implementiert wird und zwischen den Anwendungen abgestimmt ist, was letztendlich die technische Arbeitsbelastung und den Support erheblich reduziert.<\/p>\n<h4>Testing und QA<\/h4>\n<p>\nWir haben eine End-to-End-Testpipeline \u00fcber die bereits vorhandene Testinfrastruktur von Kubernetes aufgebaut. Diese Tests gelten f\u00fcr alle unsere Cluster. Unsere Pipeline hat viele Anpassungen durchlaufen, bevor sie Teil des Produktclusters wurde.<\/p>\n<p>Neben den Testsystemen verf\u00fcgen wir \u00fcber \u00dcberwachungs- und Benachrichtigungssysteme, die kontinuierlich den Zustand der Systemkomponenten, den Ressourcenverbrauch und andere wichtige Kennzahlen \u00fcberwachen und uns nur dann benachrichtigen, wenn menschliches Eingreifen erforderlich ist.<\/p>\n<h4>Alternativen<\/h4>\n<p>\nWir haben einige Alternativen zu benutzerdefinierten Ressourcen in Betracht gezogen, wie z. B. Mutations-Policy-Controller und Template-Systeme. Alle waren jedoch mit erheblichen Herausforderungen verbunden, sodass wir uns f\u00fcr den Weg der benutzerdefinierten Ressourcen-Definition (CRD) entschieden haben.<\/p>\n<p>Der Mutations-Policy-Controller wurde verwendet, um Sidecars, Umgebungsvariablen und andere Unterst\u00fctzungen w\u00e4hrend der Ausf\u00fchrung einzuf\u00fchren. Er hatte jedoch mit verschiedenen Problemen zu k\u00e4mpfen, beispielsweise mit der Bindung von Ressourcen und der Verwaltung ihres Lebenszyklus, w\u00e4hrend solche Probleme bei CRD nicht auftreten.<\/p>\n<p><b>Hinweis:<\/b> Vorlagensysteme wie Helm-Diagramme werden h\u00e4ufig verwendet, um Anwendungen mit \u00e4hnlichen Konfigurationen zu starten. Allerdings sind unsere Arbeitsanwendungen zu vielf\u00e4ltig, um sie mit Vorlagen zu verwalten. Zudem treten beim kontinuierlichen Deployment mit Vorlagen zu viele Fehler auf.<\/p>\n<h4>Zuk\u00fcnftige Arbeiten<\/h4>\n<p>\nDerzeit haben wir es mit einer gemischten Last auf all unseren Clustern zu tun. Um solche Prozesse unterschiedlicher Art und Gr\u00f6\u00dfe zu unterst\u00fctzen, arbeiten wir in folgenden Bereichen:<\/p>\n<ul>\n<li>Ein Clusterverbund verteilt gro\u00dfe Anwendungen auf verschiedene Cluster, um Skalierbarkeit und Stabilit\u00e4t zu gew\u00e4hrleisten.<\/li>\n<li>Sicherstellung der Stabilit\u00e4t, Skalierbarkeit und Sichtbarkeit des Clusters zur Verbindung von Anwendung und SLA.<\/li>\n<li>Ressourcen- und Quotenmanagement, damit sich die Anwendungen nicht gegenseitig behindern und die Skalierung des Clusters von unserer Seite kontrolliert wird.<\/li>\n<li>Neue CI\/CD-Plattform zur Unterst\u00fctzung und Bereitstellung von Anwendungen in Kubernetes.<\/li>\n<\/ul>\n<p>Quelle: <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 4.9.10 - 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. \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,\" \/>\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\/de\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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. \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,\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/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\udd47Wir erstellen eine Kubernetes-Plattform bei Pinterest | ProHoster","description":"Im Laufe der Jahre haben 300 Millionen Nutzer von Pinterest \u00fcber 200 Milliarden Pins auf mehr als 4 Milliarden Pinnw\u00e4nden erstellt. Um diese riesige Nutzergemeinschaft und die umfangreiche Inhaltsbasis zu bedienen, hat das Portal tausende von Diensten entwickelt, beginnend mit Mikrodiensten, die von wenigen CPUs bew\u00e4ltigt werden k\u00f6nnen, bis hin zu gigantischen Monolithen, die auf einem gesamten Park virtueller Maschinen laufen. Und nun ist der Moment gekommen,","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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. \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,","og:url":"https:\/\/prohoster.info\/de\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/37636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=37636"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/37636\/revisions"}],"predecessor-version":[{"id":158433,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/37636\/revisions\/158433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/28249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=37636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=37636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=37636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}