{"id":34825,"date":"2019-10-31T22:00:35","date_gmt":"2019-10-31T19:00:35","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah\/"},"modified":"2019-10-31T22:00:35","modified_gmt":"2019-10-31T19:00:35","slug":"kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","title":{"rendered":"Come collegare cluster Kubernetes in diversi data center","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Come collegare cluster Kubernetes in diversi data center\" src=\"\/wp-content\/uploads\/2019\/06\/fa408b406e31840857bbbe13e1d7ee5a.JPG\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<strong>Benvenuti nella serie di brevi guide su Kubernetes.<\/strong> Questa \u00e8 una rubrica regolare con le domande pi\u00f9 interessanti che riceviamo online e nei nostri corsi di formazione. Risponde un esperto di Kubernetes.<\/p>\n<p><\/p>\n<blockquote><p>L'esperto di oggi \u00e8 Daniel Polencic (<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/danielepolencic\">Daniele Polencic<\/a><\/noindex>). Daniel lavora come istruttore e sviluppatore software in <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/\">Learnk8s<\/a><\/noindex>.<\/p><\/blockquote>\n<p>Se desideri ricevere una risposta alla tua domanda nel prossimo post, <noindex><a rel=\"nofollow\" href=\"http:\/\/hello@learnk8s.io\">contattaci via email<\/a><\/noindex> oppure nel <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/learnk8s\">Twitter: @learnk8s<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Hai perso i post precedenti? <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/visualise-dependencies-kubernetes\">Cercali qui<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"kak-soedinit-klastery-kubernetes-v-raznyh-data-centrah\">Come collegare cluster Kubernetes in diversi data center?<\/h3>\n<p><\/p>\n<blockquote><p><strong>In sintesi<\/strong>: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">uscir\u00e0 presto Kubefed v2<\/a><\/noindex>, e ti consiglio di leggere anche su <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">Shipper<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/admiraltyio\/multicluster-scheduler\">progetto multi-cluster-scheduler<\/a><\/noindex>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Spesso l'infrastruttura viene replicata e distribuita in diverse regioni, specialmente in ambienti controllati.<\/p><\/blockquote>\n<p><strong>Se una regione non \u00e8 disponibile, il traffico viene reindirizzato in un'altra per evitare interruzioni.<\/strong><\/p>\n<p><\/p>\n<p>Con Kubernetes puoi utilizzare una strategia simile e distribuire i carichi di lavoro in diverse regioni.<\/p>\n<p><\/p>\n<p>Puoi avere uno o pi\u00f9 cluster per team, regione, ambiente o una combinazione di questi elementi.<\/p>\n<p><\/p>\n<p>I tuoi cluster possono essere ospitati in diverse nuvole e in locale.<\/p>\n<p><\/p>\n<p><em>Ma come pianificare l'infrastruttura per una tale dispersione geografica?<br \/>\nDevi creare un grande cluster su diverse nuvole attraverso una rete unitaria?<br \/>\nO creare molti piccoli cluster e trovare un modo per controllarli e sincronizzarli?<\/em><\/p>\n<p><\/p>\n<h3 id=\"odin-rukovodyaschiy-klaster\">Un cluster di gestione<\/h3>\n<p><\/p>\n<p><em>Creare un cluster su una rete unitaria non \u00e8 cos\u00ec semplice.<\/em><\/p>\n<p><\/p>\n<p>Immagina di avere un guasto, persa la connettivit\u00e0 tra i segmenti del cluster.<\/p>\n<p><\/p>\n<p>Se hai un solo master server, met\u00e0 delle risorse non sar\u00e0 in grado di ricevere nuovi comandi, perch\u00e9 non riescono a contattare il master.<\/p>\n<p><\/p>\n<p>E in questo caso hai vecchie tabelle di routing (<code>kube-proxy<\/code> non pu\u00f2 caricare nuove) e nessun pod aggiuntivo (kubelet non pu\u00f2 richiedere aggiornamenti).<\/p>\n<p><\/p>\n<p>Cosa ancora peggiore, se Kubernetes non vede un nodo, lo contrassegna come perso e distribuisce i pod mancanti sui nodi esistenti.<\/p>\n<p><\/p>\n<p><strong>Alla fine hai il doppio dei pod.<\/strong><\/p>\n<p><\/p>\n<p>Se fai un master server per ogni regione, ci saranno problemi con l'algoritmo di consenso nel database etcd. (<em>Nota del redattore \u2014 In realt\u00e0, il database etcd non deve necessariamente trovarsi sui server master. Pu\u00f2 essere avviato su un gruppo separato di server in una regione. Tuttavia, ci\u00f2 comporta un punto di guasto del cluster. Ma \u00e8 veloce.<\/em>)<\/p>\n<p><\/p>\n<p>etcd utilizza <noindex><a rel=\"nofollow\" href=\"http:\/\/thesecretlivesofdata.com\/raft\/\">l'algoritmo raft<\/a><\/noindex>, per concordare un valore prima di scriverlo su disco.<br \/>\nCio\u00e8, la maggior parte delle istanze deve raggiungere un consenso prima che lo stato possa essere scritto in etcd.<\/p>\n<p><\/p>\n<p>Se la latenza tra le istanze etcd aumenta drasticamente, come nel caso di tre istanze etcd in regioni diverse, ci vuole molto tempo per concordare il valore e scriverlo su disco.<br \/>\nCi\u00f2 si riflette anche nei controller di Kubernetes.<\/p>\n<p><\/p>\n<p>Il manager dei controller ha bisogno di pi\u00f9 tempo per apprendere il cambiamento e registrare la risposta nel database.<\/p>\n<p><\/p>\n<p>E poich\u00e9 ci sono pi\u00f9 di un controller, <strong>si ottiene una reazione a catena, e l'intero cluster inizia a funzionare molto lentamente.<\/strong>.<\/p>\n<p><\/p>\n<p>etcd \u00e8 cos\u00ec sensibile alla latenza che <noindex><a rel=\"nofollow\" href=\"https:\/\/coreos.com\/etcd\/docs\/latest\/faq.html#deployment\">nella documentazione ufficiale si raccomanda di utilizzare SSD invece dei normali dischi rigidi.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><strong>Attualmente non esistono buoni esempi di una rete grande per un unico cluster.<\/strong><\/p>\n<p><\/p>\n<p>In generale, la comunit\u00e0 degli sviluppatori e il gruppo SIG-cluster stanno cercando di capire come orchestrare i cluster cos\u00ec come Kubernetes orchestra i container.<\/p>\n<p><\/p>\n<h3 id=\"variant-1-federaciya-klasterov-s-kubefed\">Opzione 1: federazione di cluster con kubefed<\/h3>\n<p><\/p>\n<p>La risposta ufficiale del SIG-cluster \u00e8 \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">kubefed2, la nuova versione del client e dell'operatore di kube federation<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Per la prima volta, la gestione di una collezione di cluster come un'unica entit\u00e0 \u00e8 stata tentata con lo strumento kube federation.<\/p>\n<p><\/p>\n<p>L'inizio era buono, ma alla fine kube federation non \u00e8 diventato popolare, poich\u00e9 non supportava tutte le risorse.<\/p>\n<p><\/p>\n<p>Supportava le distribuzioni aggregate e i servizi, ma, ad esempio, non i StatefulSets.<br \/>\nInoltre, la configurazione della federazione veniva trasmessa sotto forma di annotazioni e mancava di flessibilit\u00e0.<\/p>\n<p><\/p>\n<p><em>Immaginate come si potrebbe descrivere la suddivisione delle repliche per ciascun cluster nella federazione utilizzando solo annotazioni.<\/em><\/p>\n<p><\/p>\n<p><strong>\u00c8 diventato un completo disastro.<\/strong><\/p>\n<p><\/p>\n<p>SIG-cluster ha fatto un grande lavoro dopo kubefed v1 e ha deciso di affrontare il problema da un'altra prospettiva.<\/p>\n<p><\/p>\n<p><strong>Invece delle annotazioni, hanno deciso di rilasciare un controller che si installa sui cluster. Pu\u00f2 essere configurato utilizzando definizioni di risorse personalizzate (Custom Resource Definition, CRD).<\/strong><\/p>\n<p><\/p>\n<p>Per ogni risorsa che entrer\u00e0 a far parte della federazione, hai una definizione CRD personalizzata suddivisa in tre sezioni:<\/p>\n<p><\/p>\n<ul>\n<li>definizione standard della risorsa, come un deployment;<\/li>\n<li>con l'interruttore della pseudo-classe <code>placement<\/code>, dove definisci come la risorsa sar\u00e0 distribuita nella federazione;<\/li>\n<li>con l'interruttore della pseudo-classe <code>override<\/code>, dove per una risorsa specifica \u00e8 possibile sovrascrivere il peso e i parametri dal placement.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ecco un esempio di deployment combinato con le sezioni placement e override.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">apiVersion: types.federation.k8s.io\/v1alpha1\nkind: FederatedDeployment\nmetadata:\n  name: test-deployment\n  namespace: test-namespace\nspec:\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      replicas: 3\n      selector:\n        matchLabels:\n          app: nginx\n      template:\n        metadata:\n          labels:\n            app: nginx\n        spec:\n          containers:\n            - image: nginx\n              name: nginx\n  placement:\n    clusterNames:\n      - cluster2\n      - cluster1\n  overrides:\n    - clusterName: cluster2\n      clusterOverrides:\n        - path: spec.replicas\n          value: 5<\/code><\/pre>\n<p><\/p>\n<p>Come puoi vedere, il deployment \u00e8 distribuito su due cluster: <code>cluster1<\/code> e <code>cluster2<\/code>.<\/p>\n<p><\/p>\n<p>Il primo cluster fornisce tre repliche, mentre al secondo \u00e8 stato assegnato il valore 5.<\/p>\n<p><\/p>\n<p>Se hai bisogno di maggior controllo sul numero di repliche, kubefed2 fornisce un nuovo oggetto ReplicaSchedulingPreference, dove le repliche possono essere distribuite in base al peso:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">apiVersion: scheduling.federation.k8s.io\/v1alpha1\nkind: ReplicaSchedulingPreference\nmetadata:\n  name: test-deployment\n  namespace: test-ns\nspec:\n  targetKind: FederatedDeployment\n  totalReplicas: 9\n  clusters:\n    A:\n      weight: 1\n    B:\n      weight: 2<\/code><\/pre>\n<p><\/p>\n<p>La struttura del CRD e dell'API non \u00e8 ancora del tutto pronta, e stiamo lavorando attivamente nel repository ufficiale del progetto.<\/p>\n<p><\/p>\n<p><strong>Tieni d'occhio kubefed2, ma ricorda che al momento non \u00e8 adatto per un ambiente di produzione.<\/strong><\/p>\n<p><\/p>\n<p>Scopri di pi\u00f9 su kubefed2 in <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2018\/12\/12\/kubernetes-federation-evolution\/\">un articolo ufficiale su kubefed2<\/a><\/noindex> nel blog su Kubernetes e nel <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">repository ufficiale del progetto kubefed<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"variant-2-obedinenie-klasterov-v-stile-bookingcom\">Opzione 2: fusione di cluster in stile Booking.com<\/h3>\n<p><\/p>\n<p>Gli sviluppatori di Booking.com non si sono occupati di kubefed v2, ma hanno inventato Shipper\u2014un operatore per le consegne su pi\u00f9 cluster, in pi\u00f9 regioni e in pi\u00f9 cloud.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">Shipper<\/a><\/noindex> Simile a kubefed2.<\/p>\n<p><\/p>\n<p>Entrambi gli strumenti consentono di configurare la strategia di distribuzione su pi\u00f9 cluster (quali cluster utilizzare e quante repliche hanno).<\/p>\n<p><\/p>\n<p>Ma <strong>L'obiettivo di Shipper \u00e8 ridurre il rischio di errori durante la distribuzione.<\/strong><\/p>\n<p><\/p>\n<p>In Shipper puoi definire una serie di passaggi che descrivono la suddivisione delle repliche tra il deployment precedente e quello attuale e il volume del traffico in arrivo.<\/p>\n<p><\/p>\n<p>Quando invii una risorsa a un cluster, il controller Shipper distribuisce progressivamente questa modifica su tutti i cluster combinati.<\/p>\n<p><\/p>\n<p><em>Inoltre, Shipper \u00e8 molto limitato.<\/em><\/p>\n<p><\/p>\n<p>Ad esempio, <strong>Accetta Helm charts come input<\/strong> e non supporta le risorse vanilla.<br \/>\nIn linea generale, Shipper funziona nel seguente modo.<\/p>\n<p><\/p>\n<p>Invece della fornitura standard, \u00e8 necessario creare una risorsa applicativa che includa un Helm chart:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">apiVersion: shipper.booking.com\/v1alpha1\nkind: Application\nmetadata:\n  name: super-server\nspec:\n  revisionHistoryLimit: 3\n  template:\n    chart:\n      name: nginx\n      repoUrl: https:\/\/storage.googleapis.com\/shipper-demo\n      version: 0.0.1\n    clusterRequirements:\n      regions:\n        - name: local\n    strategy:\n      steps:\n        - capacity:\n            contender: 1\n            incumbent: 100\n          name: staging\n          traffic:\n            contender: 0\n            incumbent: 100\n        - capacity:\n            contender: 100\n            incumbent: 0\n          name: full on\n          traffic:\n            contender: 100\n            incumbent: 0\n    values:\n      replicaCount: 3<\/code><\/pre>\n<p><\/p>\n<p><strong>Shipper \u00e8 una buona opzione per gestire pi\u00f9 cluster, ma il suo stretto legame con Helm risulta solo un ostacolo.<\/strong><\/p>\n<p><\/p>\n<p><em>E se tutti noi passassimo da Helm a <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2018\/05\/29\/introducing-kustomize-template-free-configuration-customization-for-kubernetes\/\">kustomize<\/a><\/noindex> o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deepmind\/kapitan\">kapitan<\/a><\/noindex>?<\/em><\/p>\n<p><\/p>\n<p>Scopri di pi\u00f9 su Shipper e sulla sua filosofia in <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/booking-com-infrastructure\/introducing-shipper-daf9244e3882\">questo comunicato stampa ufficiale<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Se vuoi dare un'occhiata al codice, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">vai al repository ufficiale del progetto<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"variant-3-magicheskoe-obedinenie-klasterov\">Opzione 3: \u00abmagico\u00bb assemblaggio di cluster<\/h3>\n<p><\/p>\n<p>Kubefed v2 e Shipper lavorano con gli insiemi di cluster, fornendo nuovi risorse ai cluster tramite definizioni di risorse personalizzate.<\/p>\n<p><\/p>\n<p><em>Ma se non vuoi riscrivere tutte le forniture, StatefulSets, DaemonSets e cos\u00ec via per integrare?<\/em><\/p>\n<p><\/p>\n<p><em>Come includere un cluster esistente nella federazione senza modificare il YAML?<\/em><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/admiraltyio\/multicluster-scheduler\">multi-cluster-scheduler \u00e8 un progetto di Admirality<\/a><\/noindex>, che gestisce i carichi di lavoro di programmazione nei cluster.<\/p>\n<p><\/p>\n<p>Ma invece di inventare un nuovo modo di interagire con il cluster e avvolgere le risorse in definizioni personalizzate, multi-cluster-scheduler si integra nel ciclo di vita standard di Kubernetes e intercetta tutte le chiamate che creano pod.<\/p>\n<p><\/p>\n<p><strong>Ogni pod creato viene immediatamente sostituito con un placeholder.<\/strong><\/p>\n<p><\/p>\n<blockquote><p>multi-cluster-scheduler utilizza <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/extensible-admission-controllers\/\">web-hooks per modificare gli accessi<\/a><\/noindex>, per intercettare la chiamata e creare un pod-vuoto inattivo.<\/p><\/blockquote>\n<p>Il pod originale passa attraverso un ulteriore ciclo di programmazione, dove, dopo aver interrogato tutta la federazione, viene presa una decisione sul posizionamento.<\/p>\n<p><\/p>\n<p>Infine, il pod viene fornito al cluster di destinazione.<\/p>\n<p><\/p>\n<p>Alla fine hai un pod extra, che non fa nulla, occupa solo spazio.<\/p>\n<p><\/p>\n<p>Il vantaggio \u00e8 che non hai dovuto scrivere nuove risorse per integrare le forniture.<\/p>\n<p><\/p>\n<p><strong>Ogni risorsa che crea un pod \u00e8 automaticamente pronta per l'integrazione.<\/strong><\/p>\n<p><\/p>\n<p>\u00c8 interessante, poich\u00e9 all'improvviso avete forniture distribuite in pi\u00f9 regioni senza nemmeno accorgervene. Tuttavia, \u00e8 piuttosto rischioso, perch\u00e9 tutto qui si basa su una sorta di magia.<\/p>\n<p><\/p>\n<p>Ma se il Shipper cerca principalmente di attenuare le conseguenze delle forniture, il multi-cluster-scheduler svolge compiti pi\u00f9 generali e forse \u00e8 pi\u00f9 adatto per le attivit\u00e0 batch.<\/p>\n<p><\/p>\n<p>Non ha un meccanismo avanzato per le forniture graduali.<\/p>\n<p><\/p>\n<p>Potete saperne di pi\u00f9 sul multi-cluster-scheduler sulla <noindex>pagina del repository ufficiale<\/noindex>.<\/p>\n<p><\/p>\n<p>Se volete leggere del multi-cluster-scheduler in azione, Admiralty ha un <noindex><a rel=\"nofollow\" href=\"https:\/\/admiralty.io\/blog\/running-argo-workflows-across-multiple-kubernetes-clusters\/\">interessante caso d'uso con Argo<\/a><\/noindex> \u2014 processi di lavoro, eventi, CI e CD su Kubernetes.<\/p>\n<p><\/p>\n<h3 id=\"drugie-instrumenty-i-resheniya\">Altri strumenti e soluzioni<\/h3>\n<p><\/p>\n<p>Collegare diversi cluster e gestirli \u00e8 un compito complesso, non esiste una soluzione universale.<\/p>\n<p><\/p>\n<p>Se desiderate approfondire questo argomento, ecco alcune risorse:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/submariner.io\/\">Submariner di Rancher<\/a><\/noindex> \u2014 uno strumento che collega le overlay network di diversi cluster Kubernetes.<\/li>\n<li>La rete al dettaglio Target utilizza <noindex><a rel=\"nofollow\" href=\"https:\/\/tech.target.com\/infrastructure\/2018\/06\/20\/enter-unimatrix.html\">Unimatrix in combinazione con Spinnaker per orchestrare il deployment su pi\u00f9 cluster.<\/a><\/noindex>.<\/li>\n<li>Provate a utilizzare IPV6 e <noindex><a rel=\"nofollow\" href=\"https:\/\/itnext.io\/kubernetes-multi-cluster-networking-made-simple-c8f26827813\">una rete unica in pi\u00f9 regioni.<\/a><\/noindex>.<\/li>\n<li>Si pu\u00f2 utilizzare un service mesh, ad esempio <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/setup\/kubernetes\/install\/multicluster\/\">Istio per connettere pi\u00f9 cluster.<\/a><\/noindex>.<\/li>\n<li>Cilium, un plugin per le interfacce di rete dei container, offre <noindex><a rel=\"nofollow\" href=\"https:\/\/cilium.io\/blog\/2019\/03\/12\/clustermesh\/\">una funzione di cluster mesh<\/a><\/noindex>, che consente di unire pi\u00f9 cluster.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"vot-i-vse-na-segodnya\">E questo \u00e8 tutto per oggi.<\/h3>\n<p><\/p>\n<p><em>Grazie per aver letto fino alla fine!<\/em><\/p>\n<p><\/p>\n<p>Se sapete come connettere pi\u00f9 cluster in modo pi\u00f9 efficiente, <noindex><a rel=\"nofollow\" href=\"http:\/\/hello@learnk8s.io\">raccontatecelo.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Aggiungeremo il vostro metodo ai link.<\/p>\n<p><\/p>\n<p>Un ringraziamento speciale a Chris Nesbitt-Smith (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/chrisns\">Chris Nesbitt-Smith<\/a><\/noindex>) e Vincent De Smet (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/so0k\">Vincent De Smet<\/a><\/noindex>) (ingegnere della resilienza in <noindex><a rel=\"nofollow\" href=\"https:\/\/swatmobile.io\/\">swatmobile.io<\/a><\/noindex>) per aver letto l'articolo e condiviso informazioni utili su come funziona la federazione.<\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/454056\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0435\u0440\u0438\u044e \u043a\u0440\u0430\u0442\u043a\u0438\u0445 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432 \u043f\u043e Kubernetes. \u042d\u0442\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u0441 \u0441\u0430\u043c\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u043d\u043b\u0430\u0439\u043d \u0438 \u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u0442\u0440\u0435\u043d\u0438\u043d\u0433\u0430\u0445. \u041e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u044d\u043a\u0441\u043f\u0435\u0440\u0442 \u043f\u043e Kubernetes. \u0421\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0442 \u2014 \u0414\u0430\u043d\u0438\u044d\u043b\u044c \u041f\u043e\u043b\u0435\u043d\u0447\u0438\u043a (Daniele Polencic). \u0414\u0430\u043d\u0438\u044d\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u043c \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u041f\u041e \u0432 Learnk8s. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0441\u0432\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u043e\u0441\u0442\u0435, \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26226,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-34825","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=\"\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0435\u0440\u0438\u044e.\" \/>\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\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.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\u041a\u0430\u043a \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b Kubernetes \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0435\u0440\u0438\u044e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah\" \/>\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:00:35+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:00:35+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\udd47Come connettere cluster Kubernetes in diversi data center | ProHoster","description":"Benvenuti nella serie.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","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\u041a\u0430\u043a \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b Kubernetes \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u0445 | ProHoster","og:description":"\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0435\u0440\u0438\u044e.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-soedinit-klastery-kubernetes-v-raznyh-data-tsentrah","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:00:35+00:00","article:modified_time":"2019-10-31T19:00:35+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34825","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-01-21 20:45:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:14:06","updated":"2026-01-21 20:45: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\/34825","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=34825"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/34825\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/26226"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=34825"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=34825"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=34825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}