{"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 connettere cluster Kubernetes in diversi data center","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Come connettere cluster Kubernetes in diversi data center\" src=\"\/wp-content\/uploads\/2019\/06\/fa408b406e31840857bbbe13e1d7ee5a.JPG\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<strong>Benvenuti alla serie di brevi guide su Kubernetes.<\/strong> Questa \u00e8 una rubrica regolare con le domande pi\u00f9 interessanti che riceviamo online e durante i nostri corsi di formazione. Risponde un esperto di Kubernetes.<\/p>\n<p><\/p>\n<blockquote><p>L'esperto di oggi \u00e8 Daniele Polencic (<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/danielepolencic\">Daniele Polencic<\/a><\/noindex>). Daniele \u00e8 un istruttore e sviluppatore software presso <noindex><a rel=\"nofollow\" href=\"https:\/\/learnk8s.io\/\">Learnk8s<\/a><\/noindex>.<\/p><\/blockquote>\n<p>Se vuoi ricevere una risposta alla tua domanda nel prossimo post, <noindex><a rel=\"nofollow\" href=\"http:\/\/hello@learnk8s.io\">contattaci via email<\/a><\/noindex> o su <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 breve<\/strong>: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">Kubefed v2 uscir\u00e0 presto<\/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 \u00e8 replicata e distribuita in diverse regioni, soprattutto in ambienti controllati.<\/p><\/blockquote>\n<p><strong>Se una regione non \u00e8 disponibile, il traffico viene reindirizzato a un'altra per evitare interruzioni.<\/strong><\/p>\n<p><\/p>\n<p>Con Kubernetes \u00e8 possibile 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 per una combinazione di questi elementi.<\/p>\n<p><\/p>\n<p>I tuoi cluster possono essere ospitati in diverse nuvole e nell'ambiente locale.<\/p>\n<p><\/p>\n<p><em>Ma come pianificare l'infrastruttura per una tale distribuzione geografica?<br \/>\n\u00c8 necessario creare un grande cluster su pi\u00f9 ambienti cloud attraverso una rete unificata?<br \/>\nOppure \u00e8 meglio avere 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 unificata non \u00e8 cos\u00ec semplice.<\/em><\/p>\n<p><\/p>\n<p>Immaginate di avere un guasto, perdendo la connettivit\u00e0 tra i segmenti del cluster.<\/p>\n<p><\/p>\n<p>Se avete un solo server master, met\u00e0 delle risorse non potranno ricevere nuovi comandi, perch\u00e9 non riusciranno a contattare il master.<\/p>\n<p><\/p>\n<p>E nel frattempo avete tabelle di routing obsolete (<code>kube-proxy<\/code> non possono caricare nuove) e nessun pod aggiuntivo (kubelet non pu\u00f2 richiedere aggiornamenti).<\/p>\n<p><\/p>\n<p>Cosa ancora peggio, se Kubernetes non vede un nodo, lo segna come perso e distribuisce i pod mancanti sugli altri nodi esistenti.<\/p>\n<p><\/p>\n<p><strong>In questo modo avrete il doppio dei pod.<\/strong><\/p>\n<p><\/p>\n<p>Se fate un server master per ogni regione, ci saranno problemi con l'algoritmo di consenso nel database etcd.<em>Nota dell'editore \u2014 In effetti, il database etcd non deve necessariamente trovarsi sui server master. Pu\u00f2 essere avviato su un gruppo separato di server in una stessa regione. Tuttavia, in questo modo si crea un punto di failure per il 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 aree geografiche diverse, ci vuole molto tempo per concordare il valore e scriverlo su disco.<br \/>\nQuesto influisce anche sui controller Kubernetes.<\/p>\n<p><\/p>\n<p>Il gestore dei controller ha bisogno di pi\u00f9 tempo per rilevare la modifica e scrivere la risposta nel database.<\/p>\n<p><\/p>\n<p>E dato che ci sono pi\u00f9 controller, <strong>si genera 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\">la documentazione ufficiale raccomanda di utilizzare SSD invece di normali dischi rigidi.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><strong>Attualmente non esistono buoni esempi di una grande rete per un singolo cluster.<\/strong><\/p>\n<p><\/p>\n<p>Fondamentalmente, 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 dei cluster con kubefed<\/h3>\n<p><\/p>\n<p>Risposta ufficiale da SIG-cluster \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">kubefed2, la nuova versione del client e operatore di kube federation<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>La prima volta che si \u00e8 provato a gestire una collezione di cluster come un unico oggetto \u00e8 stato tramite lo strumento kube federation.<\/p>\n<p><\/p>\n<p>L'inizio \u00e8 stato promettente, ma alla fine kube federation non \u00e8 mai diventato popolare perch\u00e9 non supportava tutte le risorse.<\/p>\n<p><\/p>\n<p>Supportava le distribuzioni unificate e i servizi, ma, ad esempio, non gli StatefulSets.<br \/>\nInoltre, la configurazione della federazione veniva fornita sotto forma di annotazioni ed era poco flessibile.<\/p>\n<p><\/p>\n<p><em>Immaginate come si possa descrivere la distribuzione delle repliche per ogni cluster nella federazione utilizzando solo annotazioni.<\/em><\/p>\n<p><\/p>\n<p><strong>\u00c8 venuto fuori un completo disastro.<\/strong><\/p>\n<p><\/p>\n<p>SIG-cluster ha svolto un gran lavoro dopo kubefed v1 e ha deciso di affrontare il problema da un'altra angolazione.<\/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 tramite Custom Resource Definitions (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'implementazione;<\/li>\n<li>sezione <code>placement<\/code>, dove definisci come la risorsa sar\u00e0 distribuita nella federazione;<\/li>\n<li>sezione <code>override<\/code>, dove \u00e8 possibile sovrascrivere il peso e i parametri di placement per una risorsa specifica.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ecco un esempio di implementazione combinata 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, l'implementazione \u00e8 distribuita su due cluster: <code>cluster1<\/code> e <code>cluster2<\/code>.<\/p>\n<p><\/p>\n<p>Il primo cluster fornisce tre repliche, mentre nel secondo \u00e8 impostato il valore 5.<\/p>\n<p><\/p>\n<p>Se hai bisogno di maggiore controllo sul numero di repliche, kubefed2 offre 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 completamente pronta, e sono in corso lavori attivi nel repository ufficiale del progetto.<\/p>\n<p><\/p>\n<p><strong>Seguite kubefed2, ma ricordate che per l'ambiente di produzione non \u00e8 ancora adatto.<\/strong><\/p>\n<p><\/p>\n<p>Scoprite di pi\u00f9 su kubefed2 in <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2018\/12\/12\/kubernetes-federation-evolution\/\">articolo ufficiale su kubefed2<\/a><\/noindex> nel blog di Kubernetes e in <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/federation-v2\">nel repository ufficiale del progetto kubefed<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"variant-2-obedinenie-klasterov-v-stile-bookingcom\">Opzione 2: unione dei 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 creato Shipper \u2014 un operatore per il deploy 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> \u00e8 in qualche modo simile a kubefed2.<\/p>\n<p><\/p>\n<p>Entrambi gli strumenti permettono di configurare la strategia di distribuzione su pi\u00f9 cluster (quali cluster vengono utilizzati 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 \u00e8 possibile definire una serie di passaggi che descrivono la suddivisione delle repliche tra il deploy precedente e quello attuale e il volume del traffico in entrata.<\/p>\n<p><\/p>\n<p>Quando invii una risorsa al cluster, il controller Shipper distribuisce progressivamente questa modifica a tutti i cluster aggregati.<\/p>\n<p><\/p>\n<p><em>Inoltre, Shipper \u00e8 molto limitato.<\/em><\/p>\n<p><\/p>\n<p>Ad esempio, <strong>accetta grafici Helm come input<\/strong> e non supporta risorse vanilla.<br \/>\nIn generale, Shipper funziona nel seguente modo.<\/p>\n<p><\/p>\n<p>Invece di fornire normalmente, \u00e8 necessario creare una risorsa dell'applicazione che includa il grafico Helm:<\/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 la sua stretta integrazione con Helm \u00e8 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 esplorare il codice, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bookingcom\/shipper\">dirigiti al repository ufficiale del progetto<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"variant-3-magicheskoe-obedinenie-klasterov\">Opzione 3: &#171;magico&#187; unione di cluster<\/h3>\n<p><\/p>\n<p>Kubefed v2 e Shipper lavorano con la federazione dei cluster, fornendo ai cluster nuove risorse tramite definizioni di risorse personalizzate.<\/p>\n<p><\/p>\n<p><em>Ma se non vuoi riscrivere tutte le deployment, StatefulSet, DaemonSet, ecc. per unire?<\/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 pianificazione nei cluster.<\/p>\n<p><\/p>\n<p>Ma invece di inventare un nuovo modo di interagire con il cluster e incapsulare 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 pod vuoto.<\/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-hook per modificare l'accesso<\/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 pianificazione, dove dopo aver interrogato l'intera federazione si prende una decisione sulla ubicazione.<\/p>\n<p><\/p>\n<p>Infine, il pod viene consegnato al cluster di destinazione.<\/p>\n<p><\/p>\n<p>Risultato: hai un pod extra che non fa nulla, semplicemente occupa spazio.<\/p>\n<p><\/p>\n<p>Il vantaggio \u00e8 che non \u00e8 stato necessario scrivere nuove risorse per unire le forniture.<\/p>\n<p><\/p>\n<p><strong>Ogni risorsa che crea un pod \u00e8 automaticamente pronta per l'unione.<\/strong><\/p>\n<p><\/p>\n<p>\u00c8 interessante, poich\u00e9 all'improvviso hai forniture distribuite in diverse regioni senza nemmeno accorgertene. Tuttavia, \u00e8 piuttosto rischioso, poich\u00e9 tutto si basa su magia.<\/p>\n<p><\/p>\n<p>Ma se Shipper cerca soprattutto di mitigare le conseguenze delle forniture, il multi-cluster-scheduler svolge compiti pi\u00f9 generali e potrebbe essere pi\u00f9 adatto per i job batch.<\/p>\n<p><\/p>\n<p>Non dispone di meccanismi avanzati per le forniture graduali.<\/p>\n<p><\/p>\n<p>Puoi saperne di pi\u00f9 sul multi-cluster-scheduler nella <noindex>pagina del repository ufficiale.<\/noindex>.<\/p>\n<p><\/p>\n<p>Se desideri 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 flussi di lavoro, eventi, CI e CD in Kubernetes.<\/p>\n<p><\/p>\n<h3 id=\"drugie-instrumenty-i-resheniya\">Altri strumenti e soluzioni<\/h3>\n<p><\/p>\n<p>Collegare e gestire pi\u00f9 cluster \u00e8 una sfida complessa e non esiste una soluzione universale.<\/p>\n<p><\/p>\n<p>Se desideri approfondire l'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 overlay network tra diversi cluster Kubernetes.<\/li>\n<li>La rete retail Target utilizza <noindex><a rel=\"nofollow\" href=\"https:\/\/tech.target.com\/infrastructure\/2018\/06\/20\/enter-unimatrix.html\">Unimatrix con Spinnaker per orchestrare il deploy su pi\u00f9 cluster<\/a><\/noindex>.<\/li>\n<li>Prova a utilizzare IPV6 e <noindex><a rel=\"nofollow\" href=\"https:\/\/itnext.io\/kubernetes-multi-cluster-networking-made-simple-c8f26827813\">una rete unificata in pi\u00f9 regioni<\/a><\/noindex>.<\/li>\n<li>Puoi usare un service mesh, come ad esempio <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/docs\/setup\/kubernetes\/install\/multicluster\/\">Istio per collegare pi\u00f9 cluster<\/a><\/noindex>.<\/li>\n<li>Cilium, un plugin per l'interfaccia di rete dei container, offre <noindex><a rel=\"nofollow\" href=\"https:\/\/cilium.io\/blog\/2019\/03\/12\/clustermesh\/\">funzionalit\u00e0 di cluster mesh<\/a><\/noindex>, che permette di unire pi\u00f9 cluster<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"vot-i-vse-na-segodnya\">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 conosci un modo pi\u00f9 efficace per collegare pi\u00f9 cluster, <noindex><a rel=\"nofollow\" href=\"http:\/\/hello@learnk8s.io\">facci sapere<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Aggiungeremo il tuo 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 di affidabilit\u00e0 presso <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 4.9.10 - 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 \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 \u043d\u0430\u043c\u0438\" \/>\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) 4.9.10\" \/>\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 \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 \u043d\u0430\u043c\u0438\" \/>\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 collegare i cluster Kubernetes in diversi data center | ProHoster","description":"Benvenuto nella serie di brevi guide su Kubernetes. Questa \u00e8 una rubrica regolare con le domande pi\u00f9 interessanti che riceviamo online e nei nostri corsi. Risponde un esperto di Kubernetes. L'esperto di oggi \u00e8 Daniele Polencic. Daniele \u00e8 istruttore e sviluppatore software presso Learnk8s. Se desideri una risposta alla tua domanda nel prossimo post, contattaci.","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 \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 \u043d\u0430\u043c\u0438","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"},"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}]}}