{"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\/no\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","title":{"rendered":"Vi oppretter en kubernetes-plattform i Pinterest","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>I l\u00f8pet av Pinterest sin eksistens har 300 millioner brukere av tjenesten laget mer enn 200 milliarder pins p\u00e5 over 4 milliarder tavler. For \u00e5 betjene denne horde av brukere og den omfattende innholdsbasen, har portalen utviklet tusenvis av tjenester, fra mikrotjenester som kan h\u00e5ndteres av flere CPU-er, til gigantiske monolitter som kj\u00f8rer p\u00e5 en hel fl\u00e5te av virtuelle maskiner. Og n\u00e5 har \u00f8ynene til selskapet blitt rettet mot k8s. Hva er det som fanger Pinterest sin interesse for \u00abkubene\u00bb? Dette vil du finne ut i v\u00e5r oversettelse av en fersk artikkel fra <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/pinterest-engineering\">bloggen til Pinterest engineering<\/a><\/noindex>.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Vi oppretter en kubernetes-plattform i Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/71719121d8d0ed8e284b471c3bcb7328.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00e5, hundrevis av millioner brukere og hundrevis av milliarder pins. For \u00e5 betjene denne horde av brukere og den omfattende innholdsbasen, har vi utviklet tusenvis av tjenester, fra mikrotjenester som kan h\u00e5ndteres av flere CPU-er, til gigantiske monolitter som kj\u00f8rer p\u00e5 en hel fl\u00e5te av virtuelle maskiner. I tillegg har vi diverse rammeverk som ogs\u00e5 kan kreve CPU-ressurser, minne eller tilgang til I\/O-operasjoner.<\/p>\n<p>I st\u00f8tte av denne dyrehagen av verkt\u00f8y st\u00e5r utviklingsteamet overfor en rekke utfordringer:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li>Ingeni\u00f8rene har ikke en enhetlig m\u00e5te \u00e5 starte arbeidsmilj\u00f8et p\u00e5. Stateless-tjenester, Stateful-tjenester og prosjekter under aktiv utvikling er basert p\u00e5 helt forskjellige teknologiske stakker. Dette har f\u00f8rt til opprettelsen av et helt oppl\u00e6ringskurs for ingeni\u00f8rer, og gj\u00f8r ogs\u00e5 arbeidet v\u00e5rt infrastrukturteam betydelig mer komplisert.<\/li>\n<li>Utviklere som har sin egen fl\u00e5te av virtuelle maskiner, skaper enorm belastning for interne administratorer. Resultatet er at selv enkle operasjoner, som oppdatering av OS eller AMI, strekker seg over uker og m\u00e5neder. Dette f\u00f8rer til \u00f8kt belastning i situasjoner som tilsynelatende virker hverdagslige.<\/li>\n<li>Utfordringer med \u00e5 lage globale verkt\u00f8y for infrastrukturadministrasjon over allerede eksisterende l\u00f8sninger. Situasjonen forverres ogs\u00e5 av at det ikke er lett \u00e5 finne eiere av de virtuelle maskinene. Det vil si at vi ikke vet om vi trygt kan trekke disse kreftene for \u00e5 bruke dem p\u00e5 andre omr\u00e5der i v\u00e5r infrastruktur.<\/li>\n<\/ul>\n<p>\nContainerty system for orchestration er en metode for \u00e5 forene styring av arbeidsbelastning. De gir deg muligheten til \u00e5 \u00f8ke utviklingshastigheten og forenkle administrasjonen av infrastrukturen, ettersom alle ressurser involvert i prosjektet styres av et sentralisert system.<\/p>\n<p><img decoding=\"async\" alt=\"Vi oppretter en kubernetes-plattform i Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/8ce586ab31e593c99310ae2bf2a7bafb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Figur 1: Infrastrukturprioriteringer (p\u00e5litelighet, utviklerens ytelse og effektivitet).<\/i><\/p>\n<p>Cloud Management Platform-teamet hos Pinterest ble kjent med K8s i 2017. I f\u00f8rste halvdel av 2017 dokumenterte vi mye av v\u00e5r produksjonskapasitet, inkludert API-er og alle v\u00e5re <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/no\/server\/\"   title=\"webservere\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1189\">webservere<\/a>. Deretter gjennomf\u00f8rte vi en grundig evaluering av ulike systemer for orkestrering av containerl\u00f8sninger, oppbygging av klynger og drift med dem. Ved slutten av 2017 besluttet vi \u00e5 ta i bruk Kubernetes. Det var fleksibelt nok og fikk bred st\u00f8tte i utviklermilj\u00f8et.<\/p>\n<p>Per n\u00e5 har vi utviklet egne prim\u00e6rstartverkt\u00f8y for klyngen basert p\u00e5 Kops og migrert eksisterende infrastrukturkomponenter til Kubernetes \u2014 som nettverk, sikkerhet, metrikker, logging, identitetsadministrasjon og trafikk. Vi har ogs\u00e5 implementert et system for modellering av arbeidsbelastninger for v\u00e5r ressurs, der kompleksiteten er skjult for utviklerne. N\u00e5 er vi fokusert p\u00e5 \u00e5 sikre stabiliteten til klyngen, dens skalering og tilknytning av nye kunder.<\/p>\n<h4>Kubernetes: veien til Pinterest<\/h4>\n<p>\n\u00c5 komme i gang med Kubernetes i stor skala hos Pinterest som en plattform som v\u00e5re ingeni\u00f8rer vil elske, f\u00f8rte til mange utfordringer.<\/p>\n<p>Som et stort selskap har vi investert betydelige midler i infrastrukturverkt\u00f8y. Eksempler inkluderer sikkerhetsverkt\u00f8y som h\u00e5ndterer sertifikater og fordeler n\u00f8kler, trafikkontrollkomponenter, tjenesteoppdagelsessystemer, synlighetskomponenter og utsendelse av logger og metrikker. Alt dette ble samlet p\u00e5 en logisk m\u00e5te: vi har g\u00e5tt gjennom en normal prosess med pr\u00f8ving og feiling, og derfor \u00f8nsket vi \u00e5 integrere alt dette i den nye infrastrukturen basert p\u00e5 Kubernetes, i stedet for \u00e5 finne opp det gamle hjulet p\u00e5 en ny plattform. Denne tiln\u00e6rmingen har generelt forenklet migrasjonen, ettersom all st\u00f8tte for applikasjoner allerede eksisterer og ikke m\u00e5 bygges fra bunnen av.<\/p>\n<p>P\u00e5 den annen side er det ikke tilstrekkelig med modeller for lastprognoser i Kubernetes selv (for eksempel distribusjoner, oppgaver og Daemon-sett) for prosjektet v\u00e5rt. Disse brukervennlighetsproblemene utgj\u00f8r enorme hindringer for overgangen til Kubernetes. For eksempel har vi h\u00f8rt utviklere av tjenester klage over mangel p\u00e5 eller feilkonfigurert innlogging. Vi har ogs\u00e5 opplevd feil bruk av malmotorer, der hundrevis av kopier med identisk spesifikasjon og oppgave ble opprettet, noe som f\u00f8rte til marerittproblemer med feils\u00f8king.<\/p>\n<p>Det har ogs\u00e5 v\u00e6rt sv\u00e6rt vanskelig \u00e5 st\u00f8tte ulike versjoner i samme klynge. Tenk deg kompleksiteten i kundest\u00f8tte n\u00e5r du m\u00e5 jobbe med flere versjoner av samme kj\u00f8ringsmilj\u00f8, med alle deres problemer, feil og oppdateringer.<\/p>\n<h4>Brukerressurser og kontrollerere for Pinterest<\/h4>\n<p>\nFor \u00e5 lette prosessen med \u00e5 implementere Kubernetes for ingeni\u00f8rene v\u00e5re, samt for \u00e5 forenkle infrastrukturen og akselerere dens drift, har vi utviklet v\u00e5re egne definisjoner av brukerressurser (CRD).<\/p>\n<p>CRD gir f\u00f8lgende funksjonalitet:<\/p>\n<ol>\n<li>Sammenfletting av diverse native Kubernetes-ressurser slik at de fungerer som en enhetlig last. For eksempel inkluderer ressursen PinterestService distribusjon, inngangstjeneste og konfigurasjonskart. Dette gj\u00f8r det mulig for utviklere \u00e5 ikke bekymre seg for DNS-innstillinger.<\/li>\n<li>Implementering av n\u00f8dvendig applikasjonsst\u00f8tte. Brukeren m\u00e5 kun fokusere p\u00e5 spesifikasjonen til containeren i henhold til sin forretningslogikk, mens CRD-kontrollereren implementerer alle n\u00f8dvendige init-containere, milj\u00f8variabler og pod-spesifikasjoner. Dette gir en prinsipielt annen komfortniv\u00e5 for utviklerne.<\/li>\n<li>CRD-kontrollerere h\u00e5ndterer ogs\u00e5 livssyklusen til egne ressurser og \u00f8ker tilgjengeligheten av feils\u00f8king. Dette inkluderer \u00e5 matche \u00f8nskede og reelle spesifikasjoner, oppdatere CRD-status og f\u00f8re loggf\u00f8ring av hendelser og mer. Uten CRD ville utviklere v\u00e6rt n\u00f8dt til \u00e5 h\u00e5ndtere et stort antall ressurser, noe som bare ville \u00f8kt sjansen for feil. <\/li>\n<\/ol>\n<p>\nHer er et eksempel p\u00e5 PinterestService og en intern ressurs som administreres av kontrollereren v\u00e5r:<\/p>\n<p><img decoding=\"async\" alt=\"Vi oppretter en kubernetes-plattform i Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/5f76107d023d18f535447a13d41404fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nSom viste ovenfor, for \u00e5 st\u00f8tte den brukerdefinerte containeren er vi n\u00f8dt til \u00e5 integrere den med en initialiseringscontainer og flere tillegg for \u00e5 sikre sikkerhet, synlighet og h\u00e5ndtering av nettverkstrafikk. I tillegg har vi laget konfigurasjonskartmaler og implementert st\u00f8tte for PVC-maler for batchjobber, samt sporing av mange milj\u00f8variabler for \u00e5 spore identifikasjon, ressursforbruk og samle \u00abs\u00f8ppel\u00bb.<\/p>\n<p>Det er vanskelig \u00e5 forestille seg at utviklere vil skrive disse konfigurasjonsfilene manuelt uten st\u00f8tte fra CRD, for ikke \u00e5 nevne videre vedlikehold og feils\u00f8king av konfigurasjoner.<\/p>\n<h4>Arbeidsflyt for distribusjon av applikasjoner<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Vi oppretter en kubernetes-plattform i Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/08c953d5cf32244733cf4193c1b304bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFiguren ovenfor viser hvordan man distribuerer en brukerdefinert Pinterest-ressurs i et Kubernetes-kluster:<\/p>\n<ol>\n<li>Utviklere samhandler med v\u00e5rt Kubernetes-kluster via CLI og brukergrensesnittet.<\/li>\n<li>CLI- og UI-verkt\u00f8y henter YAML-konfigurasjonsfiler for arbeidsflyten og andre produksjonsegenskaper (samme versjonsidentifikator) fra Artifactory, f\u00f8r de sender dem til Job Submission Service. Dette trinnet sikrer at bare arbeidsversjoner blir levert til klusteren. <\/li>\n<li>JSS fungerer som en bro for forskjellige plattformer, inkludert Kubernetes. Her skjer brukerautentisering, kvoteutdeling og delvis validering av konfigurasjonen til v\u00e5r CRD.<\/li>\n<li>Etter at CRD er validert av JSS, sendes informasjonen til API-en til k8s-plattformen.<\/li>\n<li>V\u00e5r CRD-kontroller overv\u00e5ker hendelser p\u00e5 alle brukerdefinerte ressurser. Den omformer CR til native k8s-ressurser, legger til n\u00f8dvendige moduler, setter passende milj\u00f8variabler og utf\u00f8rer andre st\u00f8tteoppgaver, som sikrer at brukerdefinerte applikasjoner f\u00e5r tilstrekkelig infrastrukturell st\u00f8tte.<\/li>\n<li>Deretter overf\u00f8rer CRD-kontrolleren de mottatte dataene til Kubernetes API, slik at de kan bli behandlet av planleggeren og iverksatt.<\/li>\n<\/ol>\n<p>\n<b>Merk<\/b>: dette pre-release arbeidsflyt for distribusjon ble opprettet for de tidlige brukerne av den nye k8s-plattformen. Vi er n\u00e5 i prosessen med \u00e5 forbedre denne prosessen for fullt \u00e5 integrere med v\u00e5r nye CI\/CD. Dette betyr at vi ikke kan dele alt som har med Kubernetes \u00e5 gj\u00f8re. Vi ser frem til \u00e5 kunne dele v\u00e5r erfaring og fortelle om teamets fremgang p\u00e5 dette omr\u00e5det i v\u00e5r neste blogginnlegg \u00abBygge en CI\/CD-plattform for Pinterest\u00bb.<\/p>\n<h4>Typer spesielle ressurser<\/h4>\n<p>\nBasert p\u00e5 de spesifikke behovene til Pinterest har vi utviklet f\u00f8lgende CRD-er som passer for ulike arbeidsprosesser:<\/p>\n<ul>\n<li>PinterestService er allerede veldrevne stateless-tjenester. Mange av v\u00e5re kjerne systemer er basert p\u00e5 en samling av slike tjenester.<\/li>\n<li>PinterestJobSet modellerer batchjobber med full syklus. I Pinterest finnes det et vanlig scenario der flere jobber kj\u00f8rer de samme containerne parallelt, uavhengig av andre lignende prosesser.<\/li>\n<li>PinterestCronJob brukes i stor grad sammen med sm\u00e5 periodiske belastninger. Dette er et skall for nativen cron-funksjonalitet med st\u00f8tte mekanismer for Pinterest, som h\u00e5ndterer sikkerhet, trafikk, logger og m\u00e5linger.<\/li>\n<li>PinterestDaemon inkluderer infrastruktur-Daemon-er. Denne familien fortsetter \u00e5 vokse ettersom vi legger til mer st\u00f8tte for v\u00e5re klynger.<\/li>\n<li>PinterestTrainingJob dekker prosesser i Tensorflow og Pytorch og gir samme st\u00f8tte under kj\u00f8ring som alle andre CRD-er. Siden Pinterest aktivt bruker Tensorflow og andre maskinl\u00e6ringssystemer, var det fornuftig \u00e5 bygge en egen CRD rundt dem.<\/li>\n<\/ul>\n<p>\nVi jobber ogs\u00e5 med PinterestStatefulSet, som snart vil bli tilpasset for datalagring og andre stateful-systemer.<\/p>\n<h4>St\u00f8tte for kj\u00f8re milj\u00f8<\/h4>\n<p>\nN\u00e5r applikasjonsmodulen startes i Kubernetes, f\u00e5r den automatisk et sertifikat for \u00e5 identifisere seg selv. Dette sertifikatet brukes for tilgang til hemmelighetshyllen eller for kommunikasjon med andre tjenester via mTLS. I mellomtiden vil containerinitiereren og Daemon laste ned alle n\u00f8dvendige avhengigheter f\u00f8r containerapplikasjonen startes. N\u00e5r alt er klart, vil sidecar for trafikk og Daemon registrere modulen sin IP-adresse i v\u00e5r Zookeeper, slik at klienter kan oppdage den. Alt dette vil fungere, ettersom nettverksmodulen ble konfigurert f\u00f8r applikasjonen ble startet.<\/p>\n<p>Ovenfor er typiske eksempler p\u00e5 st\u00f8tte for arbeidsmengder under kj\u00f8ring. For andre typer arbeidsmengder kan det kreves noe annen st\u00f8tte, men alle presenteres som sidecars p\u00e5 pod-niv\u00e5, nodeniv\u00e5 eller Daemon-er p\u00e5 virtuell maskinniv\u00e5. Vi s\u00f8rger for at alt blir implementert innenfor styringsinfrastrukturen og er koordinert mellom applikasjonene, noe som betydelig reduserer arbeidsbelastningen n\u00e5r det gjelder teknisk arbeid og kundest\u00f8tte.<\/p>\n<h4>Testing og QA<\/h4>\n<p>\nVi har samlet et end-to-end testpipeline over den eksisterende testinfrastrukturen i Kubernetes. Disse testene gjelder for alle v\u00e5re klynger. V\u00e5r pipeline har gjennomg\u00e5tt mange omarbeidelser f\u00f8r den ble en del av produktklyngen.<\/p>\n<p>I tillegg til testsystemene v\u00e5re har vi overv\u00e5kings- og varselsystemer som kontinuerlig overv\u00e5ker tilstanden til systemkomponentene, ressursforbruket og andre viktige indikatorer, og varsler oss kun n\u00e5r menneskelig inngripen er n\u00f8dvendig.<\/p>\n<h4>Alternativer<\/h4>\n<p>\nVi har vurdert noen alternativer til tilpassede ressurser, som mutasjonskontrollere og malssystemer. Imidlertid er alle de medf\u00f8lgende alvorlige vanskeligheter i drift, s\u00e5 vi valgte veien med CRD.<\/p>\n<p>Mutasjonskontrolleren ble brukt for \u00e5 introdusere sidecars, milj\u00f8variabler og annen st\u00f8tte under kj\u00f8ring. Den m\u00f8tte imidlertid ulike problemer, som ressursbinding og livssyklusstyring, mens det ikke oppst\u00e5r slike problemer i CRD.<\/p>\n<p><b>Merk:<\/b> Mal jaket system, som Helm-diagram, blir ogs\u00e5 mye brukt for \u00e5 kj\u00f8re applikasjoner med lignende konfigurasjoner. Imidlertid er v\u00e5re arbeidsapplikasjoner for varierte til \u00e5 kunne administreres med maler. I tillegg vil det oppst\u00e5 for mange feil under kontinuerlig distribusjon n\u00e5r man bruker maler.<\/p>\n<h4>Kommende arbeid<\/h4>\n<p>\nN\u00e5 h\u00e5ndterer vi en blandet belastning p\u00e5 alle klusterne v\u00e5re. For \u00e5 st\u00f8tte slike prosesser av forskjellig type og st\u00f8rrelse, arbeider vi med f\u00f8lgende retninger:<\/p>\n<ul>\n<li>Klyngen fordeler store applikasjoner p\u00e5 forskjellige kluster for \u00e5 sikre skalerbarhet og stabilitet.<\/li>\n<li>\u00c5 sikre stabilitet, skalerbarhet og synlighet for klusteret for \u00e5 skape forbindelsen mellom applikasjonen og dens SLA.<\/li>\n<li>Administrasjon av ressurser og kvoter, slik at applikasjoner ikke st\u00e5r i konflikt med hverandre, og at skalaen p\u00e5 klusteret kan kontrolleres fra v\u00e5r side.<\/li>\n<li>Ny CI\/CD-plattform for \u00e5 st\u00f8tte og distribuere applikasjoner 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.5 - 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\/no\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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\udd47Vi skaper en kubernetes-plattform i Pinterest | ProHoster","description":"I l\u00f8pet av \u00e5rene har Pinterest 300 millioner brukere av tjenesten laget over 200 milliarder pins p\u00e5 mer enn 4 milliarder tavler.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/37636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=37636"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/37636\/revisions"}],"predecessor-version":[{"id":158433,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/37636\/revisions\/158433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/28249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=37636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=37636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=37636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}