{"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\/da\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","title":{"rendered":"Opretter en Kubernetes-platform i Pinterest","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>I l\u00f8bet af sine \u00e5r har Pinterest haft 300 millioner brugere, som har oprettet over 200 milliarder pins p\u00e5 mere end 4 milliarder boards. For at betjene denne h\u00e6r af brugere og den omfattende indholdsbasis har platformen udviklet tusindvis af tjenester, lige fra mikrotjenester, som kan l\u00f8ses af et par CPU'er, til enorme monolitter, der k\u00f8rer p\u00e5 en hel fl\u00e5de af virtuelle maskiner. Og nu er tiden kommet, hvor virksomhedens blik er faldet p\u00e5 k8s. Hvad har 'kuben' der tiltalte 'Pinterest'? Det kan du finde ud af i vores overs\u00e6ttelse af den friske artikel fra <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/pinterest-engineering\">Pinterest engineering blog<\/a><\/noindex>.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Opretter en Kubernetes-platform i Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/71719121d8d0ed8e284b471c3bcb7328.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00e5, hundrede millioner brugere og hundrede milliarder pins. For at betjene denne h\u00e6r af brugere og den omfattende indholdsbasis, har vi udviklet tusindvis af tjenester, lige fra mikrotjenester, som kan l\u00f8ses af et par CPU'er, til enorme monolitter, der k\u00f8rer p\u00e5 en hel fl\u00e5de af virtuelle maskiner. Derudover har vi forskellige rammer, der ogs\u00e5 kan kr\u00e6ve CPU-ressourcer, hukommelse eller adgang til I\/O-operationer.<\/p>\n<p>Under vedligeholdelsen af denne zoologiske have af v\u00e6rkt\u00f8jer st\u00e5r udviklingsteamet over for en r\u00e6kke problemer:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li>Ingeni\u00f8rerne har ikke en ensartet m\u00e5de at starte et arbejdsmilj\u00f8 p\u00e5. Stateless-tjenester, stateful-tjenester og projekter under aktiv udvikling er baseret p\u00e5 fuldst\u00e6ndig forskellige teknologiske stakke. Dette har f\u00f8rt til oprettelsen af et fuldt tr\u00e6ningskursus for ingeni\u00f8rerne og komplicerer betydeligt arbejdet for vores infrastrukturteam.<\/li>\n<li>Udviklere, der har deres eget udvalg af virtuelle maskiner, skaber enorm belastning p\u00e5 de interne administratorer. Resultatet er, at selv simple operationer som opdatering af OS eller AMI str\u00e6kker sig over uger og m\u00e5neder. Dette f\u00f8rer til en stigende belastning i, tilsyneladende, fuldst\u00e6ndig dagligdags situationer.<\/li>\n<li>Udfordringer med at skabe globale infrastrukturv administreringsv\u00e6rkt\u00f8jer oven p\u00e5 allerede eksisterende l\u00f8sninger. Situationen kompliceres desuden af, at det er sv\u00e6rt at finde ejere af de virtuelle maskiner. Det betyder, at vi ikke ved, om vi sikkert kan udnytte disse ressourcer til at arbejde p\u00e5 andre dele af vores infrastruktur.<\/li>\n<\/ul>\n<p>\nContaineriseringssystemer til orkestrering er en m\u00e5de at standardisere h\u00e5ndteringen af arbejdsbelastninger p\u00e5. De \u00e5bner vejen for hurtigere udvikling og forenkler administrationen af infrastrukturen, da alle ressourcer involveret i projektet styres af et centralt system.<\/p>\n<p><img decoding=\"async\" alt=\"Opretter en Kubernetes-platform i Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/8ce586ab31e593c99310ae2bf2a7bafb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Figur 1: Infrastruktursprioriteter (p\u00e5lidelighed, udvikleres ydeevne og effektivitet).<\/i><\/p>\n<p>Cloud Management Platform-teamet hos Pinterest st\u00f8dte p\u00e5 K8s i 2017. I f\u00f8rste halvdel af 2017 dokumenterede vi st\u00f8rstedelen af vores produktionskapacitet, herunder API'er og alle vores <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/da\/server\/\"   title=\"webservere\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1189\">webservere<\/a>. Derefter gennemf\u00f8rte vi en grundig evaluering af forskellige systemer til containerorkestrering, clusteropbygning og drift. I slutningen af 2017 besluttede vi os for at tage Kubernetes i brug. Det var tilstr\u00e6kkeligt fleksibelt og havde stor st\u00f8tte i udviklingssamfundet.<\/p>\n<p>P\u00e5 nuv\u00e6rende tidspunkt har vi skabt vores egne v\u00e6rkt\u00f8jer til prim\u00e6r opstart af klyngen baseret p\u00e5 Kops og flyttet eksisterende infrastrukturelle komponenter som netv\u00e6rk, sikkerhed, metrics, logning, identitetsh\u00e5ndtering og trafik til Kubernetes. Vi har ogs\u00e5 implementeret et belastningssimuleringssystem til vores ressource, hvis kompleksitet er skjult for udviklerne. Vi fokuserer nu p\u00e5 at sikre stabilitet i klyngen, dens skalering og tilslutning af nye kunder.<\/p>\n<h4>Kubernetes: Pinterest's vej<\/h4>\n<p>\nAt implementere Kubernetes i stor skala hos Pinterest som en platform, der vil blive elsket af vores ingeni\u00f8rer, medf\u00f8rte mange udfordringer.<\/p>\n<p>Som en stor virksomhed har vi investeret betydeligt i infrastrukturelle v\u00e6rkt\u00f8jer. Eksempler inkluderer sikkerhedsv\u00e6rkt\u00f8jer, der h\u00e5ndterer certifikater og distribuerer n\u00f8gler, trafikstyringskomponenter, serviceopdagelsessystemer, synligheds- og loggingssystemer. Alt dette blev bygget op af en grund: Vi har gennemg\u00e5et en normal proces med pr\u00f8velser og fejl, og derfor \u00f8nskede vi at integrere alt dette ind i den nye infrastruktur p\u00e5 Kubernetes i stedet for at opfinde den gamle cykel igen p\u00e5 en ny platform. Denne tilgang har overordnet set forenklet migreringen, da al applikationssupport allerede eksisterer og ikke skal opbygges fra bunden.<\/p>\n<p>P\u00e5 den anden side er der ikke tilstr\u00e6kkeligt med modeller til belastningsprognoser i selve Kubernetes (for eksempel deployment, jobs og Daemon sets) til vores projekt. Disse brugervenlighedsproblemer udg\u00f8r enorme forhindringer for overgangen til Kubernetes. For eksempel har vi h\u00f8rt udviklere af tjenester klage over manglende eller forkert konfiguration af indgange. Vi har ogs\u00e5 oplevet forkert brug af templating, hvor der blev oprettet hundrede kopier med samme specifikation og opgave, hvilket f\u00f8rte til mareridtslignende debug-problemer.<\/p>\n<p>Det var ogs\u00e5 meget vanskeligt at underst\u00f8tte forskellige versioner i den samme klynge. Forestil dig kompleksiteten ved kundesupport, n\u00e5r du skal arbejde med mange versioner af det samme runtime-milj\u00f8, med alle deres problemer, bugs og opdateringer.<\/p>\n<h4>Pinterest-brugerressourcer og -controllere<\/h4>\n<p>\nFor at lette vores ingeni\u00f8rers implementeringsproces af Kubernetes og forenkle infrastrukturen samt \u00f8ge dens ydeevne, har vi udviklet vores egne definitioner af brugerressourcer (CRD).<\/p>\n<p>CRD tilbyder f\u00f8lgende funktionaliteter:<\/p>\n<ol>\n<li>Sammenfletning af forskellige native Kubernetes-ressourcer, s\u00e5 de fungerer som en samlet belastning. For eksempel inkluderer ressourcen PinterestService deployment, indgangstjeneste og konfigurationskort. Dette g\u00f8r det muligt for udviklere ikke at bekymre sig om DNS-konfiguration.<\/li>\n<li>Implementering af n\u00f8dvendig applikationsunderst\u00f8ttelse. Brugeren skal kun fokusere p\u00e5 specifikationen af containeren i henhold til sin forretningslogik, mens CRD-controlleren implementerer alle n\u00f8dvendige init-containere, milj\u00f8variabler og pod-specifikationer. Dette sikrer et fundamentalt anderledes niveau af komfort for udviklerne.<\/li>\n<li>CRD-controllere styrer ogs\u00e5 livscyklussen for de egne ressourcer og \u00f8ger tilg\u00e6ngeligheden af debugging. Dette inkluderer afstemning af \u00f8nskede og faktiske specifikationer, opdatering af CRD-status og logf\u00f8ring af h\u00e6ndelser og meget mere. Uden CRD ville udviklere blive n\u00f8dt til at administrere en omfattende m\u00e6ngde ressourcer, hvilket blot ville \u00f8ge sandsynligheden for fejl. <\/li>\n<\/ol>\n<p>\nHer er et eksempel p\u00e5 PinterestService og den interne ressource, der styres af vores controller:<\/p>\n<p><img decoding=\"async\" alt=\"Opretter en Kubernetes-platform i Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/5f76107d023d18f535447a13d41404fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nSom n\u00e6vnt ovenfor, for at underst\u00f8tte den brugerdefinerede container, er det n\u00f8dvendigt at integrere den med en initialiseringscontainer og flere tilf\u00f8jelser for at sikre sikkerhed, synlighed og h\u00e5ndtering af netv\u00e6rkstrafik. Derudover har vi oprettet skabeloner til konfigurationskort og implementeret underst\u00f8ttelse af PVC-skabeloner til batchopgaver, samt trackning af mange milj\u00f8variabler for at overv\u00e5ge identifikation, ressourceforbrug og affaldssamling.<\/p>\n<p>Det er sv\u00e6rt at forestille sig, at udviklere ville \u00f8nske at skrive disse konfigurationsfiler manuelt uden underst\u00f8ttelse fra CRD, for slet ikke at tale om videre st\u00f8tte og fejlfinding af konfigurationerne.<\/p>\n<h4>Workflow til deployment af applikationer<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Opretter en Kubernetes-platform i Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/08c953d5cf32244733cf4193c1b304bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIllustrationen ovenfor viser, hvordan man deployer en brugerdefineret ressource Pinterest i et Kubernetes-kluster:<\/p>\n<ol>\n<li>Udviklere interagerer med vores Kubernetes-kluster via CLI og brugergr\u00e6nsefladen.<\/li>\n<li>CLI \/ UI-v\u00e6rkt\u00f8jerne henter YAML-filer for workflow-konfiguration og andre byggeegenskaber (den samme versionsidentifikation) fra Artifactory, hvorefter de sender dem til Job Submission Service. Dette skridt sikrer, at kun fungerende versioner bliver leveret til klusteret. <\/li>\n<li>JSS fungerer som en gateway for forskellige platforme, herunder Kubernetes. Her sker brugergodkendelse, tildeling af kvoter og delvis konfiguration af vores CRD.<\/li>\n<li>Efter validering af CRD p\u00e5 JSS-siden sendes informationen til k8s-platformens API.<\/li>\n<li>Vores CRD-controller overv\u00e5ger begivenheder p\u00e5 alle brugerdefinerede ressourcer. Den konverterer CR til native k8s-ressourcer, tilf\u00f8jer n\u00f8dvendige moduler, s\u00e6tter relevante milj\u00f8variabler og udf\u00f8rer andre st\u00f8tteopgaver, hvilket sikrer tilstr\u00e6kkelig infrastrukturunderst\u00f8ttelse for de containerbaserede brugerdefinerede applikationer.<\/li>\n<li>Derefter videregiver CRD-controlleren de indsamlede data til Kubernetes API, s\u00e5 de kan behandles af scheduler og k\u00f8res.<\/li>\n<\/ol>\n<p>\n<b>Bem\u00e6rk<\/b>: dette pr\u00e6-releases workflow for deployment blev oprettet til de f\u00f8rste brugere af den nye k8s-platform. Vi er nu i gang med at forbedre denne proces for fuldt ud at integrere os med vores nye CI\/CD. Det betyder, at vi ikke kan dele alt relateret til Kubernetes. Vi ser frem til at dele vores erfaringer og fort\u00e6lle om teamets fremskridt i denne retning i vores n\u00e6ste blogindl\u00e6g \"Building a CI\/CD platform for Pinterest\".<\/p>\n<h4>Typer af specialressourcer<\/h4>\n<p>\nBaseret p\u00e5 de specifikke behov fra Pinterest har vi udviklet f\u00f8lgende CRD'er, der passer til forskellige arbejdsprocesser:<\/p>\n<ul>\n<li>PinterestService er allerede etablerede stateless tjenester. Mange af vores kerne-systemer er bygget p\u00e5 et s\u00e6t af s\u00e5danne tjenester.<\/li>\n<li>PinterestJobSet modellerer komplette batch-job. I Pinterest er der et almindeligt scenarie, hvor flere job k\u00f8rer de samme containere parallelt, uafh\u00e6ngigt af andre lignende processer.<\/li>\n<li>PinterestCronJob anvendes ofte i forbindelse med sm\u00e5 periodiske belastninger. Det er en wrapper til den native cron-implementering med supportmekanismer fra Pinterest til sikkerhed, trafik, logs og metrics.<\/li>\n<li>PinterestDaemon omfatter infrastruktur-d\u00e6moner. Denne familie forts\u00e6tter med at vokse, efterh\u00e5nden som vi tilf\u00f8jer mere support til vores klynger.<\/li>\n<li>PinterestTrainingJob d\u00e6kker processen for Tensorflow og Pytorch og sikrer det samme niveau af support under drift som alle andre CRD'er. Da Pinterest aktivt bruger Tensorflow og andre systemer til maskinl\u00e6ring, var der grund til at opbygge en separat CRD omkring dem.<\/li>\n<\/ul>\n<p>\nVi arbejder ogs\u00e5 p\u00e5 PinterestStatefulSet, som snart vil blive tilpasset til datalagre og andre stateful-systemer.<\/p>\n<h4>Support for k\u00f8rsel milj\u00f8<\/h4>\n<p>\nN\u00e5r en applikationsmodul starter op i Kubernetes, modtager den automatisk et certifikat for at identificere sig selv. Dette certifikat bruges til at f\u00e5 adgang til den hemmelige opbevaring eller til at kommunikere med andre tjenester via mTLS. I mellemtiden vil konfigurationen til containerinitialisering og d\u00e6monen indl\u00e6se alle n\u00f8dvendige afh\u00e6ngigheder inden opstarten af containerapplikationen. N\u00e5r alt er klar, registrerer sidecar og d\u00e6monen modulens IP-adresse i vores Zookeeper, s\u00e5 kunderne kan opdage den. Alt dette fungerer, da netmodulet blev konfigureret, inden applikationen blev startet.<\/p>\n<p>Ovenst\u00e5ende er typiske eksempler p\u00e5 support til arbejdsbelastninger under k\u00f8rsel. For andre typer arbejdsbelastninger kan der v\u00e6re behov for lidt anderledes support, men alle pr\u00e6senteres som pod-niveau sidecar, node- eller VM-niveau d\u00e6moner. Vi sikrer, at alt dette implementeres som en del af den styrende infrastruktur og er koordineret mellem applikationerne, hvilket i sidste ende markant reducerer belastningen i forhold til teknisk arbejde og kundesupport.<\/p>\n<h4>Test og QA<\/h4>\n<p>\nVi har samlet en end-to-end testpipeline oven p\u00e5 den eksisterende testinfrastruktur i Kubernetes. Disse tests str\u00e6kker sig over alle vores klynger. Vores pipeline har gennemg\u00e5et mange omarbejder, f\u00f8r den blev en del af produktklyngen.<\/p>\n<p>Udover testsystemer har vi overv\u00e5gnings- og varslingssystemer, der konstant holder \u00f8je med systemkomponenternes tilstand, ressourceforbrug og andre vigtige metrics, og de varsler os kun, n\u00e5r der er behov for menneskelig indgriben.<\/p>\n<h4>Alternativer<\/h4>\n<p>\nVi har overvejet nogle alternativer til brugerdefinerede ressourcer, s\u00e5som mutationsadgangskontrollere og skabelonsystemer. Men alle disse indeb\u00e6rer betydelige driftsudfordringer, s\u00e5 vi valgte vejen med CRD.<\/p>\n<p>Mutationsadgangskontrolleren blev brugt til at indf\u00f8re sidecars, milj\u00f8variabler og anden support under k\u00f8rsel. Dog st\u00f8der den p\u00e5 forskellige problemer, for eksempel med ressourcebinding og styring af deres livscyklus, hvilket ikke opst\u00e5r med CRD.<\/p>\n<p><b>Bem\u00e6rk:<\/b> Skabelonsystemer, s\u00e5som Helm-diagrammer, anvendes ogs\u00e5 bredt til at lancere applikationer med lignende konfigurationer. Dog er vores arbejdsapplikationer for forskellige til at blive styret med skabeloner. Derudover vil der opst\u00e5 for mange fejl under kontinuerlig implementering ved brug af skabeloner.<\/p>\n<h4>Kommende arbejde<\/h4>\n<p>\nVi h\u00e5ndterer i \u00f8jeblikket en blandet belastning p\u00e5 alle vores klynger. For at underst\u00f8tte s\u00e5danne processer af forskellige typer og st\u00f8rrelser arbejder vi i f\u00f8lgende retninger:<\/p>\n<ul>\n<li>Klyngesamlingen distribuerer store applikationer p\u00e5 tv\u00e6rs af forskellige klynger for at sikre skalerbarhed og stabilitet.<\/li>\n<li>Sikring af stabilitet, skalerbarhed og synlighed af klyngen for at etablere forbindelsen mellem applikationen og dens SLA.<\/li>\n<li>Resource- og kvoteadministration, s\u00e5 applikationer ikke konflikter med hinanden, og skalaen af klyngen kontrolleres fra vores side.<\/li>\n<li>Ny CI\/CD-platform til support og implementering af applikationer i Kubernetes.<\/li>\n<\/ul>\n<p>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/itsumma\/blog\/465487\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0417\u0430 \u0433\u043e\u0434\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f Pinterest 300 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 200 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 4 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0434\u043e\u0441\u043e\u043a. \u0427\u0442\u043e\u0431\u044b \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0430\u0440\u043c\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043e\u0431\u0448\u0438\u0440\u043d\u0443\u044e \u043a\u043e\u043d\u0442\u0435\u043d\u0442-\u0431\u0430\u0437\u0443, \u043f\u043e\u0440\u0442\u0430\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e CPU, \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u0438\u043c\u0438 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0440\u0443\u0442\u044f\u0442\u0441\u044f \u043d\u0430 \u0446\u0435\u043b\u043e\u043c \u043f\u0430\u0440\u043a\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d. \u0418 \u0432\u043e\u0442 \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b \u043c\u043e\u043c\u0435\u043d\u0442, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28249,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37636","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0417\u0430 \u0433\u043e\u0434\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f Pinterest 300 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 200 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 4 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0434\u043e\u0441\u043e\u043a.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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\udd47Bygger en Kubernetes-platform i Pinterest | ProHoster","description":"I l\u00f8bet af Pinterest's eksistens har 300 millioner brugere af tjenesten oprettet over 200 milliarder pins p\u00e5 mere end 4 milliarder boards.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/37636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=37636"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/37636\/revisions"}],"predecessor-version":[{"id":158433,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/37636\/revisions\/158433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/28249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=37636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=37636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=37636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}