{"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\/it\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","title":{"rendered":"Creiamo una piattaforma Kubernetes in Pinterest","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Negli anni di esistenza di Pinterest, 300 milioni di utenti hanno creato oltre 200 miliardi di pin su pi\u00f9 di 4 miliardi di bacheche. Per gestire questo esercito di utenti e l'ampia base di contenuti, il portale ha sviluppato migliaia di servizi, partendo da microservizi che possono essere gestiti da alcune CPU, fino a giganteschi monoliti che girano su un intero parco di macchine virtuali. \u00c8 arrivato il momento in cui l'azienda ha rivolto lo sguardo a k8s. Cosa ha attratto Pinterest verso \u201cil cubo\u201d? Scoprilo nel nostro traduzione di un recente articolo dal <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/pinterest-engineering\">blog di Pinterest engineering<\/a><\/noindex>.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Creiamo una piattaforma Kubernetes in Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/71719121d8d0ed8e284b471c3bcb7328.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuindi, centinaia di milioni di utenti e centinaia di miliardi di pin. Per gestire questo esercito di utenti e l'ampia base di contenuti, abbiamo sviluppato migliaia di servizi, partendo da microservizi che possono essere gestiti da alcune CPU, fino a giganteschi monoliti che girano su un intero parco di macchine virtuali. Inoltre, abbiamo vari framework che possono richiedere anch'essi risorse di CPU, memoria o accesso alle operazioni di input\/output.<\/p>\n<p>Nel supportare questo zoo di strumenti, il team di sviluppo si confronta con una serie di sfide:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li>Non c'\u00e8 un modo unificato per avviare l'ambiente di lavoro. I servizi stateless, i servizi stateful e i progetti in fase di sviluppo si basano su stack tecnologici completamente diversi. Ci\u00f2 ha portato alla creazione di un intero corso di formazione per gli ingegneri e complica notevolmente il lavoro del nostro team di infrastruttura.<\/li>\n<li>Gli sviluppatori, avendo a disposizione il proprio parco di macchine virtuali, creano un'enorme pressione sugli amministratori interni. Di conseguenza, operazioni semplici come l'aggiornamento del sistema operativo o dell'AMI si allungano per settimane e mesi. Questo porta a un aumento del carico in situazioni apparentemente ordinarie.<\/li>\n<li>Difficolt\u00e0 nella creazione di strumenti di gestione dell'infrastruttura globali sopra le soluzioni gi\u00e0 esistenti. La situazione \u00e8 complicata dal fatto che non \u00e8 facile trovare i proprietari delle macchine virtuali. In altre parole, non sappiamo se possiamo estrarre in modo sicuro queste capacit\u00e0 per lavorare su altre parti della nostra infrastruttura.<\/li>\n<\/ul>\n<p>\nI sistemi di orchestrazione dei container sono un modo per unificare la gestione del carico di lavoro. Aprono la strada a un aumento della velocit\u00e0 di sviluppo e semplificano la gestione dell'infrastruttura, poich\u00e9 tutte le risorse coinvolte nel progetto sono gestite da un unico sistema centralizzato.<\/p>\n<p><img decoding=\"async\" alt=\"Creiamo una piattaforma Kubernetes in Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/8ce586ab31e593c99310ae2bf2a7bafb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Figura 1: Priorit\u00e0 dell'infrastruttura (affidabilit\u00e0, produttivit\u00e0 degli sviluppatori ed efficienza).<\/i><\/p>\n<p>Il team della Cloud Management Platform di Pinterest ha iniziato a conoscere K8s nel 2017. Entro la prima met\u00e0 del 2017, abbiamo documentato la maggior parte delle nostre capacit\u00e0 produttive, inclusi API e tutti i nostri <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/it\/server\/\"   title=\"server web\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1189\">server web<\/a>. Successivamente, abbiamo effettuato una valutazione attenta dei vari sistemi di orchestrazione delle soluzioni container, costruzione di cluster e interazione con essi. Entro la fine del 2017, abbiamo deciso di utilizzare Kubernetes. Era sufficientemente flessibile e ampiamente supportato dalla comunit\u00e0 di sviluppatori.<\/p>\n<p>Fino ad ora, abbiamo creato i nostri strumenti di bootstrapping del cluster basati su Kops e abbiamo migrato i componenti infrastrutturali esistenti su Kubernetes, come rete, sicurezza, metriche, logging, gestione dell'identit\u00e0 e traffico. Abbiamo anche implementato un sistema di modellazione del carico di lavoro per la nostra risorsa, la cui complessit\u00e0 \u00e8 nascosta agli sviluppatori. Attualmente ci concentriamo sulla stabilit\u00e0 del cluster, sul suo scaling e sul collegamento di nuovi clienti.<\/p>\n<h4>Kubernetes: il percorso di Pinterest<\/h4>\n<p>\nIniziare a lavorare con Kubernetes a livello di Pinterest, come piattaforma che sar\u00e0 amata dai nostri ingegneri, ha comportato molte difficolt\u00e0.<\/p>\n<p>Come grande azienda, abbiamo investito somme significative in strumenti infrastrutturali. Un esempio sono gli strumenti di sicurezza che gestiscono certificati e distribuiscono chiavi, i componenti di controllo del traffico, i sistemi di rilevamento dei servizi, i componenti di visibilit\u00e0 e invio di log e metriche. Tutto ci\u00f2 non \u00e8 stato assemblato per caso: abbiamo seguito un percorso normale di tentativi ed errori, e quindi volevamo integrare tutto questo nel nuovo sistema su Kubernetes invece di reinventare la vecchia ruota su una nuova piattaforma. Questo approccio ha semplificato la migrazione, poich\u00e9 tutto il supporto alle applicazioni esiste gi\u00e0 e non deve essere creato da zero.<\/p>\n<p>D'altra parte, i modelli di previsione dei carichi in Kubernetes (come distribuzioni, job e set Daemon) non sono sufficienti per il nostro progetto. Questi problemi di usabilit\u00e0 rappresentano enormi ostacoli alla transizione verso Kubernetes. Ad esempio, abbiamo sentito sviluppatori di servizi lamentarsi per la mancanza o la scorretta configurazione dell'ingresso. Inoltre, abbiamo riscontrato un uso scorretto dei template, creando Centinaia di copie con specifiche e job identici, il che ha portato a problemi spaventosi di debug.<\/p>\n<p>\u00c8 stato anche molto difficile mantenere diverse versioni all'interno dello stesso cluster. Immaginate le complessit\u00e0 del supporto clienti quando si deve operare su molteplici versioni della medesima runtime, con tutti i loro problemi, bug e aggiornamenti.<\/p>\n<h4>Risorse e controller personalizzati di Pinterest<\/h4>\n<p>\nPer semplificare il processo di implementazione di Kubernetes per i nostri ingegneri, e per semplificare e accelerare l'infrastruttura, abbiamo sviluppato le nostre definizioni di risorse personalizzate (CRD).<\/p>\n<p>Le CRD forniscono le seguenti funzionalit\u00e0:<\/p>\n<ol>\n<li>Combinare diverse risorse native di Kubernetes affinch\u00e9 funzionino come un unico carico. Ad esempio, la risorsa PinterestService comprende distribuzione, servizio di ingresso e config map. Questo permette agli sviluppatori di non preoccuparsi della configurazione DNS.<\/li>\n<li>Implementare il supporto necessario per le applicazioni. L'utente deve concentrarsi solo sulla specifica del contenitore in base alla sua logica di business, mentre il controller CRD implementa tutti i necessari init-container, variabili d'ambiente e specifiche pod. Questo fornisce un livello di comfort sostanzialmente diverso per gli sviluppatori.<\/li>\n<li>I controller CRD gestiscono anche il ciclo di vita delle proprie risorse e migliorano la disponibilit\u00e0 del debug. Ci\u00f2 include la riconciliazione delle specifiche desiderate e reali, l'aggiornamento dello stato CRD e il mantenimento di registri di eventi e altro ancora. Senza CRD, gli sviluppatori sarebbero costretti a gestire un numero elevato di risorse, il che aumenterebbe solo la probabilit\u00e0 di errore. <\/li>\n<\/ol>\n<p>\nEcco un esempio di PinterestService e della risorsa interna gestita dal nostro controller:<\/p>\n<p><img decoding=\"async\" alt=\"Creiamo una piattaforma Kubernetes in Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/5f76107d023d18f535447a13d41404fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nCome si pu\u00f2 vedere sopra, per supportare un contenitore personalizzato, dobbiamo integrare al suo interno un container di inizializzazione e diverse estensioni per garantire sicurezza, visibilit\u00e0 e gestione del traffico di rete. Inoltre, abbiamo creato dei template di config map e implementato supporto per template PVC per job batch, oltre a tracciare molte variabili d'ambiente per monitorare identificazione, consumo di risorse e raccolta di 'spazzatura'.<\/p>\n<p>\u00c8 difficile immaginare che gli sviluppatori vogliano scrivere questi file di configurazione manualmente senza il supporto delle CRD, per non parlare del successivo supporto e debug delle configurazioni.<\/p>\n<h4>Workflow di distribuzione delle applicazioni<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Creiamo una piattaforma Kubernetes in Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/08c953d5cf32244733cf4193c1b304bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNell'immagine sopra \u00e8 mostrato come distribuire una risorsa personalizzata Pinterest in un cluster Kubernetes:<\/p>\n<ol>\n<li>Gli sviluppatori interagiscono con il nostro cluster Kubernetes tramite CLI e interfaccia utente.<\/li>\n<li>Gli strumenti CLI \/ UI estraggono i file YAML di configurazione del workflow e altre propriet\u00e0 di build (lo stesso ID di versione) da Artifactory, quindi li inviano al Job Submission Service. Questo passaggio garantisce che nel cluster vengano distribuite solo versioni funzionanti. <\/li>\n<li>JSS \u00e8 un gateway per diverse piattaforme, inclusa Kubernetes. Qui avviene l'autenticazione dell'utente, l'assegnazione di quote e la verifica parziale della configurazione del nostro CRD.<\/li>\n<li>Dopo la verifica del CRD lato JSS, le informazioni vengono inviate all'API della piattaforma k8s.<\/li>\n<li>Il nostro controller CRD monitora gli eventi su tutte le risorse personalizzate. Trasforma CR in risorse native k8s, aggiunge i moduli necessari, imposta le variabili d'ambiente appropriate ed esegue altre operazioni ausiliarie, garantendo cos\u00ec un'adeguata supporto infrastrutturale per le applicazioni containerizzate.<\/li>\n<li>Successivamente, il controller CRD passa i dati all'API Kubernetes affinch\u00e9 possano essere elaborati dallo scheduler e messi in esecuzione.<\/li>\n<\/ol>\n<p>\n<b>Nota<\/b>: questo workflow di distribuzione pre-release \u00e8 stato creato per i primi utenti della nuova piattaforma k8s. Attualmente siamo nel processo di perfezionamento di questo processo per integrarlo completamente con il nostro nuovo CI\/CD. Ci\u00f2 significa che non possiamo rivelare tutto ci\u00f2 che riguarda Kubernetes. Non vediamo l'ora di condividere la nostra esperienza e di discutere i progressi del team in questo ambito nel nostro prossimo post sul blog 'Building a CI\/CD platform for Pinterest'.<\/p>\n<h4>Tipi di risorse speciali<\/h4>\n<p>\nIn base alle specifiche esigenze di Pinterest, abbiamo sviluppato i seguenti CRD, adatti per diversi flussi di lavoro:<\/p>\n<ul>\n<li>PinterestService \u00e8 un servizio stateless consolidato. Molti dei nostri sistemi principali si basano su un insieme di tali servizi.<\/li>\n<li>PinterestJobSet modella i job batch a ciclo completo. In Pinterest, c'\u00e8 uno scenario comune in cui diversi job avviano gli stessi container in parallelo, indipendentemente da altri processi simili.<\/li>\n<li>PinterestCronJob \u00e8 ampiamente utilizzato in combinazione con carichi di lavoro periodici leggeri. \u00c8 un'interfaccia per il lavoro cron nativo con meccanismi di supporto per Pinterest, responsabili della sicurezza, del traffico, dei log e delle metriche.<\/li>\n<li>PinterestDaemon comprende i Daemon dell'infrastruttura. Questa famiglia continua a crescere man mano che aggiungiamo sempre pi\u00f9 supporto per i nostri cluster.<\/li>\n<li>PinterestTrainingJob si estende ai processi Tensorflow e Pytorch, garantendo lo stesso livello di supporto in fase di esecuzione come tutti gli altri CRD. Poich\u00e9 Pinterest utilizza attivamente Tensorflow e altri sistemi di machine learning, avevamo motivo di costruire attorno a loro un CRD separato.<\/li>\n<\/ul>\n<p>\nStiamo inoltre lavorando su PinterestStatefulSet, che sar\u00e0 presto adattato per archiviare dati e altri sistemi stateful.<\/p>\n<h4>Supporto dell'ambiente di esecuzione<\/h4>\n<p>\nQuando un modulo applicativo viene avviato in Kubernetes, riceve automaticamente un certificato per identificarsi. Questo certificato viene utilizzato per accedere al deposito segreto o per comunicare con altri servizi tramite mTLS. Nel frattempo, il configuratore di avvio dei container e il Daemon caricheranno tutte le dipendenze necessarie prima dell'avvio dell'applicazione containerizzata. Una volta che tutto \u00e8 pronto, il sidecar del traffico e il Daemon registreranno l'indirizzo IP del modulo nel nostro Zookeeper affinch\u00e9 i clienti possano scoprirlo. Tutto ci\u00f2 funzioner\u00e0 poich\u00e9 il modulo di rete \u00e8 stato configurato prima dell'avvio dell'applicazione.<\/p>\n<p>I tratti sopra riportati sono esempi tipici di supporto per carichi di lavoro durante l'esecuzione. Per altri tipi di carichi di lavoro potrebbe essere necessario un supporto leggermente diverso, ma tutti sono rappresentati come pod sidecar, nodi o Daemon a livello di macchina virtuale. Ci assicuriamo che tutto venga distribuito all'interno dell'infrastruttura di gestione e coordinato tra le applicazioni, il che riduce significativamente il carico in termini di lavoro tecnico e supporto clienti.<\/p>\n<h4>Testing e QA<\/h4>\n<p>\nAbbiamo costruito una pipeline di test end-to-end sopra l'infrastruttura di test gi\u00e0 esistente in Kubernetes. Questi test coprono tutti i nostri cluster. La nostra pipeline ha subito molte modifiche prima di diventare parte del cluster di produzione.<\/p>\n<p>Oltre ai sistemi di test, abbiamo sistemi di monitoraggio e alerting che controllano costantemente lo stato dei componenti del sistema, l'utilizzo delle risorse e altre metriche importanti, avvisandoci solo se \u00e8 necessario un intervento umano.<\/p>\n<h4>Alternative<\/h4>\n<p>\nAbbiamo considerato alcune alternative alle risorse personalizzate, come i controllori di accesso mutativi e i sistemi di templates. Tuttavia, tutte comportano serie difficolt\u00e0 operative, quindi abbiamo scelto la strada del CRD.<\/p>\n<p>Il controllore di accesso mutativo \u00e8 stato utilizzato per introdurre sidecar, variabili d'ambiente e altro supporto in fase di esecuzione. Tuttavia, ha incontrato vari problemi, come il binding delle risorse e la gestione del loro ciclo di vita, mentre in CRD non si presentano tali problemi.<\/p>\n<p><b>Nota:<\/b> I sistemi di templates, come i diagrammi Helm, sono ampiamente utilizzati per avviare applicazioni con configurazioni simili. Tuttavia, le nostre applicazioni operative sono troppo diverse per essere gestite tramite templates. Inoltre, nel corso del deployment continuo, l'uso di templates produce troppo errori.<\/p>\n<h4>Lavori futuri<\/h4>\n<p>\nAttualmente affrontiamo un carico di lavoro misto in tutti i nostri cluster. Per sostenere processi di vari tipi e dimensioni, stiamo lavorando nelle seguenti direzioni:<\/p>\n<ul>\n<li>La combinazione di cluster distribuisce grandi applicazioni su diversi cluster per garantire scalabilit\u00e0 e stabilit\u00e0.<\/li>\n<li>Garantire stabilit\u00e0, scalabilit\u00e0 e visibilit\u00e0 del cluster per stabilire un collegamento tra l'applicazione e il suo SLA.<\/li>\n<li>Gestione delle risorse e delle quote, per evitare conflitti tra le applicazioni e monitorare le dimensioni del cluster dalla nostra parte.<\/li>\n<li>Nuova piattaforma CI\/CD per supportare e distribuire applicazioni in Kubernetes.<\/li>\n<\/ul>\n<p>Fonte: <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.0.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\/it\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47Creiamo una piattaforma Kubernetes in Pinterest | ProHoster","description":"Nel corso degli anni, Pinterest ha visto 300 milioni di utenti creare oltre 200 miliardi di pin su pi\u00f9 di 4 miliardi di board.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/37636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=37636"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/37636\/revisions"}],"predecessor-version":[{"id":158433,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/37636\/revisions\/158433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/28249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=37636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=37636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=37636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}