{"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 in Pinterest","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Im Laufe der Jahre haben 300 Millionen Nutzer von Pinterest \u00fcber 200 Milliarden Pins auf mehr als 4 Milliarden Boards erstellt. Um diese riesige Nutzerbasis und die umfangreiche Content-Datenbank zu bedienen, hat das Portal Tausende von Services entwickelt, angefangen bei Microservices, die von einigen CPUs bew\u00e4ltigt werden k\u00f6nnen, bis hin zu gigantischen Monolithen, die auf einem gesamten Park virtueller Maschinen laufen. Und so kam der Zeitpunkt, an dem der Blick des Unternehmens auf k8s fiel. Was hat Pinterest an \u201edem W\u00fcrfel\u201c angezogen? Dar\u00fcber erfahren Sie in unserer \u00dcbersetzung des neuesten Artikels aus <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/pinterest-engineering\">dem Blog von Pinterest Engineering<\/a><\/noindex>.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Wir erstellen eine Kubernetes-Plattform in 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 riesige Nutzerbasis und die umfassende Content-Datenbank zu bedienen, haben wir Tausende von Services entwickelt, angefangen bei Microservices, die von einigen CPUs bew\u00e4ltigt werden k\u00f6nnen, bis hin zu gigantischen Monolithen, die auf einem gesamten Park virtueller Maschinen laufen. Dar\u00fcber hinaus haben wir verschiedene Frameworks, die ebenfalls CPU-Ressourcen, Speicher oder Zugriff auf Ein- und Ausgabeoperationen ben\u00f6tigen k\u00f6nnen.<\/p>\n<p>Im Rahmen der Unterst\u00fctzung dieses Werkzeug-Zoo sieht sich das Entwicklungsteam mit einer Reihe von Problemen konfrontiert:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li>Die Ingenieure haben keinen einheitlichen Weg, um die Arbeitsumgebung zu starten. Stateless-Services, Stateful-Services und Projekte in aktiver Entwicklung basieren auf v\u00f6llig unterschiedlichen Technologiestacks. Dies f\u00fchrte zur Erstellung eines gesamten Schulungskurses f\u00fcr Ingenieure und erschwert erheblich die Arbeit unseres Infrastrukturteams.<\/li>\n<li>Entwickler, die \u00fcber einen eigenen Park virtueller Maschinen verf\u00fcgen, erzeugen eine enorme Belastung f\u00fcr die internen Administratoren. Infolgedessen ziehen sich so einfache Operationen wie das Aktualisieren des Betriebssystems oder der AMI \u00fcber Wochen und Monate. Dies f\u00fchrt zu einer erh\u00f6hten Belastung in scheinbar ganz allt\u00e4glichen Situationen.<\/li>\n<li>Herausforderungen bei der Erstellung globaler Infrastrukturmanagement-Tools \u00fcber bestehenden L\u00f6sungen. Die Situation wird zus\u00e4tzlich erschwert, da es nicht einfach ist, die Eigent\u00fcmer der virtuellen Maschinen zu finden. Das hei\u00dft, wir wissen nicht, ob wir diese Ressourcen sicher f\u00fcr andere Teile unserer Infrastruktur nutzen k\u00f6nnen.<\/li>\n<\/ul>\n<p>\nContainer-Orchestrierungssysteme sind eine M\u00f6glichkeit, das Management von Workloads zu vereinheitlichen. Sie er\u00f6ffnen Ihnen Wege zur Steigerung der Entwicklungsgeschwindigkeit und vereinfachen das Management der Infrastruktur, da alle im Projekt involvierten Ressourcen durch ein zentrales System verwaltet werden.<\/p>\n<p><img decoding=\"async\" alt=\"Wir erstellen eine Kubernetes-Plattform in 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, Entwicklerproduktivit\u00e4t und Effizienz).<\/i><\/p>\n<p>Das Cloud Management Platform-Team bei Pinterest lernte 2017 K8s kennen. In der ersten H\u00e4lfte von 2017 dokumentierten wir einen Gro\u00dfteil unserer Produktionsressourcen, einschlie\u00dflich API und all unseren <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 sorgf\u00e4ltige Bewertung verschiedener Container-Orchestrierungsl\u00f6sungen, Clusteraufbau und -betrieb durch. Ende 2017 entschieden wir uns f\u00fcr Kubernetes. Es war flexibel genug und wurde von der Entwickler-Community gut unterst\u00fctzt.<\/p>\n<p>Bis zu diesem Zeitpunkt haben wir unsere eigenen Tools zur initialen Clusterbereitstellung auf Basis von Kops entwickelt und bestehende Infrastrukturkomponenten auf Kubernetes migriert \u2013 wie Netzwerk, Sicherheit, Metriken, Protokollierung, Identit\u00e4tsmanagement und den Datenverkehr. Au\u00dferdem haben wir ein System zur Modellsimulation von Workloads f\u00fcr unsere Ressource implementiert, dessen Komplexit\u00e4t vor den Entwicklern verborgen bleibt. Derzeit konzentrieren wir uns darauf, die Stabilit\u00e4t des Clusters zu gew\u00e4hrleisten, es zu skalieren und neue Kunden anzubinden.<\/p>\n<h4>Kubernetes: Der Weg von Pinterest<\/h4>\n<p>\nDie Einf\u00fchrung von Kubernetes in einem so gro\u00dfen Ma\u00dfstab wie bei Pinterest als Plattform, die von unseren Ingenieuren gesch\u00e4tzt wird, brachte viele Herausforderungen mit sich.<\/p>\n<p>Als gro\u00dfes Unternehmen haben wir erhebliche Mittel in Infrastrukturwerkzeuge investiert. Dazu geh\u00f6ren Sicherheitswerkzeuge, die Zertifikate verwalten und Schl\u00fcssel verteilen, Komponenten zur Verkehrs\u00fcberwachung, Systeme zur Dienstprotokollierung sowie Komponenten f\u00fcr Sichtbarkeit, Protokollversand und Metriken. All dies wurde nicht aus Zufall zusammengestellt: Wir durchliefen den \u00fcblichen Prozess des Ausprobierens und Lernens. Deshalb wollten wir all diese Tools in die neue Infrastruktur auf Kubernetes integrieren, anstatt das alte Rad auf einer neuen Plattform neu zu erfinden. Dieser Ansatz erleichterte die Migration erheblich, da die gesamte Anwendungsunterst\u00fctzung bereits vorhanden war und nicht neu geschaffen werden musste.<\/p>\n<p>Andererseits sind die Vorhersagemodelle f\u00fcr Lasten in Kubernetes selbst (zum Beispiel Deployments, Jobs und DaemonSets) f\u00fcr unser Projekt nicht ausreichend. Diese Usability-Probleme stellen erhebliche Hindernisse f\u00fcr den \u00dcbergang zu Kubernetes dar. Zum Beispiel haben wir geh\u00f6rt, wie Entwickler von Diensten sich \u00fcber das Fehlen oder die falsche Konfiguration von Ingress beschweren. Wir hatten auch mit der falschen Verwendung von Template-Engines zu k\u00e4mpfen, als 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 Supports f\u00fcr Kunden vor, wenn Sie in mehreren Versionen derselben Ausf\u00fchrungsumgebung arbeiten m\u00fcssen, mit all ihren Problemen, Bugs und Updates.<\/p>\n<h4>Benutzerdefinierte Ressourcen und Controller von Pinterest<\/h4>\n<p>\nUm unseren Ingenieuren die Einf\u00fchrung von Kubernetes zu erleichtern, sowie die Infrastruktur zu vereinfachen und ihre Leistung zu beschleunigen, haben wir unsere eigenen Definitionen von benutzerdefinierten Ressourcen (CRD) entwickelt.<\/p>\n<p>CRDs bieten folgende Funktionalit\u00e4ten:<\/p>\n<ol>\n<li>Kombination verschiedener nativer Kubernetes-Ressourcen, sodass sie als eine einzige Last fungieren. Zum Beispiel umfasst die Ressource PinterestService ein Deployment, einen Ingress-Dienst und eine ConfigMap. Das erm\u00f6glicht Entwicklern, sich keine Gedanken \u00fcber die DNS-Konfiguration zu machen.<\/li>\n<li>Implementierung der notwendigen Unterst\u00fctzung f\u00fcr Anwendungen. Der Benutzer sollte sich nur auf die Spezifikation des Containers gem\u00e4\u00df seiner Gesch\u00e4ftslogik konzentrieren, w\u00e4hrend der CRD-Controller alle erforderlichen Init-Container, Umgebungsvariablen und Pod-Spezifikationen implementiert. Dies sorgt f\u00fcr ein grundlegend anderes Komfortniveau f\u00fcr Entwickler.<\/li>\n<li>CRD-Controller verwalten auch den Lebenszyklus eigener Ressourcen und verbessern die Verf\u00fcgbarkeit des Debuggings. Dies umfasst die Abstimmung der gew\u00fcnschten und tats\u00e4chlichen Spezifikationen, die Aktualisierung des CRD-Status sowie die Protokollierung von Ereignissen und mehr. Ohne CRDs m\u00fcssten Entwickler eine Vielzahl von Ressourcen verwalten, was nur 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 in Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/5f76107d023d18f535447a13d41404fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nWie oben zu sehen ist, m\u00fcssen wir, um den Benutzercontainer zu unterst\u00fctzen, einen Initialisierungscontainer und mehrere Erg\u00e4nzungen integrieren, um Sicherheit, Sichtbarkeit und den Umgang mit Netzwerktrafik zu gew\u00e4hrleisten. Dar\u00fcber hinaus haben wir Konfigurationskarten-Vorlagen erstellt und die Unterst\u00fctzung von PVC-Vorlagen f\u00fcr Batch-Jobs implementiert sowie das Tracking zahlreicher Umgebungsvariablen f\u00fcr die Verfolgung von Identit\u00e4ten, Ressourcennutzung und das Sammeln von \u201eM\u00fcll\u201c realisiert.<\/p>\n<p>Es ist schwer vorstellbar, dass Entwickler diese Konfigurationsdateien manuell ohne Unterst\u00fctzung von CRD schreiben m\u00f6chten, ganz zu schweigen von der weiteren Wartung und Fehlersuche der Konfigurationen.<\/p>\n<h4>Workflow f\u00fcr die Bereitstellung von Anwendungen<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Wir erstellen eine Kubernetes-Plattform in Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/08c953d5cf32244733cf4193c1b304bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas obige Bild zeigt, wie man eine benutzerdefinierte Ressource von Pinterest 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>CLI- und UI-Tools extrahieren YAML-Konfigurationsdateien des Workflows und andere Build-Eigenschaften (dasselbe Versions-ID) aus Artifactory, bevor sie an den Job Submission Service gesendet werden. Dieser Schritt stellt sicher, dass nur funktionierende Versionen im Cluster bereitgestellt werden. <\/li>\n<li>JSS ist ein Gateway f\u00fcr verschiedene Plattformen, einschlie\u00dflich Kubernetes. Hier erfolgt die Benutzerauthentifizierung, die Vergabe von Quoten und eine partielle \u00dcberpr\u00fcfung der Konfiguration unseres CRD.<\/li>\n<li>Nach der \u00dcberpr\u00fcfung des CRD auf der JSS-Seite werden die Informationen an die API der K8s-Plattform gesendet.<\/li>\n<li>Unser CRD-Controller verfolgt Ereignisse aller benutzerdefinierten Ressourcen. Er wandelt CR in native K8s-Ressourcen um, f\u00fcgt erforderliche Module hinzu, setzt die entsprechenden Umgebungsvariablen und f\u00fchrt weitere Hilfsarbeiten aus, um sicherzustellen, dass die Containeranwendungen ausreichende infrastrukturelle Unterst\u00fctzung erhalten.<\/li>\n<li>Anschlie\u00dfend \u00fcbergibt der CRD-Controller die gewonnenen Daten an die Kubernetes-API, damit sie vom Scheduler verarbeitet und in Betrieb genommen werden.<\/li>\n<\/ol>\n<p>\n<b>Hinweis<\/b>: Dieser Release-Workflow f\u00fcr das Deployment wurde f\u00fcr die ersten Benutzer der neuen k8s-Plattform erstellt. Momentan befinden wir uns im Prozess der Verbesserung dieses Verfahrens, um es vollst\u00e4ndig mit unserem neuen CI\/CD zu integrieren. Das bedeutet, dass wir nicht alle Informationen zu Kubernetes bereitstellen k\u00f6nnen. Wir freuen uns darauf, unsere Erfahrungen zu teilen und \u00fcber die Fortschritte des Teams in dieser Hinsicht in unserem n\u00e4chsten Blogbeitrag \u201eBuilding a CI\/CD platform for Pinterest\u201c zu berichten.<\/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 Workflows geeignet sind:<\/p>\n<ul>\n<li>PinterestService sind seit langem funktionierende stateless Services. Viele unserer zentralen Systeme basieren auf einer Reihe solcher Services.<\/li>\n<li>PinterestJobSet modelliert vollst\u00e4ndige Batch-Jobs. 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 Verbindung mit kleinen, periodischen Lasten eingesetzt. Dies ist eine Shell f\u00fcr die native Ausf\u00fchrung von Cron mit den Sicherheits-, Verkehrs-, Log- und Metrik-Mechanismen von Pinterest.<\/li>\n<li>PinterestDaemon enth\u00e4lt Infrastruktur-Daemons. Diese Familie w\u00e4chst weiter, da wir immer mehr Unterst\u00fctzung f\u00fcr unsere Cluster hinzuf\u00fcgen.<\/li>\n<li>PinterestTrainingJob umfasst die Prozesse von Tensorflow und Pytorch und bietet w\u00e4hrend der Ausf\u00fchrung denselben Unterst\u00fctzungsgrad wie alle anderen CRDs. Da Tensorflow und andere Systeme f\u00fcr maschinelles Lernen bei Pinterest aktiv eingesetzt werden, war es sinnvoll, eine eigene CRD daf\u00fcr zu entwickeln.<\/li>\n<\/ul>\n<p>\nAu\u00dferdem arbeiten wir an PinterestStatefulSet, das bald f\u00fcr Datenspeicher und andere stateful Systeme angepasst wird.<\/p>\n<h4>Unterst\u00fctzung der Ausf\u00fchrungsumgebung<\/h4>\n<p>\nWenn ein Anwendungsmodul in Kubernetes gestartet wird, erh\u00e4lt es automatisch ein Zertifikat zur Identifizierung seiner selbst. Dieses Zertifikat wird verwendet, um auf den Geheimspeicher zuzugreifen oder um \u00fcber mTLS mit anderen Diensten zu kommunizieren. In der Zwischenzeit wird der Container-Init-Konfigurator sowie der Daemon alle erforderlichen Abh\u00e4ngigkeiten vor dem Start der Containeranwendung laden. Wenn alles bereit ist, registrieren der Sidecar-Traffic und der Daemon die IP-Adresse des Moduls in unserem Zookeeper, damit 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\u00fctzungsvarianten f\u00fcr Workloads zur Laufzeit. F\u00fcr andere Arten von Workloads k\u00f6nnte etwas andere Unterst\u00fctzung erforderlich sein, doch alle werden in Form von Pod-Level-Sidecars, Node- oder VM-Level-Daemons bereitgestellt. Wir sorgen daf\u00fcr, dass all dies innerhalb der Verwaltungsinfrastruktur bereitgestellt und zwischen den Anwendungen abgestimmt wird, was schlie\u00dflich die technische Belastung und den Kundenservice erheblich reduziert.<\/p>\n<h4>Testen und QA<\/h4>\n<p>\nWir haben eine End-to-End-Testpipeline auf der bereits vorhandenen Testinfrastruktur von Kubernetes aufgebaut. Diese Tests gelten f\u00fcr alle unsere Cluster. Unsere Pipeline hat viele \u00dcberarbeitungen durchlaufen, bevor sie Teil des Produktclusters wurde.<\/p>\n<p>Neben den Testsystemen haben wir \u00dcberwachungs- und Alarmsysteme, die st\u00e4ndig den Zustand der Systemkomponenten, den Ressourcenverbrauch und andere wichtige Kennzahlen \u00fcberwachen und uns nur bei Bedarf \u00fcber notwendige menschliche Eingriffe informieren.<\/p>\n<h4>Alternativen<\/h4>\n<p>\nWir haben einige Alternativen zu benutzerdefinierten Ressourcen betrachtet, wie beispielsweise Mutationszugriffskontrollen und Template-Systeme. All diese beinhalten jedoch erhebliche betriebliche Herausforderungen, weshalb wir den Weg der CRD gew\u00e4hlt haben.<\/p>\n<p>Der Mutationszugriffskontroller wurde zur Einf\u00fchrung von Sidecars, Umgebungsvariablen und anderer Unterst\u00fctzung w\u00e4hrend der Ausf\u00fchrung verwendet. Er hatte jedoch mit verschiedenen Problemen zu k\u00e4mpfen, etwa bei der Bindung von Ressourcen und dem Management ihres Lebenszyklus, w\u00e4hrend solche Probleme bei CRD nicht auftreten.<\/p>\n<p><b>Hinweis:<\/b> Vorlagen-Systeme, wie Helm-Diagramme, werden auch h\u00e4ufig verwendet, um Anwendungen mit \u00e4hnlichen Konfigurationen zu starten. Allerdings sind unsere Arbeitsanwendungen zu vielf\u00e4ltig, um sie mit Vorlagen zu verwalten. W\u00e4hrend des kontinuierlichen Deployments werden bei der Verwendung von Vorlagen zudem zu viele Fehler auftreten.<\/p>\n<h4>Kommende 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 den folgenden Bereichen:<\/p>\n<ul>\n<li>Die Clustergruppe verteilt gro\u00dfe Anwendungen auf verschiedene Cluster, um Skalierbarkeit und Stabilit\u00e4t zu gew\u00e4hrleisten.<\/li>\n<li>Sicherstellung von Stabilit\u00e4t, Skalierbarkeit und Sichtbarkeit des Clusters, um eine Verbindung zwischen Anwendung und SLA zu schaffen.<\/li>\n<li>Ressourcen- und Quotenmanagement, damit die Anwendungen sich nicht gegenseitig behindern und der Umfang des Clusters von uns kontrolliert werden kann.<\/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 5.0.1.1 - 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\/de\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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.\" \/>\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 schaffen eine Kubernetes-Plattform bei Pinterest | ProHoster","description":"Im Laufe der Jahre haben 300 Millionen Nutzer von Pinterest mehr als 200 Milliarden Pins auf \u00fcber 4 Milliarden Pinnw\u00e4nden erstellt.","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.","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}